class TestLab::Interface
Interface
Class
@author Zachary Patten <zachary AT jovelabs DOT com>
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/testlab/interface.rb, line 21 def initialize(*args) @ui = TestLab.ui @ui.logger.debug { "Loading Interface" } super(*args) self.address ||= generate_ip self.mac ||= generate_mac @ui.logger.debug { "Interface '#{self.id}' Loaded" } end
Public Instance Methods
cidr()
click to toggle source
CIDR mask for the interface
# File lib/testlab/interface.rb, line 39 def cidr TestLab::Utility.cidr(self.address) end
generate_ip()
click to toggle source
Generate IP address
Generates an RFC compliant private IP address.
@return [String] A random, private IP address in the 192.168.0.1/24
range.
# File lib/testlab/interface.rb, line 59 def generate_ip crc32 = Zlib.crc32(self.id.to_s) offset = crc32.modulo(255) octets = [ 192..192, 168..168, 0..254, 1..254 ] ip = Array.new for x in 1..4 do ip << octets[x-1].to_a[offset.modulo(octets[x-1].count)].to_s end "#{ip.join(".")}/24" end
generate_mac()
click to toggle source
Generate MAC address
Generates an RFC compliant private MAC address.
@return [String] A random, private MAC address.
# File lib/testlab/interface.rb, line 79 def generate_mac crc32 = Zlib.crc32(self.id.to_s) offset = crc32.modulo(255) digits = [ %w(0), %w(0), %w(0), %w(0), %w(5), %w(e), %w(0 1 2 3 4 5 6 7 8 9 a b c d e f), %w(0 1 2 3 4 5 6 7 8 9 a b c d e f), %w(5 6 7 8 9 a b c d e f), %w(3 4 5 6 7 8 9 a b c d e f), %w(0 1 2 3 4 5 6 7 8 9 a b c d e f), %w(0 1 2 3 4 5 6 7 8 9 a b c d e f) ] mac = "" for x in 1..12 do mac += digits[x-1][offset.modulo(digits[x-1].count)] mac += ":" if (x.modulo(2) == 0) && (x != 12) end mac end
ip()
click to toggle source
IP address for the interface
# File lib/testlab/interface.rb, line 34 def ip TestLab::Utility.ip(self.address) end
netmask()
click to toggle source
Netmask for the interface
# File lib/testlab/interface.rb, line 44 def netmask TestLab::Utility.netmask(self.address) end
ptr()
click to toggle source
PTR record for the interface
# File lib/testlab/interface.rb, line 49 def ptr TestLab::Utility.ptr(self.address) end