mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 02:26:23 +00:00
Fix up setting the EID on BSD based systems.
(closes issue #11646) Reported by: caio1982 Patches: dundi_osx_eid6.diff.txt uploaded by caio1982 (license 22) dundi_osx_eid6-1.4.diff uploaded by caio1982 (license 22) Tested by: caio1982, mvanbaak git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98390 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -415,7 +415,7 @@ static void reset_global_eid(void)
|
|||||||
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth%d", x);
|
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth%d", x);
|
||||||
if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
|
if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
|
||||||
memcpy(&global_eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(global_eid));
|
memcpy(&global_eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(global_eid));
|
||||||
ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n", dundi_eid_to_str(eid_str, sizeof(eid_str), &global_eid), ifr.ifr_name);
|
ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s' using 'siocgifhwaddr'\n", dundi_eid_to_str(eid_str, sizeof(eid_str), &global_eid), ifr.ifr_name);
|
||||||
close(s);
|
close(s);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -430,12 +430,10 @@ static void reset_global_eid(void)
|
|||||||
if (getifaddrs(&ifap) == 0) {
|
if (getifaddrs(&ifap) == 0) {
|
||||||
struct ifaddrs *p;
|
struct ifaddrs *p;
|
||||||
for (p = ifap; p; p = p->ifa_next) {
|
for (p = ifap; p; p = p->ifa_next) {
|
||||||
if (p->ifa_addr->sa_family == AF_LINK) {
|
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;
|
struct sockaddr_dl* sdp = (struct sockaddr_dl*) p->ifa_addr;
|
||||||
memcpy(
|
memcpy(&(global_eid.eid), sdp->sdl_data + sdp->sdl_nlen, 6);
|
||||||
&(global_eid.eid),
|
ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s' using 'getifaddrs'\n", dundi_eid_to_str(eid_str, sizeof(eid_str), &global_eid), p->ifa_name);
|
||||||
sdp->sdl_data + sdp->sdl_nlen, 6);
|
|
||||||
ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n", dundi_eid_to_str(eid_str, sizeof(eid_str), &global_eid), ifap->ifa_name);
|
|
||||||
freeifaddrs(ifap);
|
freeifaddrs(ifap);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -444,7 +442,7 @@ static void reset_global_eid(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
ast_log(LOG_NOTICE, "No ethernet interface found for seeding global EID You will have to set it manually.\n");
|
ast_log(LOG_NOTICE, "No ethernet interface found for seeding global EID. You will have to set it manually.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_trans_id(void)
|
static int get_trans_id(void)
|
||||||
|
Reference in New Issue
Block a user