Messages in this thread | | | Date | Fri, 28 May 2010 12:31:00 -0600 | Subject | Re: Question about SIOCGIFCONF | From | Jeffrey Merkey <> |
| |
Actually, I verified last night it only returns interfaces which have been bound to an IP address. It does not return any interfaces which are active but for which an IP address has not been bound. So what I said is accurate. it's fucking busted.
/proc/net/dev returns ALL interfaces. this ioctl does not.
Jeff
On Thu, May 27, 2010 at 10:57 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > Le jeudi 27 mai 2010 à 21:02 -0600, Jeffrey Merkey a écrit : >> Why is SIOGICONF only instrumented to return a single interface lo for >> example. I noticed that ifconfig always uses /proc/net/dev but the >> older SIOCGIFCONF ioctl seems to be busted. Anyone have an >> explanation or is this just how the shit is these days or is the >> fucking thing broken (seems to be). ? > > Shit comes from you eyes maybe ? > > Correction : Shit comes from your eyes, definitely. > > Proof : > > # strace -o /tmp/STRACE ifconfig -a > # grep SIOCGIFCONF /tmp/STRACE > ioctl(4, SIOCGIFCONF, {120, {{"lo", {AF_INET, inet_addr("127.0.0.1")}}, > {"wlan0", {AF_INET, inet_addr("192.168.1.21")}}, {"ppp0", {AF_INET, > inet_addr("10.150.51.210")}}}}) = 0 > > > Part of ifconfig : > > ifc.ifc_buf = NULL; > for (;;) { > ifc.ifc_len = sizeof(struct ifreq) * numreqs; > ifc.ifc_buf = xrealloc(ifc.ifc_buf, ifc.ifc_len); > > if (ioctl(skfd, SIOCGIFCONF, &ifc) < 0) { > perror("SIOCGIFCONF"); > goto out; > } > if (ifc.ifc_len == sizeof(struct ifreq) * numreqs) { > /* assume it overflowed and try again */ > numreqs += 10; > continue; > } > break; > } > > maybe numreqs should be firt initialized to 64, then doubled each > round... > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |