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