]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2249] Checkpoint before regen
authorFrancis Dupont <fdupont@isc.org>
Fri, 4 Feb 2022 20:34:10 +0000 (21:34 +0100)
committerRazvan Becheriu <razvan@isc.org>
Mon, 14 Mar 2022 18:20:37 +0000 (20:20 +0200)
12 files changed:
doc/examples/kea4/all-keys.json
doc/examples/kea6/all-keys.json
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/lib/dhcpsrv/cfg_globals.cc
src/lib/dhcpsrv/cfg_globals.h
src/lib/dhcpsrv/parsers/simple_parser4.cc
src/lib/dhcpsrv/parsers/simple_parser6.cc

index a9f0fe78cfe4cc4a2657a8904b0aff8f9b04e397..e7fdc163c24cb97e47d62e730a485ebd815951a5 100644 (file)
             "re-detect": true
         },
 
+        // Boolean parameter which controls  whether an early global host
+        // reservations lookup should be performed. This lookup takes place
+        // before first classification step so before subnet selection.
+        // It can be used too to drop queries using host reservations as
+        // a decision table indexed by reservation identifiers.
+        "early-global-reservations-lookup": true,
+
         // Boolean parameter which controls DHCP server's behavior with respect
         // to creating host reservations for the same IP address. By default
         // this flag is set to true in which case the server prevents creation
index d21f6fcf5d156fa34834fb68f47d5aed4b63e058..530e7a456ea47904cfbba7eab830644f8ed01bfd 100644 (file)
             "re-detect": true
         },
 
+        // Boolean parameter which controls  whether an early global host
+        // reservations lookup should be performed. This lookup takes place
+        // before first classification step so before subnet selection.
+        // It can be used too to drop queries using host reservations as
+        // a decision table indexed by reservation identifiers.
+        "early-global-reservations-lookup": true,
+
         // Boolean parameter which controls DHCP server's behavior with respect
         // to creating host reservations for the same IP address or delegated
         // prefix. By default this flag is set to true in which case the server
index f4bef02ac1cb5b204fe00a5d327fb40ab0c01bab..8f9bd8f449d43778bb12c12c079ee28f44563f58 100644 (file)
@@ -2018,6 +2018,15 @@ ControlCharacterFill            [^"\\]|\\["\\/bfnrtu]
     }
 }
 
+\"early-global-reservations-lookup\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+        return isc::dhcp::Dhcp4Parser::make_EARLY_GLOBAL_RESERVATIONS_LOOKUP(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("early-global-reservations-lookup", driver.loc_);
+    }
+}
+
 \"ip-reservations-unique\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
index e7b85e746f40c9853f5001bec94e7394c713f8bc..f67edb903f01fe24c4d371dc54a043b04b0e09f1 100644 (file)
@@ -239,6 +239,7 @@ using namespace std;
   WHEN_NOT_PRESENT "when-not-present"
   HOSTNAME_CHAR_SET "hostname-char-set"
   HOSTNAME_CHAR_REPLACEMENT "hostname-char-replacement"
+  EARLY_GLOBAL_RESERVATIONS_LOOKUP "early-global-reservations-lookup"
   IP_RESERVATIONS_UNIQUE "ip-reservations-unique"
   RESERVATIONS_LOOKUP_FIRST "reservations-lookup-first"
 
@@ -541,6 +542,7 @@ global_param: valid_lifetime
             | statistic_default_sample_count
             | statistic_default_sample_age
             | dhcp_multi_threading
+            | early_global_reservations_lookup
             | ip_reservations_unique
             | reservations_lookup_first
             | compatibility
@@ -758,6 +760,12 @@ statistic_default_sample_age: STATISTIC_DEFAULT_SAMPLE_AGE COLON INTEGER {
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 };
 
+early_global_reservations_lookup: EARLY_GLOBAL_RESERVATIONS_LOOKUP COLON BOOLEAN {
+    ctx.unique("early-global-reservations-lookup", ctx.loc2pos(@1));
+    ElementPtr early(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("early-global-reservations-lookup", early);
+};
+
 ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(@1));
     ElementPtr unique(new BoolElement($3, ctx.loc2pos(@3)));
index 457333d65983c3add8b84347b0f2b9399e955011..03e34025c2f5e01dc6cd0caed6cef8f358552cc2 100644 (file)
@@ -681,6 +681,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
                  (config_pair.first == "statistic-default-sample-age") ||
+                 (config_pair.first == "early-global-reservations-lookup") ||
                  (config_pair.first == "ip-reservations-unique") ||
                  (config_pair.first == "reservations-lookup-first") ||
                  (config_pair.first == "parked-packet-limit")) {
index 27c7786bbc5a7ff06422f971137e0be46b8507fe..82fc77c43cbca4d077c21571dbd0663b8f55fa71 100644 (file)
@@ -2083,6 +2083,15 @@ ControlCharacterFill            [^"\\]|\\["\\/bfnrtu]
     }
 }
 
+\"early-global-reservations-lookup\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+        return isc::dhcp::Dhcp6Parser::make_EARLY_GLOBAL_RESERVATIONS_LOOKUP(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("early-global-reservations-lookup", driver.loc_);
+    }
+}
+
 \"ip-reservations-unique\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
index 51567265c35126f2f4e2b9bc6d21aa06d574709d..e713fb4d1384317f9bb86cde2af1c6bca397a8a6 100644 (file)
@@ -246,6 +246,7 @@ using namespace std;
   WHEN_NOT_PRESENT "when-not-present"
   HOSTNAME_CHAR_SET "hostname-char-set"
   HOSTNAME_CHAR_REPLACEMENT "hostname-char-replacement"
+  EARLY_GLOBAL_RESERVATIONS_LOOKUP "early-global-reservations-lookup"
   IP_RESERVATIONS_UNIQUE "ip-reservations-unique"
   RESERVATIONS_LOOKUP_FIRST "reservations-lookup-first"
 
@@ -550,6 +551,7 @@ global_param: data_directory
             | statistic_default_sample_count
             | statistic_default_sample_age
             | dhcp_multi_threading
+            | early_global_reservations_lookup
             | ip_reservations_unique
             | reservations_lookup_first
             | compatibility
@@ -776,6 +778,12 @@ parked_packet_limit: PARKED_PACKET_LIMIT COLON INTEGER {
     ctx.stack_.back()->set("parked-packet-limit", ppl);
 };
 
+early_global_reservations_lookup: EARLY_GLOBAL_RESERVATIONS_LOOKUP COLON BOOLEAN {
+    ctx.unique("early-global-reservations-lookup", ctx.loc2pos(@1));
+    ElementPtr early(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("early-global-reservations-lookup", early);
+};
+
 ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(@1));
     ElementPtr unique(new BoolElement($3, ctx.loc2pos(@3)));
index b6156cbdb685aebe0cc9fedb37d432940aefe4a5..778c9a8e1039269519d8b24950fd5ee5fbd05d4f 100644 (file)
@@ -815,6 +815,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
                  (config_pair.first == "statistic-default-sample-age") ||
+                 (config_pair.first == "early-global-reservations-lookup") ||
                  (config_pair.first == "ip-reservations-unique") ||
                  (config_pair.first == "reservations-lookup-first") ||
                  (config_pair.first == "parked-packet-limit")) {
index 7a2870004debfcda1a4cef50df71e5b6a47bce1a..eec05e5144e2059e3f0626df22eb6fee8840586a 100644 (file)
@@ -44,6 +44,7 @@ CfgGlobals::nameToIndex = {
     { "statistic-default-sample-age", STATISTIC_DEFAULT_SAMPLE_AGE },
     { "cache-threshold", CACHE_THRESHOLD },
     { "cache-max-age", CACHE_MAX_AGE },
+    { "early-global-reservations-lookup", EARLY_GLOBAL_RESERVATIONS_LOOKUP },
     { "ip-reservations-unique", IP_RESERVATIONS_UNIQUE },
     { "reservations-lookup-first", RESERVATIONS_LOOKUP_FIRST },
     { "ddns-update-on-renew", DDNS_UPDATE_ON_RENEW },
index 6ea9aabc6798d5cdd1fd7fe37d64a7ce9322c3e3..af15edcc7a16738d7b716d6563214ce6df12614e 100644 (file)
@@ -67,6 +67,7 @@ public:
         STATISTIC_DEFAULT_SAMPLE_AGE,
         CACHE_THRESHOLD,
         CACHE_MAX_AGE,
+        EARLY_GLOBAL_RESERVATIONS_LOOKUP,
         IP_RESERVATIONS_UNIQUE,
         RESERVATIONS_LOOKUP_FIRST,
         DDNS_UPDATE_ON_RENEW,
index 69863d38cd62b24338ab6cdf3495d6314e886895..ba6a809a6607033114967784aa81a5064ef3d393 100644 (file)
@@ -36,68 +36,69 @@ namespace dhcp {
 /// list and map types for entries.
 /// Order follows global_param rule in bison grammar.
 const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = {
-    { "valid-lifetime",                 Element::integer },
-    { "min-valid-lifetime",             Element::integer },
-    { "max-valid-lifetime",             Element::integer },
-    { "renew-timer",                    Element::integer },
-    { "rebind-timer",                   Element::integer },
-    { "decline-probation-period",       Element::integer },
-    { "subnet4",                        Element::list },
-    { "shared-networks",                Element::list },
-    { "interfaces-config",              Element::map },
-    { "lease-database",                 Element::map },
-    { "hosts-database",                 Element::map },
-    { "hosts-databases",                Element::list },
-    { "host-reservation-identifiers",   Element::list },
-    { "client-classes",                 Element::list },
-    { "option-def",                     Element::list },
-    { "option-data",                    Element::list },
-    { "hooks-libraries",                Element::list },
-    { "expired-leases-processing",      Element::map },
-    { "dhcp4o6-port",                   Element::integer },
-    { "control-socket",                 Element::map },
-    { "dhcp-queue-control",             Element::map },
-    { "dhcp-ddns",                      Element::map },
-    { "echo-client-id",                 Element::boolean },
-    { "match-client-id",                Element::boolean },
-    { "authoritative",                  Element::boolean },
-    { "next-server",                    Element::string },
-    { "server-hostname",                Element::string },
-    { "boot-file-name",                 Element::string },
-    { "user-context",                   Element::map },
-    { "comment",                        Element::string },
-    { "sanity-checks",                  Element::map },
-    { "reservations",                   Element::list },
-    { "config-control",                 Element::map },
-    { "server-tag",                     Element::string },
-    { "reservation-mode",               Element::string },
-    { "reservations-global",            Element::boolean },
-    { "reservations-in-subnet",         Element::boolean },
-    { "reservations-out-of-pool",       Element::boolean },
-    { "calculate-tee-times",            Element::boolean },
-    { "t1-percent",                     Element::real },
-    { "t2-percent",                     Element::real },
-    { "loggers",                        Element::list },
-    { "hostname-char-set",              Element::string },
-    { "hostname-char-replacement",      Element::string },
-    { "ddns-send-updates",              Element::boolean },
-    { "ddns-override-no-update",        Element::boolean },
-    { "ddns-override-client-update",    Element::boolean },
-    { "ddns-replace-client-name",       Element::string },
-    { "ddns-generated-prefix",          Element::string },
-    { "ddns-qualifying-suffix",         Element::string },
-    { "store-extended-info",            Element::boolean },
-    { "statistic-default-sample-count", Element::integer },
-    { "statistic-default-sample-age",   Element::integer },
-    { "multi-threading",                Element::map },
-    { "cache-threshold",                Element::real },
-    { "cache-max-age",                  Element::integer },
-    { "ip-reservations-unique",         Element::boolean },
-    { "reservations-lookup-first",      Element::boolean },
-    { "ddns-update-on-renew",           Element::boolean },
-    { "ddns-use-conflict-resolution",   Element::boolean },
-    { "compatibility",                  Element::map },
-    { "parked-packet-limit",            Element::integer },
+    { "valid-lifetime",                   Element::integer },
+    { "min-valid-lifetime",               Element::integer },
+    { "max-valid-lifetime",               Element::integer },
+    { "renew-timer",                      Element::integer },
+    { "rebind-timer",                     Element::integer },
+    { "decline-probation-period",         Element::integer },
+    { "subnet4",                          Element::list },
+    { "shared-networks",                  Element::list },
+    { "interfaces-config",                Element::map },
+    { "lease-database",                   Element::map },
+    { "hosts-database",                   Element::map },
+    { "hosts-databases",                  Element::list },
+    { "host-reservation-identifiers",     Element::list },
+    { "client-classes",                   Element::list },
+    { "option-def",                       Element::list },
+    { "option-data",                      Element::list },
+    { "hooks-libraries",                  Element::list },
+    { "expired-leases-processing",        Element::map },
+    { "dhcp4o6-port",                     Element::integer },
+    { "control-socket",                   Element::map },
+    { "dhcp-queue-control",               Element::map },
+    { "dhcp-ddns",                        Element::map },
+    { "echo-client-id",                   Element::boolean },
+    { "match-client-id",                  Element::boolean },
+    { "authoritative",                    Element::boolean },
+    { "next-server",                      Element::string },
+    { "server-hostname",                  Element::string },
+    { "boot-file-name",                   Element::string },
+    { "user-context",                     Element::map },
+    { "comment",                          Element::string },
+    { "sanity-checks",                    Element::map },
+    { "reservations",                     Element::list },
+    { "config-control",                   Element::map },
+    { "server-tag",                       Element::string },
+    { "reservation-mode",                 Element::string },
+    { "reservations-global",              Element::boolean },
+    { "reservations-in-subnet",           Element::boolean },
+    { "reservations-out-of-pool",         Element::boolean },
+    { "calculate-tee-times",              Element::boolean },
+    { "t1-percent",                       Element::real },
+    { "t2-percent",                       Element::real },
+    { "loggers",                          Element::list },
+    { "hostname-char-set",                Element::string },
+    { "hostname-char-replacement",        Element::string },
+    { "ddns-send-updates",                Element::boolean },
+    { "ddns-override-no-update",          Element::boolean },
+    { "ddns-override-client-update",      Element::boolean },
+    { "ddns-replace-client-name",         Element::string },
+    { "ddns-generated-prefix",            Element::string },
+    { "ddns-qualifying-suffix",           Element::string },
+    { "store-extended-info",              Element::boolean },
+    { "statistic-default-sample-count",   Element::integer },
+    { "statistic-default-sample-age",     Element::integer },
+    { "multi-threading",                  Element::map },
+    { "cache-threshold",                  Element::real },
+    { "cache-max-age",                    Element::integer },
+    { "early-global-reservations-lookup", Element::boolean },
+    { "ip-reservations-unique",           Element::boolean },
+    { "reservations-lookup-first",        Element::boolean },
+    { "ddns-update-on-renew",             Element::boolean },
+    { "ddns-use-conflict-resolution",     Element::boolean },
+    { "compatibility",                    Element::map },
+    { "parked-packet-limit",              Element::integer },
 };
 
 /// @brief This table defines default global values for DHCPv4
@@ -106,38 +107,39 @@ const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = {
 /// in Dhcp4) are optional. If not defined, the following values will be
 /// used.
 const SimpleDefaults SimpleParser4::GLOBAL4_DEFAULTS = {
-    { "valid-lifetime",                 Element::integer, "7200" },
-    { "decline-probation-period",       Element::integer, "86400" }, // 24h
-    { "dhcp4o6-port",                   Element::integer, "0" },
-    { "echo-client-id",                 Element::boolean, "true" },
-    { "match-client-id",                Element::boolean, "true" },
-    { "authoritative",                  Element::boolean, "false" },
-    { "next-server",                    Element::string,  "0.0.0.0" },
-    { "server-hostname",                Element::string,  "" },
-    { "boot-file-name",                 Element::string,  "" },
-    { "server-tag",                     Element::string,  "" },
-    { "reservations-global",            Element::boolean, "false" },
-    { "reservations-in-subnet",         Element::boolean, "true" },
-    { "reservations-out-of-pool",       Element::boolean, "false" },
-    { "calculate-tee-times",            Element::boolean, "false" },
-    { "t1-percent",                     Element::real,    ".50" },
-    { "t2-percent",                     Element::real,    ".875" },
-    { "ddns-send-updates",              Element::boolean, "true" },
-    { "ddns-override-no-update",        Element::boolean, "false" },
-    { "ddns-override-client-update",    Element::boolean, "false" },
-    { "ddns-replace-client-name",       Element::string,  "never" },
-    { "ddns-generated-prefix",          Element::string,  "myhost" },
-    { "ddns-qualifying-suffix",         Element::string,  "" },
-    { "hostname-char-set",              Element::string,  "[^A-Za-z0-9.-]" },
-    { "hostname-char-replacement",      Element::string,  "" },
-    { "store-extended-info",            Element::boolean, "false" },
-    { "statistic-default-sample-count", Element::integer, "20" },
-    { "statistic-default-sample-age",   Element::integer, "0" },
-    { "ip-reservations-unique",         Element::boolean, "true" },
-    { "reservations-lookup-first",      Element::boolean, "false" },
-    { "ddns-update-on-renew",           Element::boolean, "false" },
-    { "ddns-use-conflict-resolution",   Element::boolean, "true" },
-    { "parked-packet-limit",            Element::integer, "256" },
+    { "valid-lifetime",                   Element::integer, "7200" },
+    { "decline-probation-period",         Element::integer, "86400" }, // 24h
+    { "dhcp4o6-port",                     Element::integer, "0" },
+    { "echo-client-id",                   Element::boolean, "true" },
+    { "match-client-id",                  Element::boolean, "true" },
+    { "authoritative",                    Element::boolean, "false" },
+    { "next-server",                      Element::string,  "0.0.0.0" },
+    { "server-hostname",                  Element::string,  "" },
+    { "boot-file-name",                   Element::string,  "" },
+    { "server-tag",                       Element::string,  "" },
+    { "reservations-global",              Element::boolean, "false" },
+    { "reservations-in-subnet",           Element::boolean, "true" },
+    { "reservations-out-of-pool",         Element::boolean, "false" },
+    { "calculate-tee-times",              Element::boolean, "false" },
+    { "t1-percent",                       Element::real,    ".50" },
+    { "t2-percent",                       Element::real,    ".875" },
+    { "ddns-send-updates",                Element::boolean, "true" },
+    { "ddns-override-no-update",          Element::boolean, "false" },
+    { "ddns-override-client-update",      Element::boolean, "false" },
+    { "ddns-replace-client-name",         Element::string,  "never" },
+    { "ddns-generated-prefix",            Element::string,  "myhost" },
+    { "ddns-qualifying-suffix",           Element::string,  "" },
+    { "hostname-char-set",                Element::string,  "[^A-Za-z0-9.-]" },
+    { "hostname-char-replacement",        Element::string,  "" },
+    { "store-extended-info",              Element::boolean, "false" },
+    { "statistic-default-sample-count",   Element::integer, "20" },
+    { "statistic-default-sample-age",     Element::integer, "0" },
+    { "early-global-reservations-lookup", Element::boolean, "false" },
+    { "ip-reservations-unique",           Element::boolean, "true" },
+    { "reservations-lookup-first",        Element::boolean, "false" },
+    { "ddns-update-on-renew",             Element::boolean, "false" },
+    { "ddns-use-conflict-resolution",     Element::boolean, "true" },
+    { "parked-packet-limit",              Element::integer, "256" },
 };
 
 /// @brief This table defines all option definition parameters.
index 10586c04c055e08f6635c37e4b0f7f728a412881..6ed05ff92dfe214bc90e3a33e93212a617088b6a 100644 (file)
@@ -36,69 +36,70 @@ namespace dhcp {
 /// list and map types for entries.
 /// Order follows global_param rule in bison grammar.
 const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = {
-    { "data-directory",                 Element::string },
-    { "preferred-lifetime",             Element::integer },
-    { "min-preferred-lifetime",         Element::integer },
-    { "max-preferred-lifetime",         Element::integer },
-    { "valid-lifetime",                 Element::integer },
-    { "min-valid-lifetime",             Element::integer },
-    { "max-valid-lifetime",             Element::integer },
-    { "renew-timer",                    Element::integer },
-    { "rebind-timer",                   Element::integer },
-    { "decline-probation-period",       Element::integer },
-    { "subnet6",                        Element::list },
-    { "shared-networks",                Element::list },
-    { "interfaces-config",              Element::map },
-    { "lease-database",                 Element::map },
-    { "hosts-database",                 Element::map },
-    { "hosts-databases",                Element::list },
-    { "mac-sources",                    Element::list },
-    { "relay-supplied-options",         Element::list },
-    { "host-reservation-identifiers",   Element::list },
-    { "client-classes",                 Element::list },
-    { "option-def",                     Element::list },
-    { "option-data",                    Element::list },
-    { "hooks-libraries",                Element::list },
-    { "expired-leases-processing",      Element::map },
-    { "server-id",                      Element::map },
-    { "dhcp4o6-port",                   Element::integer },
-    { "control-socket",                 Element::map },
-    { "dhcp-queue-control",             Element::map },
-    { "dhcp-ddns",                      Element::map },
-    { "user-context",                   Element::map },
-    { "comment",                        Element::string },
-    { "sanity-checks",                  Element::map },
-    { "reservations",                   Element::list },
-    { "config-control",                 Element::map },
-    { "server-tag",                     Element::string },
-    { "reservation-mode",               Element::string },
-    { "reservations-global",            Element::boolean },
-    { "reservations-in-subnet",         Element::boolean },
-    { "reservations-out-of-pool",       Element::boolean },
-    { "calculate-tee-times",            Element::boolean },
-    { "t1-percent",                     Element::real },
-    { "t2-percent",                     Element::real },
-    { "loggers",                        Element::list },
-    { "hostname-char-set",              Element::string },
-    { "hostname-char-replacement",      Element::string },
-    { "ddns-send-updates",              Element::boolean },
-    { "ddns-override-no-update",        Element::boolean },
-    { "ddns-override-client-update",    Element::boolean },
-    { "ddns-replace-client-name",       Element::string },
-    { "ddns-generated-prefix",          Element::string },
-    { "ddns-qualifying-suffix",         Element::string },
-    { "store-extended-info",            Element::boolean },
-    { "statistic-default-sample-count", Element::integer },
-    { "statistic-default-sample-age",   Element::integer },
-    { "multi-threading",                Element::map },
-    { "cache-threshold",                Element::real },
-    { "cache-max-age",                  Element::integer },
-    { "ip-reservations-unique",         Element::boolean },
-    { "reservations-lookup-first",      Element::boolean },
-    { "ddns-update-on-renew",           Element::boolean },
-    { "ddns-use-conflict-resolution",   Element::boolean },
-    { "compatibility",                  Element::map },
-    { "parked-packet-limit",            Element::integer },
+    { "data-directory",                   Element::string },
+    { "preferred-lifetime",               Element::integer },
+    { "min-preferred-lifetime",           Element::integer },
+    { "max-preferred-lifetime",           Element::integer },
+    { "valid-lifetime",                   Element::integer },
+    { "min-valid-lifetime",               Element::integer },
+    { "max-valid-lifetime",               Element::integer },
+    { "renew-timer",                      Element::integer },
+    { "rebind-timer",                     Element::integer },
+    { "decline-probation-period",         Element::integer },
+    { "subnet6",                          Element::list },
+    { "shared-networks",                  Element::list },
+    { "interfaces-config",                Element::map },
+    { "lease-database",                   Element::map },
+    { "hosts-database",                   Element::map },
+    { "hosts-databases",                  Element::list },
+    { "mac-sources",                      Element::list },
+    { "relay-supplied-options",           Element::list },
+    { "host-reservation-identifiers",     Element::list },
+    { "client-classes",                   Element::list },
+    { "option-def",                       Element::list },
+    { "option-data",                      Element::list },
+    { "hooks-libraries",                  Element::list },
+    { "expired-leases-processing",        Element::map },
+    { "server-id",                        Element::map },
+    { "dhcp4o6-port",                     Element::integer },
+    { "control-socket",                   Element::map },
+    { "dhcp-queue-control",               Element::map },
+    { "dhcp-ddns",                        Element::map },
+    { "user-context",                     Element::map },
+    { "comment",                          Element::string },
+    { "sanity-checks",                    Element::map },
+    { "reservations",                     Element::list },
+    { "config-control",                   Element::map },
+    { "server-tag",                       Element::string },
+    { "reservation-mode",                 Element::string },
+    { "reservations-global",              Element::boolean },
+    { "reservations-in-subnet",           Element::boolean },
+    { "reservations-out-of-pool",         Element::boolean },
+    { "calculate-tee-times",              Element::boolean },
+    { "t1-percent",                       Element::real },
+    { "t2-percent",                       Element::real },
+    { "loggers",                          Element::list },
+    { "hostname-char-set",                Element::string },
+    { "hostname-char-replacement",        Element::string },
+    { "ddns-send-updates",                Element::boolean },
+    { "ddns-override-no-update",          Element::boolean },
+    { "ddns-override-client-update",      Element::boolean },
+    { "ddns-replace-client-name",         Element::string },
+    { "ddns-generated-prefix",            Element::string },
+    { "ddns-qualifying-suffix",           Element::string },
+    { "store-extended-info",              Element::boolean },
+    { "statistic-default-sample-count",   Element::integer },
+    { "statistic-default-sample-age",     Element::integer },
+    { "multi-threading",                  Element::map },
+    { "cache-threshold",                  Element::real },
+    { "cache-max-age",                    Element::integer },
+    { "early-global-reservations-lookup", Element::boolean },
+    { "ip-reservations-unique",           Element::boolean },
+    { "reservations-lookup-first",        Element::boolean },
+    { "ddns-update-on-renew",             Element::boolean },
+    { "ddns-use-conflict-resolution",     Element::boolean },
+    { "compatibility",                    Element::map },
+    { "parked-packet-limit",              Element::integer },
 };
 
 /// @brief This table defines default global values for DHCPv6
@@ -107,33 +108,34 @@ const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = {
 /// in Dhcp6) are optional. If not defined, the following values will be
 /// used.
 const SimpleDefaults SimpleParser6::GLOBAL6_DEFAULTS = {
-    { "preferred-lifetime",             Element::integer, "3600" },
-    { "valid-lifetime",                 Element::integer, "7200" },
-    { "decline-probation-period",       Element::integer, "86400" }, // 24h
-    { "dhcp4o6-port",                   Element::integer, "0" },
-    { "server-tag",                     Element::string,  "" },
-    { "reservations-global",            Element::boolean, "false" },
-    { "reservations-in-subnet",         Element::boolean, "true" },
-    { "reservations-out-of-pool",       Element::boolean, "false" },
-    { "calculate-tee-times",            Element::boolean, "true" },
-    { "t1-percent",                     Element::real,    ".50" },
-    { "t2-percent",                     Element::real,    ".80" },
-    { "ddns-send-updates",              Element::boolean, "true" },
-    { "ddns-override-no-update",        Element::boolean, "false" },
-    { "ddns-override-client-update",    Element::boolean, "false" },
-    { "ddns-replace-client-name",       Element::string,  "never" },
-    { "ddns-generated-prefix",          Element::string,  "myhost" },
-    { "ddns-qualifying-suffix",         Element::string,  "" },
-    { "hostname-char-set",              Element::string,  "[^A-Za-z0-9.-]" },
-    { "hostname-char-replacement",      Element::string,  "" },
-    { "store-extended-info",            Element::boolean, "false" },
-    { "statistic-default-sample-count", Element::integer, "20" },
-    { "statistic-default-sample-age",   Element::integer, "0" },
-    { "ip-reservations-unique",         Element::boolean, "true" },
-    { "reservations-lookup-first",      Element::boolean, "false" },
-    { "ddns-update-on-renew",           Element::boolean, "false" },
-    { "ddns-use-conflict-resolution",   Element::boolean, "true" },
-    { "parked-packet-limit",            Element::integer, "256" }
+    { "preferred-lifetime",               Element::integer, "3600" },
+    { "valid-lifetime",                   Element::integer, "7200" },
+    { "decline-probation-period",         Element::integer, "86400" }, // 24h
+    { "dhcp4o6-port",                     Element::integer, "0" },
+    { "server-tag",                       Element::string,  "" },
+    { "reservations-global",              Element::boolean, "false" },
+    { "reservations-in-subnet",           Element::boolean, "true" },
+    { "reservations-out-of-pool",         Element::boolean, "false" },
+    { "calculate-tee-times",              Element::boolean, "true" },
+    { "t1-percent",                       Element::real,    ".50" },
+    { "t2-percent",                       Element::real,    ".80" },
+    { "ddns-send-updates",                Element::boolean, "true" },
+    { "ddns-override-no-update",          Element::boolean, "false" },
+    { "ddns-override-client-update",      Element::boolean, "false" },
+    { "ddns-replace-client-name",         Element::string,  "never" },
+    { "ddns-generated-prefix",            Element::string,  "myhost" },
+    { "ddns-qualifying-suffix",           Element::string,  "" },
+    { "hostname-char-set",                Element::string,  "[^A-Za-z0-9.-]" },
+    { "hostname-char-replacement",        Element::string,  "" },
+    { "store-extended-info",              Element::boolean, "false" },
+    { "statistic-default-sample-count",   Element::integer, "20" },
+    { "statistic-default-sample-age",     Element::integer, "0" },
+    { "early-global-reservations-lookup", Element::boolean, "false" },
+    { "ip-reservations-unique",           Element::boolean, "true" },
+    { "reservations-lookup-first",        Element::boolean, "false" },
+    { "ddns-update-on-renew",             Element::boolean, "false" },
+    { "ddns-use-conflict-resolution",     Element::boolean, "true" },
+    { "parked-packet-limit",              Element::integer, "256" }
 };
 
 /// @brief This table defines all option definition parameters.