From: Marcin Siodelski Date: Tue, 17 Mar 2015 11:19:59 +0000 (+0100) Subject: [3744] Lease database parser executed as the last one for DHCPv6 server. X-Git-Tag: kea-0.9.1~23^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b35be4576fcd079093ccb64337411f0b95950fe3;p=thirdparty%2Fkea.git [3744] Lease database parser executed as the last one for DHCPv6 server. --- diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index b170b534b1..315de5d08c 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -632,6 +632,7 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) { ParserPtr subnet_parser; ParserPtr option_parser; ParserPtr iface_parser; + ParserPtr leases_parser; // Some of the parsers alter state of the system that can't easily // be undone. (Or alter it in a way such that undoing the change @@ -668,6 +669,8 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) { .arg(config_pair.first); if (config_pair.first == "subnet6") { subnet_parser = parser; + } else if (config_pair.first == "lease-database") { + leases_parser = parser; } else if (config_pair.first == "option-data") { option_parser = parser; } else if (config_pair.first == "hooks-libraries") { @@ -703,7 +706,7 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) { option_parser->commit(); } - // The subnet parser is the last one to be run. + // The subnet parser is the next one to be run. std::map::const_iterator subnet_config = values_map.find("subnet6"); if (subnet_config != values_map.end()) { @@ -711,6 +714,15 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) { subnet_parser->build(subnet_config->second); } + // The lease database parser is the last to be run. + std::map::const_iterator leases_config = + values_map.find("lease-database"); + if (leases_config != values_map.end()) { + config_pair.first = "lease-database"; + leases_parser->build(leases_config->second); + leases_parser->commit(); + } + } catch (const isc::Exception& ex) { LOG_ERROR(dhcp6_logger, DHCP6_PARSER_FAIL) .arg(config_pair.first).arg(ex.what());