Module: DhcpsApi::SubnetElement

Included in:
Server
Defined in:
lib/dhcpsapi/subnet_element.rb

Instance Method Summary collapse

Instance Method Details

#add_subnet_element(subnet_address, subnet_element) ⇒ Hash

Creates a new subnet element.

api.add_subnet_element(‘192.168.42.0’, a_subnet_element)

Examples:

Create a new subnet element

Parameters:

Returns:

  • (Hash)

Raises:

See Also:



34
35
36
37
38
# File 'lib/dhcpsapi/subnet_element.rb', line 34

def add_subnet_element(subnet_address, subnet_element)
  error = DhcpsApi::Win2008::SubnetElement.DhcpAddSubnetElementV4(to_wchar_string(server_ip_address), ip_to_uint32(subnet_address), subnet_element.pointer)
  raise DhcpsApi::Error.new("Error creating subnet element.", error) if error != 0
  subnet_element.as_ruby_struct
end

#delete_subnet_element(subnet_address, subnet_element) ⇒ void

This method returns an undefined value.

Deletes subnet element.

api.delete_subnet_element(‘192.168.42.0’, an_existing_subnet_element)

Examples:

Delete a subnet element

Parameters:

Raises:



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

def delete_subnet_element(subnet_address, subnet_element)
  error = DhcpsApi::Win2008::SubnetElement.DhcpRemoveSubnetElementV4(
      to_wchar_string(server_ip_address),
      ip_to_uint32(subnet_address),
      subnet_element.pointer,
      DhcpsApi::DHCP_FORCE_FLAG::DhcpNoForce)
  raise DhcpsApi::Error.new("Error deleting subnet element.", error) if error != 0
end

#dhcp_enum_subnet_elements_v4(subnet_address, element_type, preferred_maximum, resume_handle) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/dhcpsapi/subnet_element.rb', line 60

def dhcp_enum_subnet_elements_v4(subnet_address, element_type, preferred_maximum, resume_handle)
  resume_handle_ptr = FFI::MemoryPointer.new(:uint32).put_uint32(0, resume_handle)
  subnet_element_info_ptr_ptr = FFI::MemoryPointer.new(:pointer)
  elements_read_ptr = FFI::MemoryPointer.new(:uint32).put_uint32(0, 0)
  elements_total_ptr = FFI::MemoryPointer.new(:uint32).put_uint32(0, 0)

  error = DhcpsApi::Win2008::SubnetElement.DhcpEnumSubnetElementsV4(
      to_wchar_string(server_ip_address), ip_to_uint32(subnet_address), element_type, resume_handle_ptr, preferred_maximum,
      subnet_element_info_ptr_ptr, elements_read_ptr, elements_total_ptr)
  return empty_response if error == 259
  if is_error?(error)
    unless (subnet_element_info_ptr_ptr.null? || (to_free = subnet_element_info_ptr_ptr.read_pointer).null?)
      free_memory(DhcpsApi::DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4.new(to_free))
    end
    raise DhcpsApi::Error.new("Error retrieving subnet elements for subnet '%s'." % [subnet_address], error)
  end

  subnet_elements_array = DhcpsApi::DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4.new(subnet_element_info_ptr_ptr.read_pointer)
  subnet_elements = subnet_elements_array.as_ruby_struct
  free_memory(subnet_elements_array)

  [subnet_elements, resume_handle_ptr.get_uint32(0), elements_read_ptr.get_uint32(0), elements_total_ptr.get_uint32(0)]
end

#list_subnet_elements(subnet_address, element_type) ⇒ Array<Hash>

Returns a a list of subnet elements.

api.list_subnet_elements(‘192.168.42.0’, DhcpsApi::DHCP_SUBNET_ELEMENT_TYPE::DhcpReservedIps)

Examples:

List subnet elements

Parameters:

Returns:

  • (Array<Hash>)

See Also:



16
17
18
19
# File 'lib/dhcpsapi/subnet_element.rb', line 16

def list_subnet_elements(subnet_address, element_type)
  items, _ = retrieve_items(:dhcp_enum_subnet_elements_v4, subnet_address, element_type, 1024, 0)
  items
end