]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5016] Prefix Exclude option is now defined as IPv6 prefix.
authorMarcin Siodelski <marcin@isc.org>
Sat, 29 Oct 2016 11:31:52 +0000 (13:31 +0200)
committerMarcin Siodelski <marcin@isc.org>
Sat, 29 Oct 2016 11:31:52 +0000 (13:31 +0200)
src/lib/dhcp/option_definition.cc
src/lib/dhcp/std_option_defs.h
src/lib/dhcp/tests/libdhcp++_unittest.cc

index 30f1a4370ceb3bb159806114cadba0e961c315ed..aa2d949f2cc4838117b474fbe8d7d42cdfc59d6e 100644 (file)
 #include <dhcp/option4_addrlst.h>
 #include <dhcp/option4_client_fqdn.h>
 #include <dhcp/option6_addrlst.h>
+#include <dhcp/option6_client_fqdn.h>
 #include <dhcp/option6_ia.h>
 #include <dhcp/option6_iaaddr.h>
 #include <dhcp/option6_iaprefix.h>
-#include <dhcp/option6_client_fqdn.h>
+#include <dhcp/option6_pdexclude.h>
 #include <dhcp/option6_status_code.h>
 #include <dhcp/option_custom.h>
 #include <dhcp/option_definition.h>
@@ -778,6 +779,9 @@ OptionDefinition::factorySpecialFormatOption(Option::Universe u,
         } else if (getCode() == D6O_BOOTFILE_PARAM && haveOpaqueDataTuplesFormat()) {
             // Bootfile params (option code 60)
             return (OptionPtr(new OptionOpaqueDataTuples(Option::V6, getCode(), begin, end)));
+        } else if ((getCode() == D6O_PD_EXCLUDE) && haveType(OPT_IPV6_PREFIX_TYPE)) {
+            // Prefix Exclude (option code 67)
+            return (OptionPtr(new Option6PDExclude(begin, end)));
         }
     } else {
         if ((getCode() == DHO_FQDN) && haveFqdn4Format()) {
index c40c2e5332e075243726cf79cec2d627e6cbc7e2..cc0e2fc43aa88b4446677a9edd1ace7f1b71ef35 100644 (file)
@@ -361,7 +361,7 @@ const OptionDefParams STANDARD_V6_OPTION_DEFINITIONS[] = {
     { "erp-local-domain-name", D6O_ERP_LOCAL_DOMAIN_NAME, OPT_FQDN_TYPE, false,
       NO_RECORD_DEF, "" },
     { "rsoo", D6O_RSOO, OPT_EMPTY_TYPE, false, NO_RECORD_DEF, "rsoo-opts" },
-    { "pd-exclude", D6O_PD_EXCLUDE, OPT_BINARY_TYPE, false, NO_RECORD_DEF, "" },
+    { "pd-exclude", D6O_PD_EXCLUDE, OPT_IPV6_PREFIX_TYPE, false, NO_RECORD_DEF, "" },
     { "client-linklayer-addr", D6O_CLIENT_LINKLAYER_ADDR, OPT_BINARY_TYPE, false,
       NO_RECORD_DEF, "" },
     { "dhcpv4-message", D6O_DHCPV4_MSG, OPT_BINARY_TYPE, false, NO_RECORD_DEF, "" },
index 227bf8e1faf36f588b5ebcc82a19123ef5c6e67a..50fa4e3a82b12e6c3d0e2cb79a77cb72e2d7ae31 100644 (file)
@@ -18,6 +18,7 @@
 #include <dhcp/option6_ia.h>
 #include <dhcp/option6_iaaddr.h>
 #include <dhcp/option6_iaprefix.h>
+#include <dhcp/option6_pdexclude.h>
 #include <dhcp/option6_status_code.h>
 #include <dhcp/option_custom.h>
 #include <dhcp/option_int.h>
@@ -1562,6 +1563,9 @@ TEST_F(LibDhcpTest, stdOptionDefs6) {
                                     typeid(OptionCustom),
                                     "rsoo-opts");
 
+    LibDhcpTest::testStdOptionDefs6(D6O_PD_EXCLUDE, begin, end,
+                                    typeid(Option6PDExclude));
+
     LibDhcpTest::testStdOptionDefs6(D6O_ERP_LOCAL_DOMAIN_NAME,
                                     fqdn_buf.begin(), fqdn_buf.end(),
                                     typeid(OptionCustom));