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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353077 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2012-01-28 04:25:25 +00:00
parent cda638dcfc
commit 45bf0ea5b0

View File

@@ -243,10 +243,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);