Class: DhcpsApi::DHCP_CLIENT_UID

Inherits:
DHCPS_Struct show all
Defined in:
lib/dhcpsapi/data_structures.rb

Overview

typedef struct _DHCP_BINARY_DATA {

  DWORD DataLength;
  BYTE  *Data;
} DHCP_BINARY_DATA, *LPDHCP_BINARY_DATA, DHCP_CLIENT_UID;

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DHCPS_Struct

#as_ruby_struct, ruby_struct_attr

Methods included from RubyStructAttrHelpers

#dhcp_client_uid_to_mac, #ip_to_uint32, #mac_address_to_array_of_uint8, #to_string, #to_wchar_string, #uint32_to_ip, #wchar_string_length

Class Method Details

.from_mac_address(mac_address) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/dhcpsapi/data_structures.rb', line 43

def self.from_mac_address(mac_address)
  to_return = new
  mac_as_uint8s = to_return.mac_address_to_array_of_uint8(mac_address)
  to_return[:data_length] = mac_as_uint8s.size
  to_return[:data] = FFI::MemoryPointer.new(:uint8, mac_as_uint8s.size)
  to_return[:data].write_array_of_uint8(mac_as_uint8s)
  to_return
end

Instance Method Details

#data_as_ruby_struct_attrObject



68
69
70
# File 'lib/dhcpsapi/data_structures.rb', line 68

def data_as_ruby_struct_attr
  self[:data].read_array_of_type(:uint8, :read_uint8, self[:data_length]).map {|w| "%02X" % w}.join(":")
end

#initialize_with_subnet_and_mac_addresses(subnet_address, mac_address) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/dhcpsapi/data_structures.rb', line 60

def initialize_with_subnet_and_mac_addresses(subnet_address, mac_address)
  mac_as_uint8s = mac_address_to_array_of_uint8(mac_address)
  subnet_as_uint8s = subnet_address.split('.').reverse.map {|octet| octet.to_i}
  self[:data_length] = 11
  self[:data] = FFI::MemoryPointer.new(:uint8, 11)
  self[:data].write_array_of_uint8(subnet_as_uint8s + [0x1] + mac_as_uint8s)
end

#intialize_with_mac_address(mac_address) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/dhcpsapi/data_structures.rb', line 52

def intialize_with_mac_address(mac_address)
  mac_as_uint8s = mac_address_to_array_of_uint8(mac_address)
  self[:data_length] = mac_as_uint8s.size
  self[:data] = FFI::MemoryPointer.new(:uint8, mac_as_uint8s.size)
  self[:data].write_array_of_uint8(mac_as_uint8s)
  self
end