1.2.1.6 DHCPv6 Module

The DHCPv6 client module will allow your application to dynamically obtain an IPv6 address from a DHCPv6 server. Additionally, the DHCPv6 client will get other parameters, such as DNS servers and the domain search list.

Abstraction Model

This module provides software abstraction of the DHCPv6 module existent in the TCP/IP Stack implementation. The DHCPv6 module works together with the IPv6 Stateless Address Auto-configuration protocol and provides stateful temporary/non-temporary (IATA, IANA) global addresses for the IPv6 host

dhcpv6_diagram1

How the Library Works

The IPv6 Dynamic Host Configuration Protocol (DHCPv6) is a standard networking protocol used to automatically allocate IPv6 addresses for hosts in a network.

The DHCPv6 server has a pool of IP addresses, which are leased for clients requesting them. The leases have a limited lifetime after which the hosts need to renew the lease or acquire a new one.

The DHCPv6 client module in the TCP/IP stack takes care of the communication with the DHCPv6 server and renewing the lease when the lifetime expires

Library Interface

NameDescription
Macros
TCPIP_DHCPV6_CLIENT_DUID_TYPEDefault DUID type to be used by the client
TCPIP_DHCPV6_CLIENT_PORTClients listen for DHCP messages on UDP port:
TCPIP_DHCPV6_DNS_SERVERS_NOnumber of DNS servers to store from a DHCP server reply
TCPIP_DHCPV6_DOMAIN_SEARCH_LIST_SIZEspace for the Domain Search List option - multiple of 16
TCPIP_DHCPV6_FORCED_SERVER_PREFERENCEpreference value that forces the server selection 8 bit value!
TCPIP_DHCPV6_IA_FREE_DESCRIPTORS_NOmaximum number of free IA descriptors per client
TCPIP_DHCPV6_IA_SOLICIT_ADDRESS_PREF_LTIMEdefault lifetimes for the solicited addresses
TCPIP_DHCPV6_IA_SOLICIT_ADDRESS_VALID_LTIMEThis is macro TCPIP_DHCPV6_IA_SOLICIT_ADDRESS_VALID_LTIME.
TCPIP_DHCPV6_IANA_DEFAULT_T1default values for IANA T1, T2
TCPIP_DHCPV6_IANA_DEFAULT_T2This is macro TCPIP_DHCPV6_IANA_DEFAULT_T2.
TCPIP_DHCPV6_IANA_DESCRIPTORS_NOmaximum number of IANA descriptors per client
TCPIP_DHCPV6_IANA_SOLICIT_ADDRESSES_NOdefault addresses for IANA in a solicit message
TCPIP_DHCPV6_IANA_SOLICIT_DEFAULT_ADDRESSdefault values for the IANA Solicit addresses irrelevant if TCPIP_DHCPV6_IANA_SOLICIT_ADDRESSES_NO == 0 should be a value for each TCPIP_DHCPV6_IANA_SOLICIT_ADDRESSES_NO
TCPIP_DHCPV6_IANA_SOLICIT_T1default values for IANA T1, T2 in a solicit message
TCPIP_DHCPV6_IANA_SOLICIT_T2This is macro TCPIP_DHCPV6_IANA_SOLICIT_T2.
TCPIP_DHCPV6_IATA_DEFAULT_T1default values for IATA T1, T2 If 0, the timeout will be infinite (0xffffffff)
TCPIP_DHCPV6_IATA_DEFAULT_T2This is macro TCPIP_DHCPV6_IATA_DEFAULT_T2.
TCPIP_DHCPV6_IATA_DESCRIPTORS_NOmaximum number of IATA descriptors per client
TCPIP_DHCPV6_IATA_SOLICIT_ADDRESSES_NOdefault addresses for IATA in a solicit message
TCPIP_DHCPV6_IATA_SOLICIT_DEFAULT_ADDRESSdefault values for the IANA Solicit addresses irrelevant if TCPIP_DHCPV6_IATA_SOLICIT_ADDRESSES_NO == 0 should be a value for each TCPIP_DHCPV6_IATA_SOLICIT_ADDRESSES_NO
TCPIP_DHCPV6_MESSAGE_BUFFER_SIZEdefault value of the buffer to assemble messages, etc.
TCPIP_DHCPV6_MESSAGE_BUFFERSdefault number of buffers
TCPIP_DHCPV6_MIN_UDP_TX_BUFFER_SIZEminimum size of a UDP buffer
TCPIP_DHCPV6_SERVER_PORTServers and relay agents listen for DHCP messages on UDP port:
TCPIP_DHCPV6_SKIP_DAD_PROCESSdefining this symbol will skip the DAD processing for DHCPv6 generated addresses
TCPIP_DHCPV6_STATUS_CODE_MESSAGE_LENnumber of character to reserve for a server status code associated message
TCPIP_DHCPV6_TASK_TICK_RATEThe DHCPv6 task processing rate: number of milliseconds to generate an DHCPv6 tick. Used by the DHCPv6 state machine The default value is 100 milliseconds. The lower the rate (higher the frequency) the higher the module priority and higher module performance can be obtained The value cannot be lower than the TCPIP_STACK_TICK_RATE.
TCPIP_STACK_USE_DHCPV6_CLIENTenable IPv6 DHCP client functionality
DCHPV6_CONFIG_HThis is macro DCHPV6_CONFIG_H.
Configuration Functions
TCPIP_DHCPV6_HandlerDeRegisterDHCPV6 event deregistration
TCPIP_DHCPV6_HandlerRegisterDHCPV6 event registration
TCPIP_DHCPV6_TaskStandard TCP/IP stack module task function.
Status Functions
TCPIP_DHCPV6_ClientInfoGetclient status reporting
TCPIP_DHCPV6_IaInfoGetIA status reporting
Data Types and Constants
TCPIP_DHCPV6_CLIENT_INFODHCPv6 client info
TCPIP_DHCPV6_CLIENT_STATEDHCPv6 Current Status
TCPIP_DHCPV6_CONFIG_FLAGSDHCPV6 start up flags
TCPIP_DHCPV6_DUID_TYPEtypes of DUID for DHCPv6
TCPIP_DHCPV6_EVENT_HANDLERDHCPv6 event handler prototype.
TCPIP_DHCPV6_HANDLEa DHCPV6 handle
TCPIP_DHCPV6_IA_EVENTIA event info
TCPIP_DHCPV6_IA_INFODHCPv6 IA info
TCPIP_DHCPV6_IA_STATEIA run states
TCPIP_DHCPV6_IA_SUBSTATEIA run substates most IA run states that must send a message go through these substates
TCPIP_DHCPV6_IA_TYPEsupported types of IA
TCPIP_DHCPV6_MODULE_CONFIGDHCPv6 module configuration
TCPIP_DHCPV6_SERVER_STATUS_CODEDHCPV6 server status code
__DHCPV6_HThis is macro __DHCPV6_H.
TCPIP_DHCPV6_USER_NOTIFICATIONallow DHCPV6 client user notification if enabled, the TCPIP_DHCPV6_HandlerRegister/TCPIP_DHCPV6_HandlerDeRegister functions exist and can be used