class DhcpsApi::DHCP_OPTION_DATA_ELEMENT

Public Class Methods

initialize_from_data(type, data) click to toggle source
# File lib/dhcpsapi/data_structures.rb, line 206
def self.initialize_from_data(type, data)
  DHCP_OPTION_DATA_ELEMENT.new.initialize_from_data(type, data)
end

Public Instance Methods

element_as_ruby_struct_attr() click to toggle source
# File lib/dhcpsapi/data_structures.rb, line 155
def element_as_ruby_struct_attr
  case self[:option_type]
    when DHCP_OPTION_DATA_TYPE::DhcpByteOption
      self[:element][:byte_option]
    when DHCP_OPTION_DATA_TYPE::DhcpWordOption
      self[:element][:word_opition]
    when DHCP_OPTION_DATA_TYPE::DhcpDWordOption
      self[:element][:dword_option]
    when DHCP_OPTION_DATA_TYPE::DhcpDWordDWordOption
      self[:element][:dword_dword_option].as_ruby_struct
    when DHCP_OPTION_DATA_TYPE::DhcpIpAddressOption
      uint32_to_ip(self[:element][:ip_address_option])
    when DHCP_OPTION_DATA_TYPE::DhcpStringDataOption
      to_string(self[:element][:string_data_option])
    when DHCP_OPTION_DATA_TYPE::DhcpBinaryDataOption
      self[:element][:binary_data_option].as_ruby_struct
    when DHCP_OPTION_DATA_TYPE::DhcpEncapsulatedDataOption
      self[:element][:encapsulated_data_option].as_ruby_struct
    when DHCP_OPTION_DATA_TYPE::DhcpIpv6AddressOption
      to_string(self[:element][:ipv6_address_data_option])
  end
end
initialize_from_data(type, data) click to toggle source
# File lib/dhcpsapi/data_structures.rb, line 178
def initialize_from_data(type, data)
  self[:option_type] = type
  case type
    when DHCP_OPTION_DATA_TYPE::DhcpByteOption
      self[:element][:byte_option] = data.nil? ? 0 : data & 0xff
    when DHCP_OPTION_DATA_TYPE::DhcpWordOption
      self[:element][:word_opition] = data.nil? ? 0 : data & 0xffff
    when DHCP_OPTION_DATA_TYPE::DhcpDWordOption
      self[:element][:dword_option] = data.nil? ? 0 : data & 0xffffffff
    when DHCP_OPTION_DATA_TYPE::DhcpDWordDWordOption
      self[:element][:dword_dword_option] = DWORD_DWORD.from_int(data.nil? ? 0 : data)
    when DHCP_OPTION_DATA_TYPE::DhcpIpAddressOption
      self[:element][:ip_address_option] = data.nil? ? 0 : ip_to_uint32(data)
    when DHCP_OPTION_DATA_TYPE::DhcpStringDataOption
      self[:element][:string_data_option] = FFI::MemoryPointer.from_string(to_wchar_string(data.nil? ? '' : data))
    when DHCP_OPTION_DATA_TYPE::DhcpBinaryDataOption
      self[:element][:binary_data_option] = DHCP_BINARY_DATA.from_data(data.nil? ? [0] : data)
    when DHCP_OPTION_DATA_TYPE::DhcpEncapsulatedDataOption
      self[:element][:encapsulated_data_option] = DHCP_BINARY_DATA.from_data(data.nil? ? [0] : data)
    when DHCP_OPTION_DATA_TYPE::DhcpIpv6AddressOption
      self[:element][:ipv6_address_data_option] = FFI::MemoryPointer.from_string(to_wchar_string(data.nil? ? '' : data))
    else
      raise DhcpError, "Unknown dhcp option data type: #{type}"
  end

  self
end