iPXE
|
Dynamic Host Configuration Protocol for IPv6. More...
Go to the source code of this file.
Data Structures | |
struct | dhcpv6_option |
A DHCPv6 option. More... | |
struct | dhcpv6_duid_uuid |
DHCP unique identifier based on UUID (DUID-UUID) More... | |
struct | dhcpv6_duid_option |
DHCPv6 client or server identifier option. More... | |
struct | dhcpv6_ia_na_option |
DHCPv6 identity association for non-temporary address (IA_NA) option. More... | |
struct | dhcpv6_iaaddr_option |
DHCPv6 identity association address (IAADDR) option. More... | |
struct | dhcpv6_option_request_option |
DHCPv6 option request option. More... | |
struct | dhcpv6_elapsed_time_option |
DHCPv6 elapsed time option. More... | |
struct | dhcpv6_status_code_option |
DHCPv6 status code option. More... | |
struct | dhcpv6_user_class |
DHCPv6 user class. More... | |
struct | dhcpv6_user_class_option |
DHCPv6 user class option. More... | |
union | dhcpv6_any_option |
Any DHCPv6 option. More... | |
struct | dhcpv6_header |
A DHCPv6 header. More... | |
Macros | |
#define | DHCPV6_SERVER_PORT 547 |
DHCPv6 server port. More... | |
#define | DHCPV6_CLIENT_PORT 546 |
DHCPv6 client port. More... | |
#define | DHCPV6_DUID_UUID 4 |
DHCP unique identifier based on UUID (DUID-UUID) More... | |
#define | DHCPV6_CLIENT_ID 1 |
DHCPv6 client identifier option. More... | |
#define | DHCPV6_SERVER_ID 2 |
DHCPv6 server identifier option. More... | |
#define | DHCPV6_IA_NA 3 |
DHCPv6 identity association for non-temporary address (IA_NA) option. More... | |
#define | DHCPV6_IAADDR 5 |
DHCPv6 identity association address (IAADDR) option. More... | |
#define | DHCPV6_OPTION_REQUEST 6 |
DHCPv6 option request option. More... | |
#define | DHCPV6_ELAPSED_TIME 8 |
DHCPv6 elapsed time option. More... | |
#define | DHCPV6_STATUS_CODE 13 |
DHCPv6 status code option. More... | |
#define | DHCPV6_USER_CLASS 15 |
DHCPv6 user class option. More... | |
#define | DHCPV6_VENDOR_CLASS 16 |
DHCPv6 vendor class option. More... | |
#define | DHCPV6_VENDOR_CLASS_PXE 343 |
DHCPv6 PXE vendor class. More... | |
#define | DHCPV6_DNS_SERVERS 23 |
DHCPv6 DNS recursive name server option. More... | |
#define | DHCPV6_DOMAIN_LIST 24 |
DHCPv6 domain search list option. More... | |
#define | DHCPV6_BOOTFILE_URL 59 |
DHCPv6 bootfile URI option. More... | |
#define | DHCPV6_BOOTFILE_PARAM 60 |
DHCPv6 bootfile parameters option. More... | |
#define | DHCPV6_CLIENT_ARCHITECTURE 61 |
DHCPv6 client system architecture option. More... | |
#define | DHCPV6_CLIENT_NDI 62 |
DHCPv6 client network interface identifier option. More... | |
#define | DHCPV6_LOG_SERVERS 0xffffffffUL |
DHCPv6 syslog server option. More... | |
#define | DHCPV6_BYTE_VALUE(value) ( (value) & 0xff ) |
Construct a DHCPv6 byte value. More... | |
#define | DHCPV6_WORD_VALUE(value) DHCPV6_BYTE_VALUE ( (value) >> 8 ), DHCPV6_BYTE_VALUE ( (value) >> 0 ) |
Construct a DHCPv6 word value. More... | |
#define | DHCPV6_DWORD_VALUE(value) DHCPV6_WORD_VALUE ( (value) >> 16 ), DHCPV6_WORD_VALUE ( (value) >> 0 ) |
Construct a DHCPv6 dword value. More... | |
#define | DHCPV6_CODE(code) DHCPV6_WORD_VALUE ( code ) |
Construct a DHCPv6 option code. More... | |
#define | DHCPV6_LEN(len) DHCPV6_WORD_VALUE ( len ) |
Construct a DHCPv6 option length. More... | |
#define | DHCPV6_OPTION(...) DHCPV6_LEN ( VA_ARG_COUNT ( __VA_ARGS__ ) ), __VA_ARGS__ |
Construct a DHCPv6 option from a list of bytes. More... | |
#define | DHCPV6_STRING(...) DHCPV6_OPTION ( __VA_ARGS__ ) |
Construct a DHCPv6 option from a list of characters. More... | |
#define | DHCPV6_BYTE(value) DHCPV6_OPTION ( DHCPV6_BYTE_VALUE ( value ) ) |
Construct a byte-valued DHCPv6 option. More... | |
#define | DHCPV6_WORD(value) DHCPV6_OPTION ( DHCPV6_WORD_VALUE ( value ) ) |
Construct a word-valued DHCPv6 option. More... | |
#define | DHCPV6_DWORD(value) DHCPV6_OPTION ( DHCPV6_DWORD_VALUE ( value ) ) |
Construct a dword-valued DHCPv6 option. More... | |
#define | DHCPV6_SOLICIT 1 |
DHCPv6 solicitation. More... | |
#define | DHCPV6_ADVERTISE 2 |
DHCPv6 advertisement. More... | |
#define | DHCPV6_REQUEST 3 |
DHCPv6 request. More... | |
#define | DHCPV6_REPLY 7 |
DHCPv6 reply. More... | |
#define | DHCPV6_INFORMATION_REQUEST 11 |
DHCPv6 information request. More... | |
#define | DHCPV6_SETTINGS_NAME "dhcpv6" |
DHCPv6 settings block name. More... | |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static void | ipv6_all_dhcp_relay_and_servers (struct in6_addr *addr) |
Construct all-DHCP-relay-agents-and-servers multicast address. More... | |
int | start_dhcpv6 (struct interface *job, struct net_device *netdev, int stateful) |
Start DHCPv6. More... | |
Dynamic Host Configuration Protocol for IPv6.
Definition in file dhcpv6.h.
#define DHCPV6_DUID_UUID 4 |
#define DHCPV6_IA_NA 3 |
#define DHCPV6_IAADDR 5 |
#define DHCPV6_OPTION_REQUEST 6 |
#define DHCPV6_VENDOR_CLASS_PXE 343 |
DHCPv6 PXE vendor class.
The DHCPv6 vendor class includes a field for an IANA enterprise number. The EDK2 codebase uses the value 343, with the comment:
TODO: IANA TBD: temporarily using Intel's
Since this "temporarily" has applied since at least 2010, we assume that it has become a de facto standard.
#define DHCPV6_DNS_SERVERS 23 |
#define DHCPV6_DOMAIN_LIST 24 |
#define DHCPV6_BOOTFILE_PARAM 60 |
#define DHCPV6_CLIENT_ARCHITECTURE 61 |
#define DHCPV6_CLIENT_NDI 62 |
#define DHCPV6_LOG_SERVERS 0xffffffffUL |
#define DHCPV6_WORD_VALUE | ( | value | ) | DHCPV6_BYTE_VALUE ( (value) >> 8 ), DHCPV6_BYTE_VALUE ( (value) >> 0 ) |
#define DHCPV6_DWORD_VALUE | ( | value | ) | DHCPV6_WORD_VALUE ( (value) >> 16 ), DHCPV6_WORD_VALUE ( (value) >> 0 ) |
#define DHCPV6_CODE | ( | code | ) | DHCPV6_WORD_VALUE ( code ) |
#define DHCPV6_LEN | ( | len | ) | DHCPV6_WORD_VALUE ( len ) |
#define DHCPV6_OPTION | ( | ... | ) | DHCPV6_LEN ( VA_ARG_COUNT ( __VA_ARGS__ ) ), __VA_ARGS__ |
#define DHCPV6_STRING | ( | ... | ) | DHCPV6_OPTION ( __VA_ARGS__ ) |
#define DHCPV6_BYTE | ( | value | ) | DHCPV6_OPTION ( DHCPV6_BYTE_VALUE ( value ) ) |
#define DHCPV6_WORD | ( | value | ) | DHCPV6_OPTION ( DHCPV6_WORD_VALUE ( value ) ) |
#define DHCPV6_DWORD | ( | value | ) | DHCPV6_OPTION ( DHCPV6_DWORD_VALUE ( value ) ) |
#define DHCPV6_INFORMATION_REQUEST 11 |
#define DHCPV6_SETTINGS_NAME "dhcpv6" |
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
inlinestatic |
Construct all-DHCP-relay-agents-and-servers multicast address.
addr | Zeroed address to construct |
Definition at line 272 of file dhcpv6.h.
Referenced by start_dhcpv6().
int start_dhcpv6 | ( | struct interface * | job, |
struct net_device * | netdev, | ||
int | stateful | ||
) |
Start DHCPv6.
job | Job control interface |
netdev | Network device |
stateful | Perform stateful address autoconfiguration |
rc | Return status code |
Definition at line 921 of file dhcpv6.c.
References AF_INET6, dhcpv6_session::client_duid, crc32_le(), currticks(), DBGC, DHCPV6_CLIENT_PORT, DHCPV6_DUID_UUID, dhcpv6_finished(), dhcpv6_free(), dhcpv6_information_request, dhcpv6_job_desc, DHCPV6_SERVER_PORT, dhcpv6_set_state(), dhcpv6_solicit, dhcpv6_timer_expired(), dhcpv6_xfer_desc, ENOMEM, fetch_uuid_setting(), htons, dhcpv6_session::iaid, intf_init(), intf_plug_plug(), ipv6_all_dhcp_relay_and_servers(), dhcpv6_session::job, len, net_device::ll_addr, ll_protocol::ll_addr_len, net_device::ll_protocol, memcpy(), memset(), net_device::name, netdev, dhcpv6_session::netdev, netdev_get(), NULL, random(), rc, ref_init, ref_put, dhcpv6_session::refcnt, sa, net_device::scope_id, sin6, SOCK_DGRAM, dhcpv6_session::start, strerror(), dhcpv6_session::timer, dhcpv6_duid_uuid::type, dhcpv6_duid_uuid::uuid, dhcpv6_session::xfer, xfer_open_socket(), dhcpv6_session::xid, and zalloc().
Referenced by ipv6conf_rx_router_advertisement().