]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2536] Initial definition of DNR options
authorPiotrek Zadroga <piotrek@isc.org>
Thu, 23 Mar 2023 11:08:55 +0000 (12:08 +0100)
committerPiotrek Zadroga <piotrek@isc.org>
Thu, 4 May 2023 21:17:18 +0000 (23:17 +0200)
src/lib/dhcp/dhcp4.h
src/lib/dhcp/dhcp6.h
src/lib/dhcp/std_option_defs.h

index 5c163d0ba6b7ffe4fe2f7204dcd598c6447c7f8e..1a320667a868b81305d16fbbae88b88475c4f4db 100644 (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 */
index 061a1ddf0929c892d3c18c74d7400cc902dd311c..fe22236cf301ebe73466538e631044c862f998ec 100644 (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 */
 };
 
 /*
index f2057d710b43971153f004a33f2f0ad5df29561c..abe28a7f984caa29e5fb6390c18f1e17932bf0d2 100644 (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