From a43f9155f6905fae7bd965045baa9120c59f58a0 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Wed, 26 Jul 2017 22:14:01 +0200 Subject: [PATCH] [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. --- src/lib/dhcpsrv/parsers/option_data_parser.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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); -- 2.47.2