Markus Werner
12/29/2005 4:35:00 PM
Hello,
at the moment the lib behaves like following.
ip = IPAddr.new("192.168.2.43/24")
=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>
So so orgin information is lost
IMHO this is a bad behavior.
I discussed this matter already in the ruby ml a year ago.
Somebody was the opinion thats this is what he expect, cause 192.168.2.43/24
is not a valid notation. He said the valid notation is either
192.168.2.43/32, 192.168.2.43 or 192.168.2.0/24.
If I would agree with him ( I don't) I would say that IPAddr still behaves
wrong.
It should raise an execption if the argument (notation) is invalid and
should not alter the argument silently.
But I state it is a valid notation. Many network administrator use this
notation to express the address and the prefixlen/netmask in one string.
So I suggest to change the behavior of the lib a following and like to read
your opinions about it.
ip = IPAddr.new("192.168.2.43/24")
=> #<IPAddr: IPv4:192.168.2.43/255.255.255.0>
ip.addr => "192.168.2.43"
ip.netmask => "255.255.255.0"
ip.net => "192.168.2.0" # just for ipv4 family"
ip.broadcast "192.168.2.255" # just for ipv4 family"
ip.prefix => "192.168.2.0/24"
ip.prefixlen => "24"
And I would also suggest to migrate to cidr in all places cause this is the
future. So the class should internal just use the prefixlen and net the
netmask anymore.
BTW
A 6to4 method would be a nice feature too.
exp.
ip = IPAddr.new("192.168.2.43")
=> #<IPAddr: IPv4:192.168.2.43/255.255.255.255>
ip.6to4_prefix => "2002:3eb0:e08c::0621:7622:4140/48"
ip.6to4 => "2002:3eb0:e08c::0621:7622:4140/128"
or
ip.6to4 => "2002:3eb0:e08c::0621:7622:4140"
bye
Markus
Disclaimer:-)
Cause my english is not as good as it should be. Everything I've written
should be interpreted as objective and open minded. I don't have a
unalterable opinion, how it could seem.