]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3309] Allow creation of definition for std options without def in libdhcp.
authorMarcin Siodelski <marcin@isc.org>
Tue, 4 Feb 2014 16:33:52 +0000 (17:33 +0100)
committerMarcin Siodelski <marcin@isc.org>
Tue, 4 Feb 2014 16:33:52 +0000 (17:33 +0100)
src/lib/dhcpsrv/cfgmgr.cc

index 8d41a15320e2e15b7048addbe8555c6e331cba91..9e5bc2e40a495ec956b1bbfa83515ad7406085ca 100644 (file)
@@ -74,12 +74,15 @@ CfgMgr::addOptionDef(const OptionDefinitionPtr& def,
         isc_throw(DuplicateOptionDefinition, "option definition already added"
                   << " to option space " << option_space);
 
+    // We must not override standard (assigned) option for which there is a
+    // definition in libdhcp++. The standard options belong to dhcp4 or dhcp6
+    // option space.
     } else if ((option_space == "dhcp4" &&
-                LibDHCP::isStandardOption(Option::V4, def->getCode())) ||
+                LibDHCP::isStandardOption(Option::V4, def->getCode()) &&
+                LibDHCP::getOptionDef(Option::V4, def->getCode())) ||
                (option_space == "dhcp6" &&
-                LibDHCP::isStandardOption(Option::V6, def->getCode()))) {
-        // We must not override standard (assigned) option. The standard options
-        // belong to dhcp4 or dhcp6 option space.
+                LibDHCP::isStandardOption(Option::V6, def->getCode()) &&
+                LibDHCP::getOptionDef(Option::V6, def->getCode()))) {
         isc_throw(BadValue, "unable to override definition of option '"
                   << def->getCode() << "' in standard option space '"
                   << option_space << "'.");