]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[295-min-max-lease-time-configuration-options] Removed default- keywords
authorFrancis Dupont <fdupont@isc.org>
Fri, 17 May 2019 11:07:42 +0000 (13:07 +0200)
committerFrancis Dupont <fdupont@isc.org>
Sat, 22 Jun 2019 14:05:23 +0000 (10:05 -0400)
12 files changed:
doc/examples/kea4/all-keys-current.json
doc/examples/kea6/all-keys-current.json
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/lib/dhcpsrv/alloc_engine.cc
src/lib/dhcpsrv/alloc_engine.h
src/lib/dhcpsrv/network.cc
src/lib/dhcpsrv/parsers/base_network_parser.cc
src/lib/dhcpsrv/parsers/simple_parser4.cc
src/lib/dhcpsrv/parsers/simple_parser6.cc

index a5181d7a7f81e8059ecf3eeff06181b56f6c32e3..56d66744b80428b4d2e3e3c6eebe87f65d46e52c 100644 (file)
                         // Subnet prefix.
                         "subnet": "192.0.0.0/8",
 
-                        // Subnet level valid lifetime.
+                        // Subnet level (default) valid lifetime.
                         "valid-lifetime": 6000,
 
-                        // Subnet level default valid lifetime.
-                        // (in fact only an alias of valid lifetime)
-                        "default-valid-lifetime": 6000,
-
                         // Subnet level min valid lifetime.
                         "min-valid-lifetime": 4000,
 
                     }
                 ],
 
-                // Shared network level valid lifetime.
+                // Shared network level (default) valid lifetime.
                 "valid-lifetime": 6001,
 
-                // Shared network level default valid lifetime.
-                // (in fact only an alias of valid lifetime)
-                "default-valid-lifetime": 6001,
-
                 // Subnet level min valid lifetime.
                 "min-valid-lifetime": 4001,
 
         // List of IPv4 subnets which don't belong to any shared network.
         "subnet4": [],
 
-        // Global valid lifetime value.
+        // Global valid (default) lifetime value.
         "valid-lifetime": 6000,
 
-        // Global default valid lifetime value.
-        // (in fact only an alias of valid lifetime)
-        "default-valid-lifetime": 6000,
-
         // Global min valid lifetime value.
         "min-valid-lifetime": 4000,
 
index 9f827b1ea92cb158bc6765b7dcd5c016d67e9668..20a8679693de4e2e281b62028d27cc65234df5c8 100644 (file)
             }
         ],
 
-        // Global value of the preferred lifetime.
+        // Global (default) value of the preferred lifetime.
         "preferred-lifetime": 50,
 
-        // Global default value of the preferred lifetime.
-        // (in fact only an alias of preferred lifetime)
-        "default-preferred-lifetime": 50,
-
         // Global min value of the preferred lifetime.
         "min-preferred-lifetime": 40,
 
                 // List of shared network specific DHCP options.
                 "option-data": [],
 
-                // Shared network specific preferred lifetime.
+                // Shared network specific (default) preferred lifetime.
                 "preferred-lifetime": 2000,
 
-                // Shared network specific default preferred lifetime.
-                // (in fact only an alias of preferred lifetime)
-                "default-preferred-lifetime": 2000,
-
                 // Shared network specific min preferred lifetime.
                 "min-preferred-lifetime": 1500,
 
                             }
                         ],
 
-                        // Subnet specific preferred lifetime.
+                        // Subnet specific (default) preferred lifetime.
                         "preferred-lifetime": 2000,
 
-                        // Subnet specific default preferred lifetime.
-                        // (in fact only an alias of preferred lifetime)
-                        "default-preferred-lifetime": 2000,
-
                         // Subnet specific min preferred lifetime.
                         "min-preferred-lifetime": 1500,
 
                         // Subnet prefix.
                         "subnet": "2001:db8::/32",
 
-                        // Subnet level valid lifetime.
+                        // Subnet level (default) valid lifetime.
                         "valid-lifetime": 6000,
 
-                        // Subnet level default valid lifetime.
-                        // (in fact only an alias of valid lifetime)
-                        "default-valid-lifetime": 6000,
-
                         // Subnet level min valid lifetime.
                         "min-valid-lifetime": 4000,
 
                     }
                 ],
 
-                // Shared network level valid lifetime.
+                // Shared network level (default) valid lifetime.
                 "valid-lifetime": 6001,
 
-                // Shared network level default valid lifetime.
-                // (in fact only an alias of valid lifetime)
-                "default-valid-lifetime": 6001,
-
                 // Shared network level min valid lifetime.
                 "min-valid-lifetime": 4001,
 
         // List of IPv6 subnets which don't belong to any shared network.
         "subnet6": [],
 
-        // Global valid lifetime value.
+        // Global (default) valid lifetime value.
         "valid-lifetime": 6000,
 
-        // Global default valid lifetime value.
-        // (in fact only an alias of valid lifetime)
-        "default-valid-lifetime": 6000,
-
         // Global min valid lifetime value.
         "min-valid-lifetime": 4000,
 
index 9f0a872382c06bff32bb15f374b9a3e0d8d973bb..c046eae6aa947b2c1ed9e1dada1a1bb82cad9014 100644 (file)
@@ -592,17 +592,6 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
-\"default-valid-lifetime\" {
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP4:
-    case isc::dhcp::Parser4Context::SUBNET4:
-    case isc::dhcp::Parser4Context::SHARED_NETWORK:
-        return isc::dhcp::Dhcp4Parser::make_DEFAULT_VALID_LIFETIME(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("default-valid-lifetime", driver.loc_);
-    }
-}
-
 \"min-valid-lifetime\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
index 6698870de91a988e6b03f6866bcb390edacc8a34..36b8f1f489c21a199298ee4bdcd9c7841af1a971 100644 (file)
@@ -102,7 +102,6 @@ using namespace std;
   TCP_NODELAY "tcp-nodelay"
 
   VALID_LIFETIME "valid-lifetime"
-  DEFAULT_VALID_LIFETIME "default-valid-lifetime"
   MIN_VALID_LIFETIME "min-valid-lifetime"
   MAX_VALID_LIFETIME "max-valid-lifetime"
   RENEW_TIMER "renew-timer"
@@ -444,7 +443,6 @@ global_params: global_param
 // These are the parameters that are allowed in the top-level for
 // Dhcp4.
 global_param: valid_lifetime
-            | default_valid_lifetime
             | min_valid_lifetime
             | max_valid_lifetime
             | renew_timer
@@ -493,11 +491,6 @@ valid_lifetime: VALID_LIFETIME COLON INTEGER {
     ctx.stack_.back()->set("valid-lifetime", prf);
 };
 
-default_valid_lifetime: DEFAULT_VALID_LIFETIME COLON INTEGER {
-    ElementPtr prf(new IntElement($3, ctx.loc2pos(@3)));
-    ctx.stack_.back()->set("default-valid-lifetime", prf);
-};
-
 min_valid_lifetime: MIN_VALID_LIFETIME COLON INTEGER {
     ElementPtr prf(new IntElement($3, ctx.loc2pos(@3)));
     ctx.stack_.back()->set("min-valid-lifetime", prf);
index 773927167b57e864c17008d416fd205946884591..28cf46bdcc6b247e30eabcf2775908e94b8a20e1 100644 (file)
@@ -788,17 +788,6 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
-\"default-preferred-lifetime\" {
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP6:
-    case isc::dhcp::Parser6Context::SUBNET6:
-    case isc::dhcp::Parser6Context::SHARED_NETWORK:
-        return isc::dhcp::Dhcp6Parser::make_DEFAULT_PREFERRED_LIFETIME(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("default-preferred-lifetime", driver.loc_);
-    }
-}
-
 \"min-preferred-lifetime\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -832,17 +821,6 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
-\"default-valid-lifetime\" {
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP6:
-    case isc::dhcp::Parser6Context::SUBNET6:
-    case isc::dhcp::Parser6Context::SHARED_NETWORK:
-        return isc::dhcp::Dhcp6Parser::make_DEFAULT_VALID_LIFETIME(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("default-valid-lifetime", driver.loc_);
-    }
-}
-
 \"min-valid-lifetime\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
index e2ff93a09bae6b913d1d403955a161f4852435a2..c4744cb227a64c75a94626ceb910b5694be058eb 100644 (file)
@@ -86,11 +86,9 @@ using namespace std;
   TCP_NODELAY "tcp-nodelay"
 
   PREFERRED_LIFETIME "preferred-lifetime"
-  DEFAULT_PREFERRED_LIFETIME "default-preferred-lifetime"
   MIN_PREFERRED_LIFETIME "min-preferred-lifetime"
   MAX_PREFERRED_LIFETIME "max-preferred-lifetime"
   VALID_LIFETIME "valid-lifetime"
-  DEFAULT_VALID_LIFETIME "default-valid-lifetime"
   MIN_VALID_LIFETIME "min-valid-lifetime"
   MAX_VALID_LIFETIME "max-valid-lifetime"
   RENEW_TIMER "renew-timer"
@@ -451,11 +449,9 @@ global_params: global_param
 // Dhcp6.
 global_param: data_directory
             | preferred_lifetime
-            | default_preferred_lifetime
             | min_preferred_lifetime
             | max_preferred_lifetime
             | valid_lifetime
-            | default_valid_lifetime
             | min_valid_lifetime
             | max_valid_lifetime
             | renew_timer
@@ -509,11 +505,6 @@ preferred_lifetime: PREFERRED_LIFETIME COLON INTEGER {
     ctx.stack_.back()->set("preferred-lifetime", prf);
 };
 
-default_preferred_lifetime: DEFAULT_PREFERRED_LIFETIME COLON INTEGER {
-    ElementPtr prf(new IntElement($3, ctx.loc2pos(@3)));
-    ctx.stack_.back()->set("default-preferred-lifetime", prf);
-};
-
 min_preferred_lifetime: MIN_PREFERRED_LIFETIME COLON INTEGER {
     ElementPtr prf(new IntElement($3, ctx.loc2pos(@3)));
     ctx.stack_.back()->set("min-preferred-lifetime", prf);
@@ -529,11 +520,6 @@ valid_lifetime: VALID_LIFETIME COLON INTEGER {
     ctx.stack_.back()->set("valid-lifetime", prf);
 };
 
-default_valid_lifetime: DEFAULT_VALID_LIFETIME COLON INTEGER {
-    ElementPtr prf(new IntElement($3, ctx.loc2pos(@3)));
-    ctx.stack_.back()->set("default-valid-lifetime", prf);
-};
-
 min_valid_lifetime: MIN_VALID_LIFETIME COLON INTEGER {
     ElementPtr prf(new IntElement($3, ctx.loc2pos(@3)));
     ctx.stack_.back()->set("min-valid-lifetime", prf);
@@ -1123,11 +1109,9 @@ subnet6_params: subnet6_param
 
 // This defines a list of allowed parameters for each subnet.
 subnet6_param: preferred_lifetime
-             | default_preferred_lifetime
              | min_preferred_lifetime
              | max_preferred_lifetime
              | valid_lifetime
-             | default_valid_lifetime
              | min_valid_lifetime
              | max_valid_lifetime
              | renew_timer
@@ -1265,12 +1249,10 @@ shared_network_param: name
                     | client_class
                     | require_client_classes
                     | preferred_lifetime
-                    | default_preferred_lifetime
                     | min_preferred_lifetime
                     | max_preferred_lifetime
                     | rapid_commit
                     | valid_lifetime
-                    | default_valid_lifetime
                     | min_valid_lifetime
                     | max_valid_lifetime
                     | user_context
index 70eefed209ad8b2b31da3a859414b54e687d21a7..5573c3403a4cf70c17d251e9765515acd2e2278e 100644 (file)
@@ -373,16 +373,6 @@ AllocEngine::AllocatorPtr AllocEngine::getAllocator(Lease::Type type) {
     return (alloc->second);
 }
 
-AllocEngine::Resource::Resource(const Option6IAAddrPtr& iaaddr)
-    : address_(iaaddr->getAddress()), prefix_len_(128),
-      preferred_(iaaddr->getPreferred()), valid_(iaaddr->getValid()) {
-}
-
-AllocEngine::Resource::Resource(const Option6IAPrefixPtr& iaprefix)
-    : address_(iaprefix->getAddress()), prefix_len_(iaprefix->getLength()),
-      preferred_(iaprefix->getPreferred()), valid_(iaprefix->getValid()) {
-}
-
 } // end of namespace isc::dhcp
 } // end of namespace isc
 
@@ -480,13 +470,21 @@ IAContext::addHint(const asiolink::IOAddress& prefix,
 void
 AllocEngine::ClientContext6::
 IAContext::addHint(const Option6IAAddrPtr& iaaddr) {
-    hints_.push_back(Resource(iaaddr));
+    if (!iaaddr) {
+        isc_throw(BadValue, "IAADDR option pointer is null.");
+    }
+    addHint(iaaddr->getAddress(), 128,
+            iaaddr->getPreferred(), iaaddr->getValid());
 }
 
 void
 AllocEngine::ClientContext6::
 IAContext::addHint(const Option6IAPrefixPtr& iaprefix) {
-    hints_.push_back(Resource(iaprefix));
+    if (!iaprefix) {
+        isc_throw(BadValue, "IAPREFIX option pointer is null.");
+    }
+    addHint(iaprefix->getAddress(), iaprefix->getLength(),
+            iaprefix->getPreferred(), iaprefix->getValid());
 }
 
 void
index f228a9d3fb63aa5f5505a71718f0935c9afa59a6..7e6c4196ffd4b17f64388111844a84a93bfc2068 100644 (file)
@@ -299,16 +299,6 @@ public:
               preferred_(preferred), valid_(valid) {
         }
 
-        /// @brief Constructor from an IAADDR DHCPv6 option.
-        ///
-        /// @param iaaddr The pointer to the IAADDR option
-        Resource(const Option6IAAddrPtr& iaaddr);
-
-        /// @brief Constructor from an IAPREFIX DHCPv6 option.
-        ///
-        /// @param iaprefix The pointer to the IAPREFIX option
-        Resource(const Option6IAPrefixPtr& iaprefix);
-
         /// @brief Returns the address.
         ///
         /// @return the address or prefix
@@ -547,11 +537,13 @@ public:
             /// @brief Convenience method adding new hint from IAADDR option.
             ///
             /// @param iaaddr Pointer to IAADDR.
+            /// @throw BadValue if iaaddr is null.
             void addHint(const Option6IAAddrPtr& iaaddr);
 
             /// @brief Convenience method adding new hint from IAPREFIX option.
             ///
             /// @param iaprefix Pointer to IAPREFIX.
+            /// @throw BadValue if iaprefix is null.
             void addHint(const Option6IAPrefixPtr& iaprefix);
         };
 
index a757ca2c384994f8971910ab7ac509c176584137..03de5094204bac22795f5b146243a64816efa036 100644 (file)
@@ -171,21 +171,15 @@ Network::toElement() const {
 
     // Set valid-lifetime
     if (!valid_.unspecified()) {
-        if ((valid_.get() == valid_.getMin()) &&
-            (valid_.get() == valid_.getMax())) {
-            map->set("valid-lifetime",
-                     Element::create(static_cast<long long>(valid_.get())));
-        } else {
-            map->set("default-valid-lifetime",
-                     Element::create(static_cast<long long>(valid_.get())));
-            if (valid_.get() != valid_.getMin()) {
-                map->set("min-valid-lifetime",
-                         Element::create(static_cast<long long>(valid_.getMin())));
-            }
-            if (valid_.get() != valid_.getMax()) {
-                map->set("max-valid-lifetime",
-                         Element::create(static_cast<long long>(valid_.getMax())));
-            }
+        map->set("valid-lifetime",
+                 Element::create(static_cast<long long>(valid_.get())));
+        if (valid_.get() != valid_.getMin()) {
+            map->set("min-valid-lifetime",
+                     Element::create(static_cast<long long>(valid_.getMin())));
+        }
+        if (valid_.get() != valid_.getMax()) {
+            map->set("max-valid-lifetime",
+                     Element::create(static_cast<long long>(valid_.getMax())));
         }
     }
 
@@ -305,21 +299,15 @@ Network6::toElement() const {
 
     // Set preferred-lifetime
     if (!preferred_.unspecified()) {
-        if ((preferred_.get() == preferred_.getMin()) &&
-            (preferred_.get() == preferred_.getMax())) {
-            map->set("preferred-lifetime",
-                     Element::create(static_cast<long long>(preferred_.get())));
-        } else {
-            map->set("default-preferred-lifetime",
-                     Element::create(static_cast<long long>(preferred_.get())));
-            if (preferred_.get() != preferred_.getMin()) {
-                map->set("min-preferred-lifetime",
-                         Element::create(static_cast<long long>(preferred_.getMin())));
-            }
-            if (preferred_.get() != preferred_.getMax()) {
-                map->set("max-preferred-lifetime",
-                         Element::create(static_cast<long long>(preferred_.getMax())));
-            }
+        map->set("preferred-lifetime",
+                 Element::create(static_cast<long long>(preferred_.get())));
+        if (preferred_.get() != preferred_.getMin()) {
+            map->set("min-preferred-lifetime",
+                     Element::create(static_cast<long long>(preferred_.getMin())));
+        }
+        if (preferred_.get() != preferred_.getMax()) {
+            map->set("max-preferred-lifetime",
+                     Element::create(static_cast<long long>(preferred_.getMax())));
         }
     }
 
index eb162ecf09195dd10501c2e2efbf82ebfd2123be..2c9ab068d8a39c5c6d9e3941d9761ef286added6 100644 (file)
@@ -28,14 +28,6 @@ BaseNetworkParser::parseLifetime(const ConstElementPtr& scope,
         value = getInteger(scope, name);
         has_value = true;
     }
-    if (scope->contains("default-" + name)) {
-        if (has_value) {
-            isc_throw(DhcpConfigError, "have both " << name << " and default-"
-                      << name << " in " << scope->getPosition());
-        }
-        value = getInteger(scope, "default-" + name);
-        has_value = true;
-    }
     if (scope->contains("min-" + name)) {
         min_value = getInteger(scope, "min-" + name);
         has_min = true;
@@ -67,8 +59,8 @@ BaseNetworkParser::parseLifetime(const ConstElementPtr& scope,
         } else {
             // min and max.
             isc_throw(DhcpConfigError, "have min-" << name << " and max-"
-                      << name << " but no default-" << name << " nor "
-                      << name << " in " << scope->getPosition());
+                      << name << " but no " << name << " (default) in "
+                      << scope->getPosition());
         }
     } else {
         // max only.
@@ -77,7 +69,7 @@ BaseNetworkParser::parseLifetime(const ConstElementPtr& scope,
     }
     // Check that value is between min and max.
     if ((value < min_value) || (value > max_value)) {
-        isc_throw(DhcpConfigError, "the value of default-" << name << " ("
+        isc_throw(DhcpConfigError, "the value of (default) " << name << " ("
                   << value << ") is not between min-" << name << " ("
                   << min_value << ") and max-" << name << " ("
                   << max_value << ")");
@@ -157,7 +149,5 @@ BaseNetworkParser::parseHostReservationMode(const data::ConstElementPtr& network
     }
 }
 
-
-
 } // end of namespace isc::dhcp
 } // end of namespace isc
index e92e7ce7ca6088afb149a3101c1e5890ee9d5dda..f769a87a4a3fce858d57c19ff5f3624509d6f7cb 100644 (file)
@@ -37,7 +37,6 @@ namespace dhcp {
 /// Order follows global_param rule in bison grammar.
 const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = {
     { "valid-lifetime",               Element::integer },
-    { "default-valid-lifetime",       Element::integer },
     { "min-valid-lifetime",           Element::integer },
     { "max-valid-lifetime",           Element::integer },
     { "renew-timer",                  Element::integer },
@@ -186,7 +185,6 @@ const ParamsList SimpleParser4::INHERIT_TO_SUBNET4 = {
     "reservation-mode",
     "server-hostname",
     "valid-lifetime",
-    "default-valid-lifetime",
     "min-valid-lifetime",
     "max-valid-lifetime",
     "calculate-tee-times",
index a425545ced4414e544f04580f8cf7095293cbee7..e76b60f21c0ee9c4c1aeabf9027460463f8293ab 100644 (file)
@@ -37,11 +37,9 @@ namespace dhcp {
 const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = {
     { "data-directory",               Element::string },
     { "preferred-lifetime",           Element::integer },
-    { "default-preferred-lifetime",   Element::integer },
     { "min-preferred-lifetime",       Element::integer },
     { "max-preferred-lifetime",       Element::integer },
     { "valid-lifetime",               Element::integer },
-    { "default-valid-lifetime",       Element::integer },
     { "min-valid-lifetime",           Element::integer },
     { "max-valid-lifetime",           Element::integer },
     { "renew-timer",                  Element::integer },
@@ -162,7 +160,6 @@ const ParamsList SimpleParser6::INHERIT_TO_SUBNET6 = {
     "interface",
     "interface-id",
     "preferred-lifetime",
-    "default-preferred-lifetime",
     "min-preferred-lifetime",
     "max-preferred-lifetime",
     "rapid-commit",
@@ -171,7 +168,6 @@ const ParamsList SimpleParser6::INHERIT_TO_SUBNET6 = {
     "renew-timer",
     "reservation-mode",
     "valid-lifetime",
-    "default-valid-lifetime",
     "min-valid-lifetime",
     "max-valid-lifetime",
     "calculate-tee-times",