class Lib::DHCP::Option21
Public Class Methods
new(*address)
click to toggle source
Calls superclass method
Lib::DHCP::Option::new
# File lib/lib/dhcp/options/option21.rb, line 19 def initialize(*address) address.map! do |ip| if ip.is_a? Net::Address::IPv4 ip elsif ip.is_a?Array Net::Address::IPv4.new(*ip) else Net::Address::IPv4.new(ip) end end super POLICY_FILTER, address end
Private Class Methods
unpack(oid, len, payload)
click to toggle source
# File lib/lib/dhcp/options/option21.rb, line 71 def self.unpack(oid, len, payload) raise ArgumentError, "OID Mismatch for POLICYFILTER Option - #{oid}" unless oid.to_i == POLICY_FILTER raise ArgumentError, "Wrong POLICYFILTER Option length - #{len}" unless (len%8) == 0 address = payload.to_s.unpack('N*') i = 0 a = [] while i <= (len/8) a << Net::Address::IPv4.new(address[i], address[i+1]) i += 2 end self.new *a end
Public Instance Methods
<<(address)
click to toggle source
# File lib/lib/dhcp/options/option21.rb, line 56 def <<(address) address.map! do |ip| if ip.is_a? Net::Address::IPv4 ip elsif ip.is_a?Array Net::Address::IPv4.new(*ip) else Net::Address::IPv4.new(ip) end end @payload << address end
len()
click to toggle source
# File lib/lib/dhcp/options/option21.rb, line 39 def len @payload.size * 8 end
pack()
click to toggle source
# File lib/lib/dhcp/options/option21.rb, line 35 def pack [POLICY_FILTER, @payload.size * 8, *@payload.map{|ip| [ip.to_i, ip.mask.to_i]}.flatten].pack('C2N*') end
payload=(address)
click to toggle source
# File lib/lib/dhcp/options/option21.rb, line 43 def payload=(address) address.map! do |ip| if ip.is_a?Net::Address::IPv4 ip elsif ip.is_a?Array Net::Address::IPv4.new(*ip) else Net::Address::IPv4.new(ip) end end @payload = address end