def initialize(str)
ip, netmask = str.split("/")
if IPAddress.valid_ipv4?(ip)
@address = ip.strip
else
raise ArgumentError, "Invalid IP #{ip.inspect}"
end
if netmask
netmask.strip!
if netmask =~ /^\d{1,2}$/
@prefix = Prefix32.new(netmask.to_i)
elsif IPAddress.valid_ipv4_netmask?(netmask)
@prefix = Prefix32.parse_netmask(netmask)
else
raise ArgumentError, "Invalid netmask #{netmask}"
end
else
@prefix = Prefix32.new(32)
end
@octets = @address.split(".").map{|i| i.to_i}
@u32 = (@octets[0]<< 24) + (@octets[1]<< 16) + (@octets[2]<< 8) + (@octets[3])
end