2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-05 00:15:17 +00:00

[#2536] Initial definition of DNR options

This commit is contained in:
Piotrek Zadroga
2023-03-23 12:08:55 +01:00
parent 95b16c7cd7
commit 03fdf92d17
3 changed files with 24 additions and 3 deletions

View File

@@ -214,7 +214,9 @@ enum DHCPOptionType {
DHO_V4_PORTPARAMS = 159, /* RFC7618 */
// 160 used to be assigned in RFC7710, but was removed in RFC8910
// The Captive Portal option now uses code 114.
// 160-209 are removed/unassigned
// DHO_MUD_URL_V4 = 161, /* RFC8520 */
DHO_V4_DNR = 162, /* RFC-ietf-add-dnr-13 */
// 163-209 are removed/unassigned
// DHO_PATH_PREFIX = 210, /* RFC5071 */
// DHO_REBOOT_TIME = 211, /* RFC5071 */
DHO_6RD = 212, /* RFC5969 */

View File

@@ -155,7 +155,8 @@ enum DHCPv6OptionType {
D6O_RELAY_SOURCE_PORT = 135, /* RFC8357 */
D60_V6_SZTP_REDIRECT = 136, /* RFC8572 */
// Option codes 137-142 are unassigned.
D6O_IPV6_ADDRESS_ANDSF = 143 /* RFC6153 */
D6O_IPV6_ADDRESS_ANDSF = 143, /* RFC6153 */
D6O_V6_DNR = 144 /* RFC-ietf-add-dnr-13 */
};
/*

View File

@@ -107,6 +107,13 @@ RECORD_DECL(V4_PORTPARAMS_RECORDS, OPT_UINT8_TYPE, OPT_PSID_TYPE);
RECORD_DECL(OPT_6RD_RECORDS, OPT_UINT8_TYPE, OPT_UINT8_TYPE,
OPT_IPV6_ADDRESS_TYPE, OPT_IPV4_ADDRESS_TYPE);
// RFC-draft-ietf-add-dnr DHCPv4 DNR option.
//
// DNR Instance Data Length (2 octets), Service Priority (2 octets), ADN Length (1 octet),
// authentication-domain-name FQDN(s), Addr Length (1 octet), IPv4 address(es), SvcParams
RECORD_DECL(V4_DNR_RECORDS, OPT_UINT16_TYPE, OPT_UINT16_TYPE, OPT_UINT8_TYPE, OPT_FQDN_TYPE,
OPT_UINT8_TYPE, OPT_IPV4_ADDRESS_TYPE, OPT_BINARY_TYPE);
/// @brief Definitions of standard DHCPv4 options.
const OptionDefParams STANDARD_V4_OPTION_DEFINITIONS[] = {
{ "subnet-mask", DHO_SUBNET_MASK, DHCP4_OPTION_SPACE,
@@ -366,6 +373,8 @@ const OptionDefParams STANDARD_V4_OPTION_DEFINITIONS[] = {
OPT_UINT8_TYPE, false, NO_RECORD_DEF, "" },
{ "v4-portparams", DHO_V4_PORTPARAMS, DHCP4_OPTION_SPACE, OPT_RECORD_TYPE,
false, RECORD_DEF(V4_PORTPARAMS_RECORDS), "" },
{ "v4-dnr", DHO_V4_DNR, DHCP4_OPTION_SPACE, OPT_RECORD_TYPE,
true, RECORD_DEF(V4_DNR_RECORDS), "" },
{ "option-6rd", DHO_6RD, DHCP4_OPTION_SPACE, OPT_RECORD_TYPE, true,
RECORD_DEF(OPT_6RD_RECORDS), "" },
{ "v4-access-domain", DHO_V4_ACCESS_DOMAIN, DHCP4_OPTION_SPACE,
@@ -487,6 +496,13 @@ RECORD_DECL(SIGNATURE_RECORDS, OPT_UINT8_TYPE, OPT_UINT8_TYPE,
// Three 1 byte fileds to describe a network interface: type, major and minor
RECORD_DECL(CLIENT_NII_RECORDS, OPT_UINT8_TYPE, OPT_UINT8_TYPE, OPT_UINT8_TYPE);
// RFC-draft-ietf-add-dnr DHCPv6 DNR option.
//
// Service Priority (2 octets), ADN Length (2 octets),
// authentication-domain-name FQDN(s), Addr Length (2 octets), IPv6 address(es), SvcParams
RECORD_DECL(V6_DNR_RECORDS, OPT_UINT16_TYPE, OPT_UINT16_TYPE, OPT_FQDN_TYPE, OPT_UINT16_TYPE,
OPT_IPV6_ADDRESS_TYPE, OPT_BINARY_TYPE);
/// Standard DHCPv6 option definitions.
///
/// @warning in this array, the initializers are provided for all
@@ -649,7 +665,9 @@ const OptionDefParams STANDARD_V6_OPTION_DEFINITIONS[] = {
{ "s46-cont-mapt", D6O_S46_CONT_MAPT, DHCP6_OPTION_SPACE, OPT_EMPTY_TYPE,
false, NO_RECORD_DEF, MAPT_V6_OPTION_SPACE },
{ "s46-cont-lw", D6O_S46_CONT_LW, DHCP6_OPTION_SPACE, OPT_EMPTY_TYPE,
false, NO_RECORD_DEF, LW_V6_OPTION_SPACE }
false, NO_RECORD_DEF, LW_V6_OPTION_SPACE },
{ "v6-dnr", D6O_V6_DNR, DHCP6_OPTION_SPACE, OPT_RECORD_TYPE,
false, RECORD_DEF(V6_DNR_RECORDS), "" }
// @todo There is still a bunch of options for which we have to provide
// definitions but we don't do it because they are not really