Re: [HACKERS] cidr - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] cidr
Date
Msg-id 199807210530.BAA22477@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] cidr  (Paul A Vixie <vixie@vix.com>)
List pgsql-hackers
> > My guess is that it is going to output x.x.x.x/32, but we should supply
> > a function so they can get just the IP or the mask from the type.  That
> > way, people who don't want the cidr format can pull out the part they
> > want.
>
> this i don't understand.  why would you want only one part of it?  if you
> want to do address arithmetic then you need specific OR and AND and NOT
> functions -- like making a broadcast address if all you know is your address
> and netmask.  but why would you want to know the mantissa without the scale?

I guess I thought someone might want to have ipaddr() and netmask()
functions so they can do:

    x = 192.7.34.21/24
    ipaddr(x)  -> 192.7.34.21
    netmask(x) -> 255.255.255.0

    x = 192.7.0.0/16
    ipaddr(x)  -> 192.7.0.0
    netmask(x) -> 255.255.0.0

These function are defined on the cidr type, and can be called if
someone wants the old output format.

>
> > If they don't specify a netmask when they load the value, perhaps we use
> > the standard class A,B,C netmasks.  How you specify a HOST address using
> > the non-cidr format, I really don't know.  I am sure the experts will
> > hash it out before 6.4 beta on September 1.
>
> classful assumptions are out of fashion, outdated, and dangerous.  consider:
>
>     "16" -> "16/8" -> "16.0.0.0/8"
>     "128" -> "128/16" -> "128.0.0.0/16"
>     "192" -> "192/24" -> "192.0.0.0/24"
>
> not very helpful.  the implementation of "cidr" that i posted here yesterday
> uses the BIND-8 functions for representational conversion.  those functions
> assume that a text representation with no "/" given has as many bits as the
> number of octets they fully cover:
>
>     "16" -> "16/8"
>     "128" -> "128/8"
>     "192" -> "192/8"
>     "127.1" -> "127.1/16"


>
> this is how a Cisco router would interpret such routes if "ip classless" is
> enabled and static routes were being entered.  "ip classless" is a prereq-
> uisite for running OSPF, RIPv2, or BGP4.  in other words it's pervasive.
>
> BIND follows RFC 1884 in this regard, and deviates significantly from both
> classful assumptions and the old BSD standard, which would treat "127.1" as
> "127.0.0.1".  this burned on some old /etc/rc files but it was the right
> thing to do and now that the world has gotten over the scars, let's not run
> backwards.
>
> the IETF's CIDR project was long running, painful, and successful.

Yes, the 127.1 ambiguity was very strange.  netstat -rn is very hard to
understand using the old format.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

pgsql-hackers by date:

Previous
From: "Thomas G. Lockhart"
Date:
Subject: [Fwd: SGVLLUG Oracle and Informix on Linux]
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] cidr