[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1275022651.2446.35.camel@edumazet-laptop>
Date: Fri, 28 May 2010 06:57:31 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: Jeffrey Merkey <jeffmerkey@...il.com>
Cc: linux-kernel <linux-kernel@...r.kernel.org>
Subject: Re: Question about SIOCGIFCONF
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists