]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1405] do not set reservation mode if not explicitly specified
authorRazvan Becheriu <razvan@isc.org>
Thu, 15 Oct 2020 14:04:23 +0000 (17:04 +0300)
committerRazvan Becheriu <razvan@isc.org>
Wed, 18 Nov 2020 13:55:23 +0000 (15:55 +0200)
src/lib/dhcpsrv/parsers/base_network_parser.cc

index 2b3edf206f7b0932b0bbe3d45dc5a12bb08aefcd..c4954a59549e6bb546c07ab4be0270f16152c275 100644 (file)
@@ -232,17 +232,17 @@ BaseNetworkParser::parseHostReservationMode(const data::ConstElementPtr& network
 void
 BaseNetworkParser::parseHostReservationModes(const data::ConstElementPtr& network_data,
                                              NetworkPtr& network) {
+    bool found = false;
+    if (network_data->contains("reservations-out-of-pool")) {
+        found = true;
+    }
+    if (network_data->contains("reservations-in-subnet")) {
+        found = true;
+    }
+    if (network_data->contains("reservations-global")) {
+        found = true;
+    }
     if (network_data->contains("reservation-mode")) {
-        bool found = false;
-        if (network_data->contains("reservations-out-of-pool")) {
-            found = true;
-        }
-        if (network_data->contains("reservations-in-subnet")) {
-            found = true;
-        }
-        if (network_data->contains("reservations-global")) {
-            found = true;
-        }
         if (found) {
             isc_throw(DhcpConfigError, "invalid use of both 'reservation-mode'"
                                        " and one of 'reservations-out-of-pool'"
@@ -250,6 +250,9 @@ BaseNetworkParser::parseHostReservationModes(const data::ConstElementPtr& networ
                                        " 'reservations-global' parameters");
         }
     }
+    if (!found) {
+        return;
+    }
     try {
         HostReservationModesParser parser;
         Network::HRMode flags = parser.parse(network_data);