summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2014-06-24 02:50:15 +0000
committerCorey Farrell <git@cfware.com>2014-06-24 02:50:15 +0000
commitdb6a8a63475d74d384425b7ac065600f7273a656 (patch)
tree111ef5f771719fc1db3da6a440bb9691f38e14ef
parentd5ca5b7f8fc575b4f6f89b76fa8b6144093e20b3 (diff)
Move eid functions to utils.c, mark netsock.h deprecated
Move eid functions from netsock.c to utils.c. These functions were already published by utils.h. Flag netsock.h as deprecated and switch res_pjsip_session.h to use netsock2.h. The only code that still uses netsock.h is chan_iax2. ASTERISK-23920 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3661/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@417167 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--include/asterisk/netsock.h2
-rw-r--r--include/asterisk/res_pjsip_session.h2
-rw-r--r--main/netsock.c103
-rw-r--r--main/utils.c107
4 files changed, 110 insertions, 104 deletions
diff --git a/include/asterisk/netsock.h b/include/asterisk/netsock.h
index f85bd381a..bd80072f5 100644
--- a/include/asterisk/netsock.h
+++ b/include/asterisk/netsock.h
@@ -19,6 +19,8 @@
/*! \file
* \brief Network socket handling
+ *
+ * \deprecated Use netsock2.h instead
*/
#ifndef _ASTERISK_NETSOCK_H
diff --git a/include/asterisk/res_pjsip_session.h b/include/asterisk/res_pjsip_session.h
index 5a07137dc..01c63db66 100644
--- a/include/asterisk/res_pjsip_session.h
+++ b/include/asterisk/res_pjsip_session.h
@@ -25,7 +25,7 @@
/* Needed for AST_MAX_EXTENSION constant */
#include "asterisk/channel.h"
/* Needed for ast_sockaddr struct */
-#include "asterisk/netsock.h"
+#include "asterisk/netsock2.h"
/* Needed for ast_sdp_srtp struct */
#include "asterisk/sdp_srtp.h"
diff --git a/main/netsock.c b/main/netsock.c
index cf4c792af..c11f14a89 100644
--- a/main/netsock.c
+++ b/main/netsock.c
@@ -201,106 +201,3 @@ void ast_netsock_unref(struct ast_netsock *ns)
{
ASTOBJ_UNREF(ns, ast_netsock_destroy);
}
-
-char *ast_eid_to_str(char *s, int maxlen, struct ast_eid *eid)
-{
- int x;
- char *os = s;
- if (maxlen < 18) {
- if (s && (maxlen > 0))
- *s = '\0';
- } else {
- for (x = 0; x < 5; x++) {
- sprintf(s, "%02x:", (unsigned)eid->eid[x]);
- s += 3;
- }
- sprintf(s, "%02x", (unsigned)eid->eid[5]);
- }
- return os;
-}
-
-void ast_set_default_eid(struct ast_eid *eid)
-{
-#if defined(SIOCGIFHWADDR) && defined(HAVE_STRUCT_IFREQ_IFR_IFRU_IFRU_HWADDR)
- int s, x = 0;
- char eid_str[20];
- struct ifreq ifr;
- static const unsigned int MAXIF = 10;
-
- s = socket(AF_INET, SOCK_STREAM, 0);
- if (s < 0)
- return;
- for (x = 0; x < MAXIF; x++) {
- static const char *prefixes[] = { "eth", "em" };
- unsigned int i;
-
- for (i = 0; i < ARRAY_LEN(prefixes); i++) {
- memset(&ifr, 0, sizeof(ifr));
- snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s%d", prefixes[i], x);
- if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
- break;
- }
- }
-
- if (i == ARRAY_LEN(prefixes)) {
- /* Try pciX#[1..N] */
- for (i = 0; i < MAXIF; i++) {
- memset(&ifr, 0, sizeof(ifr));
- snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "pci%d#%u", x, i);
- if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
- break;
- }
- }
- if (i == MAXIF) {
- continue;
- }
- }
-
- memcpy(eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(*eid));
- ast_debug(1, "Seeding global EID '%s' from '%s' using 'siocgifhwaddr'\n", ast_eid_to_str(eid_str, sizeof(eid_str), eid), ifr.ifr_name);
- close(s);
- return;
- }
- close(s);
-#else
-#if defined(ifa_broadaddr) && !defined(SOLARIS)
- char eid_str[20];
- struct ifaddrs *ifap;
-
- if (getifaddrs(&ifap) == 0) {
- struct ifaddrs *p;
- for (p = ifap; p; p = p->ifa_next) {
- if ((p->ifa_addr->sa_family == AF_LINK) && !(p->ifa_flags & IFF_LOOPBACK) && (p->ifa_flags & IFF_RUNNING)) {
- struct sockaddr_dl* sdp = (struct sockaddr_dl*) p->ifa_addr;
- memcpy(&(eid->eid), sdp->sdl_data + sdp->sdl_nlen, 6);
- ast_debug(1, "Seeding global EID '%s' from '%s' using 'getifaddrs'\n", ast_eid_to_str(eid_str, sizeof(eid_str), eid), p->ifa_name);
- freeifaddrs(ifap);
- return;
- }
- }
- freeifaddrs(ifap);
- }
-#endif
-#endif
- ast_debug(1, "No ethernet interface found for seeding global EID. You will have to set it manually.\n");
-}
-
-int ast_str_to_eid(struct ast_eid *eid, const char *s)
-{
- unsigned int eid_int[6];
- int x;
-
- if (sscanf(s, "%2x:%2x:%2x:%2x:%2x:%2x", &eid_int[0], &eid_int[1], &eid_int[2],
- &eid_int[3], &eid_int[4], &eid_int[5]) != 6)
- return -1;
-
- for (x = 0; x < 6; x++)
- eid->eid[x] = eid_int[x];
-
- return 0;
-}
-
-int ast_eid_cmp(const struct ast_eid *eid1, const struct ast_eid *eid2)
-{
- return memcmp(eid1, eid2, sizeof(*eid1));
-}
diff --git a/main/utils.c b/main/utils.c
index bb8559d8c..467f9f13c 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -2548,3 +2548,110 @@ void __ast_assert_failed(int condition, const char *condition_str, const char *f
ast_do_crash();
}
#endif /* defined(AST_DEVMODE) */
+
+char *ast_eid_to_str(char *s, int maxlen, struct ast_eid *eid)
+{
+ int x;
+ char *os = s;
+ if (maxlen < 18) {
+ if (s && (maxlen > 0)) {
+ *s = '\0';
+ }
+ } else {
+ for (x = 0; x < 5; x++) {
+ sprintf(s, "%02x:", (unsigned)eid->eid[x]);
+ s += 3;
+ }
+ sprintf(s, "%02x", (unsigned)eid->eid[5]);
+ }
+ return os;
+}
+
+void ast_set_default_eid(struct ast_eid *eid)
+{
+#if defined(SIOCGIFHWADDR) && defined(HAVE_STRUCT_IFREQ_IFR_IFRU_IFRU_HWADDR)
+ int s, x = 0;
+ char eid_str[20];
+ struct ifreq ifr;
+ static const unsigned int MAXIF = 10;
+
+ s = socket(AF_INET, SOCK_STREAM, 0);
+ if (s < 0) {
+ return;
+ }
+ for (x = 0; x < MAXIF; x++) {
+ static const char *prefixes[] = { "eth", "em" };
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_LEN(prefixes); i++) {
+ memset(&ifr, 0, sizeof(ifr));
+ snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s%d", prefixes[i], x);
+ if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
+ break;
+ }
+ }
+
+ if (i == ARRAY_LEN(prefixes)) {
+ /* Try pciX#[1..N] */
+ for (i = 0; i < MAXIF; i++) {
+ memset(&ifr, 0, sizeof(ifr));
+ snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "pci%d#%u", x, i);
+ if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
+ break;
+ }
+ }
+ if (i == MAXIF) {
+ continue;
+ }
+ }
+
+ memcpy(eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(*eid));
+ ast_debug(1, "Seeding global EID '%s' from '%s' using 'siocgifhwaddr'\n", ast_eid_to_str(eid_str, sizeof(eid_str), eid), ifr.ifr_name);
+ close(s);
+ return;
+ }
+ close(s);
+#else
+#if defined(ifa_broadaddr) && !defined(SOLARIS)
+ char eid_str[20];
+ struct ifaddrs *ifap;
+
+ if (getifaddrs(&ifap) == 0) {
+ struct ifaddrs *p;
+ for (p = ifap; p; p = p->ifa_next) {
+ if ((p->ifa_addr->sa_family == AF_LINK) && !(p->ifa_flags & IFF_LOOPBACK) && (p->ifa_flags & IFF_RUNNING)) {
+ struct sockaddr_dl* sdp = (struct sockaddr_dl*) p->ifa_addr;
+ memcpy(&(eid->eid), sdp->sdl_data + sdp->sdl_nlen, 6);
+ ast_debug(1, "Seeding global EID '%s' from '%s' using 'getifaddrs'\n", ast_eid_to_str(eid_str, sizeof(eid_str), eid), p->ifa_name);
+ freeifaddrs(ifap);
+ return;
+ }
+ }
+ freeifaddrs(ifap);
+ }
+#endif
+#endif
+ ast_debug(1, "No ethernet interface found for seeding global EID. You will have to set it manually.\n");
+}
+
+int ast_str_to_eid(struct ast_eid *eid, const char *s)
+{
+ unsigned int eid_int[6];
+ int x;
+
+ if (sscanf(s, "%2x:%2x:%2x:%2x:%2x:%2x", &eid_int[0], &eid_int[1], &eid_int[2],
+ &eid_int[3], &eid_int[4], &eid_int[5]) != 6) {
+ return -1;
+ }
+
+ for (x = 0; x < 6; x++) {
+ eid->eid[x] = eid_int[x];
+ }
+
+ return 0;
+}
+
+int ast_eid_cmp(const struct ast_eid *eid1, const struct ast_eid *eid2)
+{
+ return memcmp(eid1, eid2, sizeof(*eid1));
+}