class DHCP::SubOptVSRInfo
Class for DHCP suboption for vendor specific information
Public Instance Methods
bin_to_data(data)
click to toggle source
# File lib/dhcp/options.rb, line 193 def bin_to_data(data) raise "Invalid data size" unless data.size >= 5 && data.size == data[4,1].ord + 5 [ data[0,1].ord, data[2,data.size-2] ] end
data_to_bin(data)
click to toggle source
# File lib/dhcp/options.rb, line 198 def data_to_bin(data) raise "Invalid data" unless data.is_a?(Array) && data.size == 2 && data[0].is_a?(Fixnum) && data[1].is_a?(String) raise "Invalid data size" unless data[1].size < 256 data[0].chr + data[1].size.chr + data[1] end
is_list?(list)
click to toggle source
# File lib/dhcp/options.rb, line 171 def is_list?(list) raise "Invalid suboption sublist/entry" unless list.is_a?(Array) return false if list.size == 2 && list[0].is_a?(Fixnum) && list[1].is_a?(String) list.each do |item| raise "Invalid suboption sublistlist" unless item.is_a?(Array) && item.size == 2 && item[0].is_a?(Fixnum) && item[1].is_a?(String) end return true end
split_data(data)
click to toggle source
# File lib/dhcp/options.rb, line 180 def split_data(data) data = data.dup list = [] while data.size > 0 raise "Invalid suboption data" unless data.size >= 5 len = data[4,1].ord raise "Invalid vendor-specific relay info. data length" unless data.size >= len + 5 list << [ data[0,4].unpack('N')[0], data[5,len] ] data[0,5+len] = '' end list end