DHCPv6.Server (DHCP v0.5.0)

View Source

DHCPv6 Server Core - Pure Elixir DHCPv6 protocol implementation.

This module provides the core DHCPv6 server logic without networking concerns. It handles lease management, IPv6 address allocation, and DHCPv6 message processing.

Summary

Functions

Manually expire leases (for testing/cleanup).

Get current leases for monitoring/debugging.

Initialize DHCPv6 server with configuration.

Process incoming DHCPv6 message and return response messages.

Types

lease()

@type lease() :: %{
  ip: :inet.ip6_address(),
  duid: binary(),
  iaid: integer(),
  expires_at: integer(),
  preferred_lifetime: integer(),
  valid_lifetime: integer(),
  options: [DHCPv6.Message.Option.t()]
}

state()

@type state() :: %{
  config: DHCPv6.Config.t(),
  leases: %{required(binary()) => %{required(integer()) => lease()}},
  ip_pool: MapSet.t(:inet.ip6_address()),
  used_ips: MapSet.t(:inet.ip6_address())
}

Functions

expire_leases(state)

@spec expire_leases(state()) :: state()

Manually expire leases (for testing/cleanup).

get_leases(state)

@spec get_leases(state()) :: [lease()]

Get current leases for monitoring/debugging.

init(config)

@spec init(DHCPv6.Config.t()) :: state()

Initialize DHCPv6 server with configuration.

process_message(state, message, client_ip, port)

@spec process_message(state(), DHCPv6.Message.t(), :inet.ip6_address(), integer()) ::
  {state(), [DHCPv6.Message.t()]}

Process incoming DHCPv6 message and return response messages.