isc_throw(DuplicateOptionDefinition, "option definition with code '"
<< def->getCode() << "' already exists in option"
" space '" << option_space << "'");
+ } else if (get(option_space, def->getName())) {
+ isc_throw(DuplicateOptionDefinition, "option definition with name '"
+ << def->getName() << "' already exists in option"
+ " space '" << option_space << "'");
// Must not override standard option definition.
} else if (LibDHCP::getOptionDef(option_space, def->getCode())) {
isc_throw(BadValue, "unable to override definition of option '"
<< def->getCode() << "' in standard option space '"
<< option_space << "'");
+ } else if (LibDHCP::getOptionDef(option_space, def->getName())) {
+ isc_throw(BadValue, "unable to override definition of option '"
+ << def->getName() << "' in standard option space '"
+ << option_space << "'");
}
// Add the definition.
option_definitions_.addItem(def, option_space);
def.reset(new OptionDefinition("routers", DHO_ROUTERS, "uint32"));
EXPECT_THROW(cfg.add(def, DHCP4_OPTION_SPACE), isc::BadValue);
+ // Check code duplicate (same code, different name).
+ def.reset(new OptionDefinition("routers-bis", DHO_ROUTERS, "uint32"));
+ EXPECT_THROW(cfg.add(def, DHCP4_OPTION_SPACE), isc::BadValue);
+
+ // Check name duplicate (different code, same name).
+ def.reset(new OptionDefinition("routers", 170, "uint32"));
+ EXPECT_THROW(cfg.add(def, DHCP4_OPTION_SPACE), isc::BadValue);
+
/// There is no definition for unassigned option 170.
def.reset(new OptionDefinition("unassigned-option-170", 170, "string"));
EXPECT_NO_THROW(cfg.add(def, DHCP4_OPTION_SPACE));