DHCPv6.Server (DHCP v0.5.0)
View SourceDHCPv6 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
@type lease() :: %{ ip: :inet.ip6_address(), duid: binary(), iaid: integer(), expires_at: integer(), preferred_lifetime: integer(), valid_lifetime: integer(), options: [DHCPv6.Message.Option.t()] }
@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
Manually expire leases (for testing/cleanup).
Get current leases for monitoring/debugging.
@spec init(DHCPv6.Config.t()) :: state()
Initialize DHCPv6 server with configuration.
@spec process_message(state(), DHCPv6.Message.t(), :inet.ip6_address(), integer()) :: {state(), [DHCPv6.Message.t()]}
Process incoming DHCPv6 message and return response messages.