From: Marcin Siodelski Date: Sat, 29 Oct 2016 11:31:52 +0000 (+0200) Subject: [5016] Prefix Exclude option is now defined as IPv6 prefix. X-Git-Tag: trac5057_base~1^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=377e3644ea8315103d2908ae4a13a3fdd36ba77e;p=thirdparty%2Fkea.git [5016] Prefix Exclude option is now defined as IPv6 prefix. --- diff --git a/src/lib/dhcp/option_definition.cc b/src/lib/dhcp/option_definition.cc index 30f1a4370c..aa2d949f2c 100644 --- a/src/lib/dhcp/option_definition.cc +++ b/src/lib/dhcp/option_definition.cc @@ -10,10 +10,11 @@ #include #include #include +#include #include #include #include -#include +#include #include #include #include @@ -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()) { diff --git a/src/lib/dhcp/std_option_defs.h b/src/lib/dhcp/std_option_defs.h index c40c2e5332..cc0e2fc43a 100644 --- a/src/lib/dhcp/std_option_defs.h +++ b/src/lib/dhcp/std_option_defs.h @@ -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, "" }, diff --git a/src/lib/dhcp/tests/libdhcp++_unittest.cc b/src/lib/dhcp/tests/libdhcp++_unittest.cc index 227bf8e1fa..50fa4e3a82 100644 --- a/src/lib/dhcp/tests/libdhcp++_unittest.cc +++ b/src/lib/dhcp/tests/libdhcp++_unittest.cc @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -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));