]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1245] Forced shared-networks to be handled before (global) subnets
authorFrancis Dupont <fdupont@isc.org>
Wed, 3 Jun 2020 18:21:00 +0000 (20:21 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 17 Jun 2020 09:27:52 +0000 (11:27 +0200)
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp6/json_config_parser.cc

index 43f95cda0b40bdd9dcc6ce9d991ad3dae522f0de..93a6623719ca833bc670b6e972e77e08208b2490 100644 (file)
@@ -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";
index b2848188da36734a51d8ac481bf752b7bf973f13..a525f257fd9a84be83cd320d1fa546253ff576ab 100644 (file)
@@ -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";