From: Marcin Siodelski Date: Wed, 26 Jul 2017 20:14:01 +0000 (+0200) Subject: [5315] Option data parser checks for runtime definitions in LibDHCP. X-Git-Tag: trac5124a_base~5^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a43f9155f6905fae7bd965045baa9120c59f58a0;p=thirdparty%2Fkea.git [5315] Option data parser checks for runtime definitions in LibDHCP. Previously, it checked for them in the staging configuration but this is not going to work for control commands which bypass the staging configuration step. --- diff --git a/src/lib/dhcpsrv/parsers/option_data_parser.cc b/src/lib/dhcpsrv/parsers/option_data_parser.cc index fa66a753c6..bce9da0094 100644 --- a/src/lib/dhcpsrv/parsers/option_data_parser.cc +++ b/src/lib/dhcpsrv/parsers/option_data_parser.cc @@ -180,9 +180,16 @@ OptionDataParser::findOptionDefinition(const std::string& option_space, } if (!def) { - // Check if this is an option specified by a user. - def = CfgMgr::instance().getStagingCfg()->getCfgOptionDef() - ->get(option_space, search_key); + // Check if this is an option specified by a user. We used to + // check that in the staging configuration, but when the configuration + // changes are caused by a command the staging configuration doesn't + // exist. What is always available is the container holding runtime + // option definitions in LibDHCP. It holds option definitions from + // the staging configuration in case of the full reconfiguration or + // the definitions from the current configuration in case there is + // no staging configuration (after configuration commit). In other + // words, runtime options are always the ones that we need here. + def = LibDHCP::getRuntimeOptionDef(option_space, search_key); } return (def);