def wildcard(ip)
version = 4
if (ip =~ /\./ && ip !~ /:/)
octets = []
mask = 0
ip.split('.').each do |x|
if (x =~ /\*/)
break
end
octets.push(x)
end
octets.length.times do
mask = mask << 8
mask = mask | 0xff
end
until (octets.length == 4)
octets.push('0')
mask = mask << 8
end
ip = octets.join('.')
elsif (ip =~ /:/)
version = 6
fields = []
mask = 0
raise ArgumentError, "IPv6 encoded IPv4 addresses are unsupported." if (ip =~ /\./)
raise ArgumentError, "Shorthand IPv6 addresses are unsupported." if (ip =~ /::/)
ip.split(':').each do |x|
if (x =~ /\*/)
break
end
fields.push(x)
end
fields.length.times do
mask = mask << 16
mask = mask | 0xffff
end
until (fields.length == 8)
fields.push('0')
mask = mask << 16
end
ip = fields.join(':')
end
cidr = cidr_build( version, ip_str_to_int(ip,version), mask )
return(cidr)
end