|
@@ -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<std::string, ConstElementPtr>::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<std::string, ConstElementPtr>::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());
|