Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] cidr

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: darcy(at)druid(dot)net (D'Arcy J(dot)M(dot) Cain)
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] cidr
Date: 1998-07-24 16:00:16
Message-ID: 199807241600.MAA18216@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackers
> Thus spake Bruce Momjian
> > > > 	192.0.0.3:255.255.0.0   host/netmask
> > > Converted internally to 192.0.0.3:/16
> > 
> > This is a problem.  Suppose you have:
> > 
> > 	192.0.0.0:255.255.255.0
> > 
> > This is a host with netmask, while:
> > 
> > 	192.0.0.0/24
> > 
> > is a network address.  Paul?
> 
> I believe that these two representations refer to the same thing.  Whether
> that thing is a network or an address depends on the application.  Either
> the column is being used to store networks or hosts.  That's what I was
> getting at with my previous analogy with int types.  An int could hold
> ordinal numbers like IDs or it could hold quantities.  We don't need
> the data type to store which.  The application knows and we don't store
> ID codes and counts in the same column.  The same with IP numbers.  We
> decide in any particular application whether a column is a list of hosts
> or a list of networks and we then populate it.
> 
> I do like the idea of using attypmod to define the form of the type.
> I assume we can use that to determine the output format, that is, use
> it to effectively apply one of the functions to it.  That makes for
> a clean use of the type.

OK.  Sounds good to me.  The only problem is display.  If we don't
indicate whether it is a cidr or host/netmask on column creation or
insertion, how do we display it so it makes sense?  Always cidr?


> 
> > > > 	192.0.0.3/32:255.255.255.0  host?/netmask
> > > But 192.0.0.3/24 or 192.0.0.3:255.255.255.0 gives all the information
> > > that you need.
> > 
> > See example above.  You use the 3 here to know it is a host, because the
> > IP address extens past the netmask, but what if they are zeros?
> 
> Technically, 192.0.0.0/24 is a valid host on 192.0.0 although most
> people avoid it because some older equipment doesn't handle it very
> well.
> 
> > > You mean printing netmasks?  As I said, it seems to me that netmasks will
> > > always be paired with a host or network but perhaps we can set up the
> > > function table so that netmask on an integer type converts to a netmask
> > > in the form you suggest.  That would be the truly oo way to do it.
> > 
> > Certainly we could, but it seems nice to have one type just for ip-type
> > stuff.
> 
> I agree.  I'm just saying that we can add the netmask function to integer
> as well.  That gives someone the flexibility to store it either way.
> However, I don't think I am going to speak to this point again until
> someone can give me a single example of a requirement for storing
> netmasks independent of any hosts or networks.  :-)

OK.  Why not?

> 
> I just thought of another useful function.
> 
>     broadcast('192.3.4.5/24::cidr') == 192.3.4.255


-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist(at)candle(dot)pha(dot)pa(dot)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)

In response to

Responses

pgsql-hackers by date

Next:From: Bruce MomjianDate: 1998-07-24 16:05:05
Subject: Re: [DOCS] Re: [GENERAL] Re: [HACKERS] [Fwd: SGVLLUG Oracle and Informix on Linux]
Previous:From: Bruce TongDate: 1998-07-24 12:42:13
Subject: Re: [GENERAL] Re: [HACKERS] [Fwd: SGVLLUG Oracle and Informix on Linux]

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group