Class: DhcpsApi::DHCP_SUBNET_ELEMENT_DATA_V4

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

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

.build_for_reservation(reservation_ip, reservation_mac, client_type = DhcpsApi::ClientType::CLIENT_TYPE_DHCP) ⇒ Object



556
557
558
559
560
561
562
563
564
565
566
# File 'lib/dhcpsapi/data_structures.rb', line 556

def self.build_for_reservation(reservation_ip, reservation_mac, client_type = DhcpsApi::ClientType::CLIENT_TYPE_DHCP)
  subnet_element = DhcpsApi::DHCP_SUBNET_ELEMENT_DATA_V4.new
  subnet_element[:element_type] = DhcpsApi::DHCP_SUBNET_ELEMENT_TYPE::DhcpReservedIps
  subnet_element[:element][:reserved_ip] = (reserved_ip = DhcpsApi::DHCP_IP_RESERVATION_V4.new).pointer

  reserved_ip[:reserved_ip_address] = reserved_ip.ip_to_uint32(reservation_ip)
  reserved_ip[:reserved_for_client] = DhcpsApi::DHCP_CLIENT_UID.from_mac_address(reservation_mac).pointer
  reserved_ip[:b_allowed_client_types] = client_type

  subnet_element
end

.build_for_subnet_range(start_ip_address, end_ip_address) ⇒ Object



568
569
570
571
572
573
574
575
576
# File 'lib/dhcpsapi/data_structures.rb', line 568

def self.build_for_subnet_range(start_ip_address, end_ip_address)
  subnet_element = DhcpsApi::DHCP_SUBNET_ELEMENT_DATA_V4.new
  subnet_element[:element_type] = DhcpsApi::DHCP_SUBNET_ELEMENT_TYPE::DhcpIpRanges
  subnet_element[:element][:ip_range] = (ip_range = DhcpsApi::DHCP_IP_RANGE.new).pointer
  ip_range[:start_address] = ip_range.ip_to_uint32(start_ip_address)
  ip_range[:end_address] = ip_range.ip_to_uint32(end_ip_address)

  subnet_element
end

Instance Method Details

#element_as_ruby_struct_attrObject



578
579
580
581
582
583
584
585
586
587
588
589
590
591
# File 'lib/dhcpsapi/data_structures.rb', line 578

def element_as_ruby_struct_attr
  case self[:element_type]
    when DHCP_SUBNET_ELEMENT_TYPE::DhcpIpRanges
      DHCP_IP_RANGE.new(self[:element][:ip_range]).as_ruby_struct
    when DHCP_SUBNET_ELEMENT_TYPE::DhcpSecondaryHosts
      DHCP_HOST_INFO.new(self[:element][:secondary_host]).as_ruby_struct
    when DHCP_SUBNET_ELEMENT_TYPE::DhcpReservedIps
      DHCP_IP_RESERVATION_V4.new(self[:element][:reserved_ip]).as_ruby_struct
    when DHCP_SUBNET_ELEMENT_TYPE::DhcpExcludedIpRanges
      DHCP_IP_RANGE.new(self[:element][:exclude_ip_range]).as_ruby_struct
    else
      self[:element]
  end
end