Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Apr 2011 22:22:42 +0200
From:      Paul Schenkeveld <freebsd@psconsult.nl>
To:        freebsd-hackers@freebsd.org
Subject:   Re: ifconfig output: ipv4 netmask format
Message-ID:  <20110408202241.GA31041@psconsult.nl>
In-Reply-To: <8B793E28-0426-46CC-AB10-E0257AF6707D@bsdimp.com>
References:  <4D9EFAC6.4020906@lazybytes.org> <7EA5889E-77EF-4BAE-9655-C33692A75602@bsdimp.com> <4D9F2C88.4010205@lazybytes.org> <20110408155520.GA40792@cheddar.urgle.com> <4D9F5B31.9000509@lazybytes.org> <8B793E28-0426-46CC-AB10-E0257AF6707D@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Apr 08, 2011 at 01:16:17PM -0600, Warner Losh wrote:
> 
> On Apr 8, 2011, at 1:00 PM, Sergey Vinogradov wrote:
> 
> > 08.04.2011 19:55, Mike Bristow пишет:
> >> On Fri, Apr 08, 2011 at 07:40:56PM +0400, Sergey Vinogradov wrote:
> >>> On 08.04.2011 19:23, Warner Losh wrote:
> >>>> On Apr 8, 2011, at 6:08 AM, Sergey Vinogradov wrote:
> >>>> If we really wanted to make it human readable, we'd output 10.2.3.4/24
> >>> 
> >>> So, maybe, while following the POLA, we should add an option, as Daniel
> >>> mentioned above? To output the CIDR?
> >> 
> >> Non-contigous netmasks are legal in IPv4.  What do you do if someone adds
> >> the CIDR flag but the netmask cannot be represented in CIDR notation?
> > 
> > And boom goes the dynamite. Reverting to my first proposal about changing only netmask notation.
> 
> Non-contiguous netmasks are *not* legal anymore in IPv4.  They have gone the way of the dodo.  While some stacks still support it, a growing number of an interesting number of bugs with them that actual deployments with non-contiguous submasks becomes more hassle than it is worth.

Although non-contiguous netmasks are not legal anymore in IPv4, our
ifconfig still allows to do something like:

    # ifconfig em0 inet 10.0.5.2 netmask 255.0.255.0
    # ifconfig em0
    em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC>
	ether xx:xx:xx:xx:xx:xx
	inet 10.0.5.2 netmask 0xff00ff00 broadcast 10.255.5.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active

If we allow ifconfig to set non-contiguous netmasks, it cannot be
output in CIDR notation.  Perhaps a compromise could be:

  -t  Prefer dotted decimal over hex.
  -c  If the netmask is contiguous, print it in CIDR, otherwise in hex
      (without -d) or dotted decimal (with -d).

-d is already in use, hence -t although -D is also available.

Does this make everyone happy?

> Warner

Paul Schenkeveld



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110408202241.GA31041>