require 'ipaddr'
def ip_to_bin ipaddr
IPAddr.new(ipaddr).to_i
end
def bin_to_ip binaddr
[24, 16, 8, 0].collect {|b| (binaddr >> b) & 255}.join('.')
end
def mask_to_masklen mask
IPAddr.new(mask).to_i.to_s(2).count('1')
end
def masklen_to_mask masklen
bin_to_ip(((0x1 << (32 - masklen)) - 1) ^ (0x0 - 1))
end