module TestLab::Utility::CIDR

CIDR Module

@author Zachary Patten <zachary AT jovelabs DOT com>

Constants

CIDR_MATRIX

Public Instance Methods

arpa(ip) click to toggle source
# File lib/testlab/utility/cidr.rb, line 121
def arpa(ip)
  [arpa_octets(ip), 'in-addr', 'arpa'].flatten.join('.')
end
arpa_octets(ip, fill=nil) click to toggle source
# File lib/testlab/utility/cidr.rb, line 99
def arpa_octets(ip, fill=nil)
  ip, cidr = ip.split('/')
  oct = octets(ip)

  result = case cidr.to_i
  when 0..7 then
    [fill, fill, fill, fill]
  when 8..15 then
    [oct[0,1], fill, fill, fill]
  when 16..23 then
    [oct[0,2], fill, fill]
  when 24..31 then
    [oct[0,3], fill]
  end

  result.flatten.compact.reverse
end
broadcast(ip) click to toggle source

Returns the broadcast address

# File lib/testlab/utility/cidr.rb, line 76
def broadcast(ip)
  ip, cidr = ip.split('/')
  cidr_matrix(cidr)[:broadcast] % ip.split('.')
end
cidr(ip) click to toggle source
# File lib/testlab/utility/cidr.rb, line 52
def cidr(ip)
  ip.split('/').last.to_i
end
cidr_matrix(cidr) click to toggle source
# File lib/testlab/utility/cidr.rb, line 60
def cidr_matrix(cidr)
  CIDR_MATRIX[cidr.to_i]
end
cidr_octets(ip, fill=nil) click to toggle source
# File lib/testlab/utility/cidr.rb, line 81
def cidr_octets(ip, fill=nil)
  ip, cidr = ip.split('/')
  oct = octets(ip)

  result = case cidr.to_i
  when 0..7 then
    oct[-4,4]
  when 8..15 then
    [fill, oct[-3,3]]
  when 16..23 then
    [fill, fill, oct[-2,2]]
  when 24..31 then
    [fill, fill, fill, oct[-1,1]]
  end

  result.flatten.compact
end
ip(ip) click to toggle source
# File lib/testlab/utility/cidr.rb, line 48
def ip(ip)
  ip.split('/').first
end
netmask(ip) click to toggle source
# File lib/testlab/utility/cidr.rb, line 64
def netmask(ip)
  ip, cidr = ip.split('/')
  cidr_matrix(cidr)[:netmask]
end
network(ip) click to toggle source

Returns the network address

# File lib/testlab/utility/cidr.rb, line 70
def network(ip)
  ip, cidr = ip.split('/')
  cidr_matrix(cidr)[:network] % ip.split('.')
end
octets(ip) click to toggle source
# File lib/testlab/utility/cidr.rb, line 56
def octets(ip)
  ip.split('.')
end
ptr(ip) click to toggle source
# File lib/testlab/utility/cidr.rb, line 117
def ptr(ip)
  cidr_octets(ip).reverse.join('.')
end