From 2fa0175cda22f5da459f80cfd513c8155c98a74a Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Sat, 28 Jan 2012 04:27:55 +0000 Subject: [PATCH] Update ast_set_default_eid() to find more network interfaces. As of Fedora 15, ethN is not the name of ethernet interfaces. The names are emN or pciN. Update some code that searched for interfaces named ethN to look for the new names, as well. For more information about why this change was made, see this page: http://domsch.com/blog/?p=455 ........ Merged revisions 353077 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@353078 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/netsock.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/main/netsock.c b/main/netsock.c index 5cab1c19a4..2effc4a106 100644 --- a/main/netsock.c +++ b/main/netsock.c @@ -245,10 +245,22 @@ void ast_set_default_eid(struct ast_eid *eid) if (s < 0) return; for (x = 0; x < 10; x++) { + static const char *prefixes[] = { "eth", "em", "pci" }; + unsigned int i; + memset(&ifr, 0, sizeof(ifr)); - snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth%d", x); - if (ioctl(s, SIOCGIFHWADDR, &ifr)) + + for (i = 0; i < ARRAY_LEN(prefixes); i++) { + snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s%d", prefixes[i], x); + if (!ioctl(s, SIOCGIFHWADDR, &ifr)) { + break; + } + } + + if (i == ARRAY_LEN(prefixes)) { 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); -- 2.47.2