When should "netstat -i" truncate output?

David Wolfskill david at catwhisker.org
Tue Aug 10 23:09:48 UTC 2010


src/usr.bin/netstat/if.c was modified back in late November 1995, to
expand the "Network" field from 11 characters to 13:

| Revision 12459 - (view) (annotate) - [select for diffs]
| Modified Wed Nov 22 22:21:04 1995 UTC (14 years, 8 months ago) by se
| File length: 11619 byte(s)
| Diff to previous 11819
| 
| Increase width of Network column from 11 to 13 for the AF_INET case.
| This seems to have been missed, when the recent IPX changes went in ...

While I appreciate the thought & effort, it should be readily apparent
that even 13 characters is insufficient to represent even an IPv4
address in dotted quad format (in the general case), let alone a network
specification in CIDR format:

	192.168.127.126/29

is 15 characters for the IPv4 address part itself, plus another 3 for
the mask, totalling 18.

I just checked NetBSD sources
(<http://cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/netstat/if.c?rev=1.69&content-type=text/x-cvsweb-markup&only_with_tag=MAIN>),
and it appears that they (also) use "%-13.13s" as the format
specification for Network.

(OpenBSD appears to use "%-11.11s", thus limiting the output to 11
characters.)

OpenSolaris, per
<http://cr.opensolaris.org/~meem/clearview-ipmp-cr2/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c.html>
apparently uses "%-14s" as the format specification -- which avoids the
(potentail) truncation issue entirely.


I realize that the information in question is avaiklable in other ways,
but limiting the size of the "Network" field of netstat(1) to 13
characters yields some rather ... odd ... results -- e.g.:

d254(7.3-S)[23] netstat -nif inet
Name    Mtu Network       Address              Ipkts Ierrs    Opkts Oerrs  Coll
xl0    1500 192.168.7.0/2 192.168.7.254        95210     -    90017     -     -
lo0   16384 127.0.0.0/8   127.0.0.1              195     -      195     -     -
d254(7.3-S)[24] 

As evidence that the xl0 NIX is, in fact, not on a /2, I submit:

d254(7.3-S)[24] netstat -nrf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.7.1        UGS         0    61386    xl0
127.0.0.1          127.0.0.1          UH          0      195    lo0
192.168.7.0/24     link#1             UC          0        0    xl0
192.168.7.1        00:1a:a0:62:96:09  UHLW        2      286    xl0    431
d254(7.3-S)[25] ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9<RXCSUM,VLAN_MTU>
        ether 00:08:74:e9:c9:41
        inet 192.168.7.254 netmask 0xffffff00 broadcast 192.168.7.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
d254(7.3-S)[26] 

I suppose the thing that's bugging me here is that "netstat -nif inet"
appears to be mis-stating the situation.  I believe it would be ideal if
it were to provide correct output, but failing that, I'm tempted to
suggest that  it might be better to be silent on the matter.

Of course, the general output of netstat(1) is fairly well entrenched in
history, and I don't advocate change for its own sake.

Anyone else think this is enough of a "problem" that it merits modifying
the code (e.g., in netstat/if.c) a bit?

Peace,
david
-- 
David H. Wolfskill				david at catwhisker.org
Depriving a girl or boy of an opportunity for education is evil.

See http://www.catwhisker.org/~david/publickey.gpg for my public key.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20100810/a28eb5c1/attachment.pgp


More information about the freebsd-hackers mailing list