From: Francis Dupont Date: Wed, 3 Jun 2020 18:21:00 +0000 (+0200) Subject: [#1245] Forced shared-networks to be handled before (global) subnets X-Git-Tag: Kea-1.7.9~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b82d5ab0b81ffbbe737ba13e1dd5455a2bfd0c40;p=thirdparty%2Fkea.git [#1245] Forced shared-networks to be handled before (global) subnets --- diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 43f95cda0b..93a6623719 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -508,17 +508,10 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, } } - ConstElementPtr subnet4 = mutable_cfg->get("subnet4"); - if (subnet4) { - parameter_name = "subnet4"; - Subnets4ListConfigParser subnets_parser; - // parse() returns number of subnets parsed. We may log it one day. - subnets_parser.parse(srv_cfg, subnet4); - } - // This parser is used in several places. Dhcp4ConfigParser global_parser; + // Keep relative orders of shared networks and subnets. ConstElementPtr shared_networks = mutable_cfg->get("shared-networks"); if (shared_networks) { parameter_name = "shared-networks"; @@ -536,6 +529,14 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, global_parser.copySubnets4(srv_cfg->getCfgSubnets4(), cfg); } + ConstElementPtr subnet4 = mutable_cfg->get("subnet4"); + if (subnet4) { + parameter_name = "subnet4"; + Subnets4ListConfigParser subnets_parser; + // parse() returns number of subnets parsed. We may log it one day. + subnets_parser.parse(srv_cfg, subnet4); + } + ConstElementPtr reservations = mutable_cfg->get("reservations"); if (reservations) { parameter_name = "reservations"; diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index b2848188da..a525f257fd 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -632,17 +632,10 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, } } - ConstElementPtr subnet6 = mutable_cfg->get("subnet6"); - if (subnet6) { - parameter_name = "subnet6"; - Subnets6ListConfigParser subnets_parser; - // parse() returns number of subnets parsed. We may log it one day. - subnets_parser.parse(srv_config, subnet6); - } - // This parser is used in several places. Dhcp6ConfigParser global_parser; + // Keep relative orders of shared networks and subnets. ConstElementPtr shared_networks = mutable_cfg->get("shared-networks"); if (shared_networks) { parameter_name = "shared-networks"; @@ -660,6 +653,14 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, global_parser.copySubnets6(srv_config->getCfgSubnets6(), cfg); } + ConstElementPtr subnet6 = mutable_cfg->get("subnet6"); + if (subnet6) { + parameter_name = "subnet6"; + Subnets6ListConfigParser subnets_parser; + // parse() returns number of subnets parsed. We may log it one day. + subnets_parser.parse(srv_config, subnet6); + } + ConstElementPtr reservations = mutable_cfg->get("reservations"); if (reservations) { parameter_name = "reservations";