DHCPv6.Client (DHCP v0.5.0)

View Source

DHCPv6 client utilities for testing and simulation.

Provides functions to simulate DHCPv6 client behavior for testing DHCPv6 server implementations.

Summary

Functions

Create an INFORMATION-REQUEST message for testing.

Create a RELEASE message for testing.

Create a RENEW message for testing.

Create a REQUEST message for testing.

Send a DHCPv6 message to a server for testing.

Create a SOLICIT message for testing.

Run a complete DHCPv6 lease test cycle.

Functions

information_request(opts)

@spec information_request(keyword()) :: DHCPv6.Message.t()

Create an INFORMATION-REQUEST message for testing.

Options

  • :duid - Client DUID (required)
  • :transaction_id - Transaction ID (auto-generated if not provided)
  • :dns_servers - Request DNS servers (default: true)

release(opts)

@spec release(keyword()) :: DHCPv6.Message.t()

Create a RELEASE message for testing.

Options

  • :duid - Client DUID (required)
  • :server_duid - Server DUID (required)
  • :iaid - Identity Association ID (required)
  • :addresses - IPv6 addresses to release (required)
  • :transaction_id - Transaction ID (auto-generated if not provided)

renew(opts)

@spec renew(keyword()) :: DHCPv6.Message.t()

Create a RENEW message for testing.

Options

  • :duid - Client DUID (required)
  • :server_duid - Server DUID (required)
  • :iaid - Identity Association ID (required)
  • :addresses - IPv6 addresses to renew (required)
  • :transaction_id - Transaction ID (auto-generated if not provided)

request(opts)

@spec request(keyword()) :: DHCPv6.Message.t()

Create a REQUEST message for testing.

Options

  • :duid - Client DUID (required)
  • :server_duid - Server DUID (required)
  • :iaid - Identity Association ID (required)
  • :addresses - Requested IPv6 addresses (required)
  • :transaction_id - Transaction ID (auto-generated if not provided)

send_message(opts)

@spec send_message(keyword()) :: {:ok, DHCPv6.Message.t()} | {:error, term()}

Send a DHCPv6 message to a server for testing.

Options

  • :message - Message to send (required)
  • :server_ip - Server IP to send to (default: ff02::1:2)
  • :server_port - Server port (default: 547)
  • :timeout - Timeout in milliseconds (default: 5000)

solicit(opts)

@spec solicit(keyword()) :: DHCPv6.Message.t()

Create a SOLICIT message for testing.

Options

  • :duid - Client DUID (required)
  • :iaid - Identity Association ID (required)
  • :transaction_id - Transaction ID (auto-generated if not provided)
  • :rapid_commit - Include rapid commit option (default: false)
  • :dns_servers - Request DNS servers (default: true)

test_lease_cycle(opts)

@spec test_lease_cycle(keyword()) ::
  {:ok,
   %{
     solicit: DHCPv6.Message.t(),
     advertise: DHCPv6.Message.t(),
     request: DHCPv6.Message.t(),
     reply: DHCPv6.Message.t()
   }}
  | {:error, term()}

Run a complete DHCPv6 lease test cycle.

Returns the full DHCPv6 handshake process for testing.