[asterisk-commits] russell: trunk r353177 - in /trunk: ./ main/netsock.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Jan 28 20:45:31 CST 2012
Author: russell
Date: Sat Jan 28 20:45:28 2012
New Revision: 353177
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=353177
Log:
Find even more network interfaces.
The previous change made the code look for emN and pciN in addition to what
it did originally, which was search for ethN. However, it needed to be looking
for pciN#N, so that's what it does now.
This also moves the memset() to be before every ioctl().
........
Merged revisions 353175 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 353176 from http://svn.asterisk.org/svn/asterisk/branches/10
Modified:
trunk/ (props changed)
trunk/main/netsock.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.
Modified: trunk/main/netsock.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/netsock.c?view=diff&rev=353177&r1=353176&r2=353177
==============================================================================
--- trunk/main/netsock.c (original)
+++ trunk/main/netsock.c Sat Jan 28 20:45:28 2012
@@ -240,17 +240,17 @@
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 < 10; x++) {
- static const char *prefixes[] = { "eth", "em", "pci" };
+ for (x = 0; x < MAXIF; x++) {
+ static const char *prefixes[] = { "eth", "em" };
unsigned int i;
- memset(&ifr, 0, sizeof(ifr));
-
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;
@@ -258,7 +258,17 @@
}
if (i == ARRAY_LEN(prefixes)) {
- continue;
+ /* Try pciX#[1..N] */
+ for (i = 0; i < MAXIF; i++) {
+ memset(&ifr, 0, sizeof(ifr));
+ snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "pci%u#%u", x, i);
+ if (!ioctl(s, SIOCGIFHWADDR, &ifr)) {
+ break;
+ }
+ }
+ if (i == MAXIF) {
+ continue;
+ }
}
memcpy(eid, ((unsigned char *)&ifr.ifr_hwaddr) + 2, sizeof(*eid));
More information about the asterisk-commits
mailing list