Hello, Giampaolo Gallo <g...@iws.it> writes:
> You did thanks.. > > I flushed the stdout and the result was the same, so, IMHO it isn't a > buffering problem. > The command "ifconfig -a" sould show all the interfaces installed on my > machine. It shows only the loopback (lo) interface instead. The program > parses > the full content of /proc/net/dev but it shows only the first interface it > finds, i.e. "lo". > I tried also by changing the backend (system/linux.* -> system/generic.*) > without success. > My machine is a Linux x86_64 2.6.34.1 with glibc 2.11.2. If you want more > information please ask and I will be happy to answer. can you please try the attached patch? Does it fix the problem for you? Cheers, Giuseppe >From 95ac7d15532a2a42db9048d4cc7b8ca4f7b2c3bd Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano <gscriv...@gnu.org> Date: Fri, 30 Jul 2010 01:53:57 +0200 Subject: [PATCH] * ifconfig/if_index.c (if_nameindex): Remove local variable `len'. Remove code that compute the sizeof of the struct `ifreq'. --- ChangeLog | 5 +++++ ifconfig/if_index.c | 12 +----------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9c5795e..052daee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-07-30 Giuseppe Scrivano <gscriv...@gnu.org> + + * ifconfig/if_index.c (if_nameindex): Remove local variable `len'. + Remove code that compute the sizeof of the struct `ifreq'. + 2010-07-10 Alfred M. Szmidt <a...@gnu.org> * ifconfig/options.c (parse_opt_set_default_format): Abort if no diff --git a/ifconfig/if_index.c b/ifconfig/if_index.c index 1080aca..3062bf7 100644 --- a/ifconfig/if_index.c +++ b/ifconfig/if_index.c @@ -132,19 +132,9 @@ if_nameindex (void) end = (struct ifreq *) ((caddr_t) ifr + ifc.ifc_len); while (ifr < end) { - int len; -# ifdef HAVE_STRUCT_SOCKADDR_SA_LEN -# undef MAX -# define MAX(a,b) (((a) > (b)) ? (a) : (b)) - len = MAX (sizeof (struct sockaddr), ifr->ifr_addr.sa_len); -# else - len = sizeof (struct sockaddr); -# endif - cur = ifr; - /* Step along the array by the size of the current structure */ - ifr = (struct ifreq *) ((caddr_t) ifr + len + IFNAMSIZ); + ++ifr; /* We ignore the other families .. OK ? */ if (cur->ifr_addr.sa_family != AF_INET) -- 1.7.1