Date: Thu, 29 Dec 1994 19:24:16 -0500 (EST) From: Wankle Rotary Engine <wpaul@skynet.ctr.columbia.edu> To: freebsd-hackers@freebsd.org Subject: Re: ifconfig -a Message-ID: <199412300024.TAA03220@skynet.ctr.columbia.edu>
next in thread | raw e-mail | index | archive | help
>>> A friend just pointed out Sun's useful -a flag to ifconfig. Anyone
>>> game to add this to FreeBSD? Any objections?
>>
>>No objections, i am missing it also a long time now :-). Only
>>interesting question, how close to which ifconfig version from
>>SUN should it be ? :-). Some give you back the ethernet adress
>>on the interface and some don't. I have not looked how easy it
>>
>> ATS ( ats@first.gmd.de or ats@cs.tu-berlin.de )
> Doesn't the SunOS version only show the ethernet address if run by
>root?
> Terry Lee
> terry@uivlsi.csl.uiuc.edu
You got it. Not sure why that's so, but it is. The same will be true
of FreeBSD's ifconfig once I get done smacking it around too, since the
only way I've found to read the hardware address for an interface involves
kvm_read() and friends (at this very moment I'm furiously cribbing away
from netstat ;). I already have the -a option working though:
[/usr/include/net]:marple{14}% ifconfig -a
ed1: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 128.59.64.56 netmask 0xffffff00 broadcast 128.59.64.255
lp0: flags=810<POINTOPOINT,SIMPLEX> mtu 1500
lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 65532
inet 127.0.0.1 netmask 0xff000000
ppp0: flags=10<POINTOPOINT> mtu 1500
ppp1: flags=10<POINTOPOINT> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
sl1: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
[/usr/include/net]:marple{15}%
As soon as I get the ethernet address stuff done I'll be sending along a
complete set of patches to this list. Well, make that an almost complete
set: I don't do man pages. :)
There's one strange thing I discovered while implimenting the -a option:
I used SIOCGIFCONF to figure out what interfaces are present in the system,
but for some reason the active interfaces turn up twice. That is, without
a little bit of extra fiddling, ed0 and lo0 (from the output above) would
occur twice. With SIOCGIFCONF you get back an array with a member for each
configured interface, but there seem to be two members for ed0 and lo0.
If, for example, I assign a dummy address to sl0, then sl0 pops up twice
as well. I found a quick though inelegant test to jump over the extra
entries, but I'm confused as to why SIOCGIFCONF behaves this way.
Oh, I have a question for those who might know: the data returned by
ioctl(sock,SIOCGIFCONF,&ifconf) needs to be placed in a buffer, and you
have to allocate enough space to hold the data for all interfaces. I
arbitrarily assumed that there wouldn't be more than 20 interfaces, thus
the buffer space allocated is (20 * struct ifreq). That's a silly thing
to assume though... anybody know what the official maximum number of
interfaces is? Is there a MAXINTERFACES defined somewhere?
-Bill
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Bill Paul System Manager
wpaul@ctr.columbia.edu Center for Telecommunications Research
(212) 854-6020 Columbia University, New York City
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Møøse Illuminati: ignore it and be confused, or join it and be confusing!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199412300024.TAA03220>
