[asterisk-commits] russell: branch russell/ais r78348 - /team/russell/ais/main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Aug 7 11:17:44 CDT 2007
Author: russell
Date: Tue Aug 7 11:17:43 2007
New Revision: 78348
URL: http://svn.digium.com/view/asterisk?view=rev&rev=78348
Log:
Make ast_set_eid() actually work and don't erroneously print the error message when it really did work
Modified:
team/russell/ais/main/netsock.c
team/russell/ais/main/utils.c
Modified: team/russell/ais/main/netsock.c
URL: http://svn.digium.com/view/asterisk/team/russell/ais/main/netsock.c?view=diff&rev=78348&r1=78347&r2=78348
==============================================================================
--- team/russell/ais/main/netsock.c (original)
+++ team/russell/ais/main/netsock.c Tue Aug 7 11:17:43 2007
@@ -45,6 +45,15 @@
#include <netinet/ip.h>
#include <sys/ioctl.h>
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(SOLARIS) || defined(__Darwin__)
+#include <sys/types.h>
+#endif
+
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__Darwin__)
+#include <net/if_dl.h>
+#include <ifaddrs.h>
+#endif
+
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)
#include <fcntl.h>
#include <net/route.h>
@@ -236,3 +245,74 @@
{
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:", eid->eid[x]);
+ s += 3;
+ }
+ sprintf(s, "%02x", eid->eid[5]);
+ }
+ return os;
+}
+
+void ast_set_eid(struct ast_eid *eid)
+{
+ int success = 0;
+#if defined(SIOCGIFHWADDR)
+ int s, x = 0;
+ char eid_str[20];
+ struct ifreq ifr;
+
+ s = socket(AF_INET, SOCK_STREAM, 0);
+ if (s < 0)
+ return;
+ for (x = 0; x < 10; x++) {
+ memset(&ifr, 0, sizeof(ifr));
+ snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth%d", x);
+ if (ioctl(s, SIOCGIFHWADDR, &ifr))
+ continue;
+ memcpy(eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(*eid));
+ if (option_debug) {
+ ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n",
+ ast_eid_to_str(eid_str, sizeof(eid_str), eid), ifr.ifr_name);
+ }
+ success = 1;
+ break;
+ }
+ 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) {
+ struct sockaddr_dl* sdp = (struct sockaddr_dl*) p->ifa_addr;
+ memcpy(
+ &(eid->eid),
+ sdp->sdl_data + sdp->sdl_nlen, 6);
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n", ast_eid_to_str(eid_str, sizeof(eid_str), eid), ifap->ifa_name);
+ freeifaddrs(ifap);
+ return;
+ }
+ }
+ freeifaddrs(ifap);
+ }
+#endif
+#endif
+ if (!success)
+ ast_log(LOG_ERROR, "No ethernet interface found for seeding default EID. You will have to set it manually.\n");
+}
+
+
Modified: team/russell/ais/main/utils.c
URL: http://svn.digium.com/view/asterisk/team/russell/ais/main/utils.c?view=diff&rev=78348&r1=78347&r2=78348
==============================================================================
--- team/russell/ais/main/utils.c (original)
+++ team/russell/ais/main/utils.c Tue Aug 7 11:17:43 2007
@@ -1377,72 +1377,6 @@
return 0;
}
-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:", eid->eid[x]);
- s += 3;
- }
- sprintf(s, "%02x", eid->eid[5]);
- }
- return os;
-}
-
-void ast_set_eid(struct ast_eid *eid)
-{
-#if defined(SIOCGIFHWADDR)
- int s, x = 0;
- char eid_str[20];
- struct ifreq ifr;
-
- s = socket(AF_INET, SOCK_STREAM, 0);
- if (s < 0)
- return;
- for (x = 0; x < 10; x++) {
- memset(&ifr, 0, sizeof(ifr));
- snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth%d", x);
- if (ioctl(s, SIOCGIFHWADDR, &ifr))
- continue;
- memcpy(&global_eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(*eid));
- if (option_debug) {
- ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n",
- ast_eid_to_str(eid_str, sizeof(eid_str), eid), ifr.ifr_name);
- }
- break;
- }
- 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) {
- struct sockaddr_dl* sdp = (struct sockaddr_dl*) p->ifa_addr;
- memcpy(
- &(eid->eid),
- sdp->sdl_data + sdp->sdl_nlen, 6);
- if (option_debug)
- ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n", ast_eid_to_str(eid_str, sizeof(eid_str), eid), ifap->ifa_name);
- freeifaddrs(ifap);
- return;
- }
- }
- freeifaddrs(ifap);
- }
-#endif
-#endif
- ast_log(LOG_ERROR, "No ethernet interface found for seeding default EID. You will have to set it manually.\n");
-}
-
int ast_utils_init(void)
{
#ifdef HAVE_DEV_URANDOM
More information about the asterisk-commits
mailing list