]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1428] Added ip-reservations-unique parameter
authorMarcin Siodelski <marcin@isc.org>
Thu, 1 Oct 2020 17:14:55 +0000 (19:14 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 8 Oct 2020 13:44:39 +0000 (15:44 +0200)
Also regenerated parsers.

src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/tests/get_config_unittest.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/tests/get_config_unittest.cc
src/lib/dhcpsrv/parsers/simple_parser4.cc
src/lib/dhcpsrv/parsers/simple_parser6.cc

index afb215b25c9fa6fd9f89d178a4f27de154da2812..7e360f943492362bb643bb5d8eb0fe97aaaf060c 100644 (file)
@@ -1868,6 +1868,15 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"ip-reservations-unique\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+        return isc::dhcp::Dhcp4Parser::make_IP_RESERVATIONS_UNIQUE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("ip-reservations-unique", driver.loc_);
+    }
+}
+
 {JSONString} {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
index 3b4b78a38c5a35e353ce04612f214a9012a81247..ea2f29bd8c21f0eaed31a30b5aa82e964f78c09d 100644 (file)
@@ -225,6 +225,7 @@ using namespace std;
   WHEN_NOT_PRESENT "when-not-present"
   HOSTNAME_CHAR_SET "hostname-char-set"
   HOSTNAME_CHAR_REPLACEMENT "hostname-char-replacement"
+  IP_RESERVATIONS_UNIQUE "ip-reservations-unique"
 
   LOGGERS "loggers"
   OUTPUT_OPTIONS "output_options"
@@ -498,6 +499,7 @@ global_param: valid_lifetime
             | statistic_default_sample_count
             | statistic_default_sample_age
             | dhcp_multi_threading
+            | ip_reservations_unique
             | unknown_map_entry
             ;
 
@@ -693,6 +695,12 @@ statistic_default_sample_age: STATISTIC_DEFAULT_SAMPLE_AGE COLON INTEGER {
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 };
 
+ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN {
+    ctx.unique("ip-reservations-unique", ctx.loc2pos(@1));
+    ElementPtr unique(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("ip-reservations-unique", unique);
+};
+
 interfaces_config: INTERFACES_CONFIG {
     ctx.unique("interfaces-config", ctx.loc2pos(@1));
     ElementPtr i(new MapElement(ctx.loc2pos(@1)));
index 26627bf1ab2b3dfd6cee1edd9a5793b1185e2d09..2a3df4f5b1ff0d35b26a147ffa329f78ba1b7c38 100644 (file)
@@ -624,7 +624,8 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "ddns-qualifying-suffix") ||
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
-                 (config_pair.first == "statistic-default-sample-age")) {
+                 (config_pair.first == "statistic-default-sample-age") ||
+                 (config_pair.first == "ip-reservations-unique")) {
                 CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first,
                                                                         config_pair.second);
                 continue;
index de261d13359b16247faf29c2892ee3da5b417638..7e86cd2f6fbef76d49b24dcd844c80e45497eadc 100644 (file)
@@ -2298,6 +2298,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2372,6 +2373,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2470,6 +2472,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2568,6 +2571,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2672,6 +2676,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2847,6 +2852,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3022,6 +3028,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3122,6 +3129,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3225,6 +3233,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3328,6 +3337,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3428,6 +3438,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3528,6 +3539,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3655,6 +3667,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3781,6 +3794,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3908,6 +3922,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4034,6 +4049,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4138,6 +4154,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4271,6 +4288,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4371,6 +4389,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4453,6 +4472,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4535,6 +4555,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4626,6 +4647,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4708,6 +4730,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4790,6 +4813,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4872,6 +4896,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4954,6 +4979,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5071,6 +5097,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5188,6 +5215,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5315,6 +5343,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5425,6 +5454,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5578,6 +5608,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5704,6 +5735,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5847,6 +5879,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5964,6 +5997,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6086,6 +6120,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6203,6 +6238,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6313,6 +6349,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6457,6 +6494,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6572,6 +6610,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6691,6 +6730,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"eth0\", \"eth1\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6765,6 +6805,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\", \"eth0\", \"eth1\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6839,6 +6880,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6939,6 +6981,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7039,6 +7082,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7139,6 +7183,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7239,6 +7284,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7339,6 +7385,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7517,6 +7564,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7632,6 +7680,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7885,6 +7934,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8015,6 +8065,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8193,6 +8244,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8319,6 +8371,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8391,6 +8444,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8463,6 +8517,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8535,6 +8590,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8607,6 +8663,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8707,6 +8764,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8807,6 +8865,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8907,6 +8966,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9007,6 +9067,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9133,6 +9194,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9233,6 +9295,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9333,6 +9396,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9434,6 +9498,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9539,6 +9604,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9658,6 +9724,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9779,6 +9846,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"comment\": \"Use wildcard\"\n"
 "            }\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9951,6 +10019,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -10131,6 +10200,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -10288,6 +10358,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -10413,6 +10484,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -10538,6 +10610,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -10612,6 +10685,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -10684,6 +10758,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
index 7bde4b74b48917a416853c87bef858bd06999cb8..8f095d0e27f709ace2d5d50ac07121946580af3d 100644 (file)
@@ -1929,6 +1929,15 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"ip-reservations-unique\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+        return isc::dhcp::Dhcp6Parser::make_IP_RESERVATIONS_UNIQUE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("ip-reservations-unique", driver.loc_);
+    }
+}
+
 {JSONString} {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
index 63b45abb4155e47414ad342507af8b65a0cdff9e..7e8857c97509ca7d0d7662a32cdb5a39de9bc7bc 100644 (file)
@@ -231,6 +231,7 @@ using namespace std;
   WHEN_NOT_PRESENT "when-not-present"
   HOSTNAME_CHAR_SET "hostname-char-set"
   HOSTNAME_CHAR_REPLACEMENT "hostname-char-replacement"
+  IP_RESERVATIONS_UNIQUE "ip-reservations-unique"
 
   LOGGERS "loggers"
   OUTPUT_OPTIONS "output_options"
@@ -506,6 +507,7 @@ global_param: data_directory
             | statistic_default_sample_count
             | statistic_default_sample_age
             | dhcp_multi_threading
+            | ip_reservations_unique
             | unknown_map_entry
             ;
 
@@ -710,6 +712,12 @@ server_tag: SERVER_TAG {
     ctx.leave();
 };
 
+ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN {
+    ctx.unique("ip-reservations-unique", ctx.loc2pos(@1));
+    ElementPtr unique(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("ip-reservations-unique", unique);
+};
+
 interfaces_config: INTERFACES_CONFIG {
     ctx.unique("interfaces-config", ctx.loc2pos(@1));
     ElementPtr i(new MapElement(ctx.loc2pos(@1)));
index 90bc929cb31d382d106da10137c20a97f84e4826..e72d406fd5cfc9f6451aeb75ff610edd0e2bd6bf 100644 (file)
@@ -757,7 +757,8 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "ddns-qualifying-suffix") ||
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
-                 (config_pair.first == "statistic-default-sample-age")) {
+                 (config_pair.first == "statistic-default-sample-age") ||
+                 (config_pair.first == "ip-reservations-unique")) {
                 CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first,
                                                                         config_pair.second);
                 continue;
index 985151c494e20d08bf28221cd7b9b377f2cd129f..3f943bd97725ff8789258e56e65f431c7b9759d7 100644 (file)
@@ -2027,6 +2027,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2106,6 +2107,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2219,6 +2221,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2399,6 +2402,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2579,6 +2583,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2759,6 +2764,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2872,6 +2878,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -2978,6 +2985,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3084,6 +3092,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3222,6 +3231,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3327,6 +3337,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3434,6 +3445,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3543,6 +3555,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3667,6 +3680,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3774,6 +3788,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3861,6 +3876,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -3948,6 +3964,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4044,6 +4061,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4131,6 +4149,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4218,6 +4237,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4340,6 +4360,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4462,6 +4483,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4594,6 +4616,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4709,6 +4732,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -4867,6 +4891,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5015,6 +5040,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5173,6 +5199,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5293,6 +5320,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5417,6 +5445,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"eth0\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5496,6 +5525,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\", \"eth0\", \"eth1\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5575,6 +5605,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5680,6 +5711,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5785,6 +5817,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -5968,6 +6001,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6088,6 +6122,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6216,6 +6251,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6321,6 +6357,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6426,6 +6463,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6531,6 +6569,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6761,6 +6800,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6889,6 +6929,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -6968,6 +7009,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7047,6 +7089,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7256,6 +7299,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7387,6 +7431,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7466,6 +7511,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7543,6 +7589,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7620,6 +7667,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7697,6 +7745,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7788,6 +7837,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7893,6 +7943,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -7998,6 +8049,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8104,6 +8156,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8215,6 +8268,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8326,6 +8380,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8433,6 +8488,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8541,6 +8597,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8668,6 +8725,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8782,6 +8840,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"comment\": \"Use wildcard\"\n"
 "            }\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -8972,6 +9031,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9169,6 +9229,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9248,6 +9309,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
@@ -9325,6 +9387,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            \"interfaces\": [ \"*\" ],\n"
 "            \"re-detect\": false\n"
 "        },\n"
+"        \"ip-reservations-unique\": true,\n"
 "        \"lease-database\": {\n"
 "            \"type\": \"memfile\"\n"
 "        },\n"
index f4f13e92cf5423905897a64b54e0b259d9b55694..e2233060db502791a46cf62c73e327d7753371c6 100644 (file)
@@ -88,7 +88,8 @@ const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = {
     { "statistic-default-sample-age",   Element::integer },
     { "multi-threading",                Element::map },
     { "cache-threshold",                Element::real },
-    { "cache-max-age",                  Element::integer }
+    { "cache-max-age",                  Element::integer },
+    { "ip-reservations-unique",         Element::boolean }
 };
 
 /// @brief This table defines default global values for DHCPv4
@@ -121,7 +122,8 @@ const SimpleDefaults SimpleParser4::GLOBAL4_DEFAULTS = {
     { "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" }
+    { "statistic-default-sample-age",   Element::integer, "0" },
+    { "ip-reservations-unique",         Element::boolean, "true" }
 };
 
 /// @brief This table defines all option definition parameters.
index e58cdae7706d57bda090c820663b31e8804d0833..861acd136f2d835af6a072e8ff4ce190f393a50d 100644 (file)
@@ -89,7 +89,8 @@ const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = {
     { "statistic-default-sample-age",   Element::integer },
     { "multi-threading",                Element::map },
     { "cache-threshold",                Element::real },
-    { "cache-max-age",                  Element::integer }
+    { "cache-max-age",                  Element::integer },
+    { "ip-reservations-unique",         Element::boolean }
 };
 
 /// @brief This table defines default global values for DHCPv6
@@ -117,7 +118,8 @@ const SimpleDefaults SimpleParser6::GLOBAL6_DEFAULTS = {
     { "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" }
+    { "statistic-default-sample-age",   Element::integer, "0" },
+    { "ip-reservations-unique",         Element::boolean, "true" }
 };
 
 /// @brief This table defines all option definition parameters.