Ipaddr and invalid ipv4 addresses

What's going on here?

irb(main):002:0> require 'ipaddr'
=> true

irb(main):003:0> ip = IPAddr.new('192.168.1.1024')
=> #<IPAddr: IPv4:192.168.5.0/255.255.255.255>

irb(main):005:0> IPSocket.getaddress('192.168.1.1024')
=> "68.142.212.71"

irb(main):003:0> IPSocket.getaddress('asd')
=> "68.142.212.71"

martin

What's going on here?

require 'ipaddr'

=> true

ip = IPAddr.new('192.168.1.1024')

ArgumentError: invalid address
  from /usr/local/lib/ruby/1.8/ipaddr.rb:467:in `initialize'
  from (irb):2:in `new'
  from (irb):2

RUBY_VERSION

=> "1.8.7"

···

On Wed, Dec 3, 2008 at 8:03 PM, Martin DeMello <martindemello@gmail.com> wrote:

The snippet above is pretty easy to understand if you convert the ip
to a single integer, then convert back to hex...

irb(main):003:0> ip1=((192*256+168)*256+1)*256+1024
=> 3232236800
irb(main):004:0> ip1.to_s(16).scan(/../).map{|v| v.to_i(16)}.join
( ".")
=> "192.168.5.0"

···

On Dec 3, 7:03 am, Martin DeMello <martindeme...@gmail.com> wrote:

What's going on here?

irb(main):002:0> require 'ipaddr'
=> true

irb(main):003:0> ip = IPAddr.new('192.168.1.1024')
=> #<IPAddr: IPv4:192.168.5.0/255.255.255.255>

Ah - my bad, I'm still running 1.8.6 and didn't think to check the
latest version.

martin

···

On Wed, Dec 3, 2008 at 5:44 PM, botp <botpena@gmail.com> wrote:

On Wed, Dec 3, 2008 at 8:03 PM, Martin DeMello <martindemello@gmail.com> wrote:

What's going on here?

require 'ipaddr'

=> true

ip = IPAddr.new('192.168.1.1024')

ArgumentError: invalid address
       from /usr/local/lib/ruby/1.8/ipaddr.rb:467:in `initialize'
       from (irb):2:in `new'
       from (irb):2

RUBY_VERSION

=> "1.8.7"