From: Francis Dupont Date: Mon, 9 Sep 2019 15:51:11 +0000 (+0200) Subject: [897-add-infinite-valid-lifetime] Added method X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1e7cd77ea1f24fbcb88782eb971c504e6a41058;p=thirdparty%2Fkea.git [897-add-infinite-valid-lifetime] Added method --- diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc index fe0078ad7f..41a9a1beca 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc +++ b/src/bin/dhcp4/tests/get_config_unittest.cc @@ -2264,6 +2264,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -2355,6 +2356,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -2449,6 +2451,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -2544,6 +2547,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -2572,6 +2576,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -2600,6 +2605,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 3,\n" @@ -2628,6 +2634,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 4,\n" @@ -2721,6 +2728,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1024,\n" @@ -2749,6 +2757,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 100,\n" @@ -2777,6 +2786,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -2805,6 +2815,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 34,\n" @@ -2898,6 +2909,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"bar\",\n" " \"calculate-tee-times\": false,\n" @@ -2993,6 +3005,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"bar\",\n" " \"calculate-tee-times\": false,\n" @@ -3088,6 +3101,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"bootfile.efi\",\n" " \"calculate-tee-times\": false,\n" @@ -3183,6 +3197,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3276,6 +3291,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3369,6 +3385,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3397,6 +3414,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -3490,6 +3508,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3518,6 +3537,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -3611,6 +3631,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": true,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3639,6 +3660,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -3732,6 +3754,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3760,6 +3783,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": true,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -3855,6 +3879,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3950,6 +3975,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3982,6 +4008,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -4079,6 +4106,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -4702,6 +4730,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -4795,6 +4824,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -4932,6 +4962,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -5178,6 +5209,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -5280,6 +5312,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -5390,6 +5423,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -5427,6 +5461,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -5529,6 +5564,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -5639,6 +5675,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -5771,6 +5808,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6008,6 +6046,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6116,6 +6155,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6228,6 +6268,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6451,6 +6492,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6546,6 +6588,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6643,6 +6686,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6736,6 +6780,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6829,6 +6874,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -6922,6 +6968,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"client-class\": \"alpha\",\n" @@ -6951,6 +6998,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"client-class\": \"beta\",\n" @@ -6980,6 +7028,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"client-class\": \"gamma\",\n" @@ -7009,6 +7058,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 4,\n" @@ -7102,6 +7152,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -7210,6 +7261,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 123,\n" @@ -7238,6 +7290,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 234,\n" @@ -7321,6 +7374,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 542,\n" @@ -7472,6 +7526,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 234,\n" @@ -7585,6 +7640,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -7613,6 +7669,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -7641,6 +7698,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 3,\n" @@ -7669,6 +7727,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 4,\n" @@ -7762,6 +7821,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -7790,6 +7850,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -8131,6 +8192,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8224,6 +8286,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"2001:db8::123/45\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8317,6 +8380,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"ethX\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8410,6 +8474,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"ethX\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"2001:db8::543/21\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8503,6 +8568,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"vlan123\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8622,6 +8688,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8715,6 +8782,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8808,6 +8876,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -8902,6 +8971,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -9000,6 +9070,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -9232,6 +9303,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [\n" " {\n" " \"comment\": \"A shared network\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"interface\": \"\",\n" @@ -9249,6 +9321,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 100,\n" @@ -9423,6 +9496,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 123,\n" @@ -9451,6 +9525,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 542,\n" @@ -9538,6 +9613,7 @@ const char* UNPARSED_CONFIGS[] = { " \"server-tag\": \"\",\n" " \"shared-networks\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": true,\n" " \"interface\": \"\",\n" @@ -9554,6 +9630,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 100,\n" @@ -9580,6 +9657,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 200,\n" @@ -9613,6 +9691,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allow-static-leases\": false,\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 300,\n" diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc index fbd3cba899..e4847997ff 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc +++ b/src/bin/dhcp6/tests/get_config_unittest.cc @@ -2063,6 +2063,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"max-preferred-lifetime\": 4000,\n" @@ -2162,6 +2163,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -2187,6 +2189,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 2,\n" " \"option-data\": [ ],\n" @@ -2212,6 +2215,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 3,\n" " \"option-data\": [ ],\n" @@ -2237,6 +2241,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 4,\n" " \"option-data\": [ ],\n" @@ -2332,6 +2337,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1024,\n" " \"option-data\": [ ],\n" @@ -2357,6 +2363,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 100,\n" " \"option-data\": [ ],\n" @@ -2382,6 +2389,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -2407,6 +2415,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 34,\n" " \"option-data\": [ ],\n" @@ -2502,6 +2511,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -2527,6 +2537,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 2,\n" " \"option-data\": [ ],\n" @@ -2552,6 +2563,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 3,\n" " \"option-data\": [ ],\n" @@ -2577,6 +2589,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 4,\n" " \"option-data\": [ ],\n" @@ -2676,6 +2689,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"max-preferred-lifetime\": 4,\n" @@ -2775,6 +2789,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"interface\": \"eth0\",\n" @@ -2871,6 +2886,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"interface-id\": \"foobar\",\n" @@ -2967,6 +2983,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -2996,6 +3013,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 2,\n" " \"option-data\": [ ],\n" @@ -3095,6 +3113,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -3190,6 +3209,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -3287,6 +3307,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -3386,6 +3407,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -3500,6 +3522,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -4008,6 +4031,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -4103,6 +4127,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [\n" @@ -4242,6 +4267,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -4495,6 +4521,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -4590,6 +4617,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [\n" @@ -4624,6 +4652,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 2,\n" " \"option-data\": [\n" @@ -4728,6 +4757,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -4891,6 +4921,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5005,6 +5036,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5238,6 +5270,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5333,6 +5366,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5428,6 +5462,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"client-class\": \"alpha\",\n" " \"id\": 1,\n" @@ -5454,6 +5489,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"client-class\": \"beta\",\n" " \"id\": 2,\n" @@ -5480,6 +5516,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"client-class\": \"gamma\",\n" " \"id\": 3,\n" @@ -5506,6 +5543,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 4,\n" " \"option-data\": [ ],\n" @@ -5601,6 +5639,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5711,6 +5750,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5831,6 +5871,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -5928,6 +5969,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -6027,6 +6069,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -6122,6 +6165,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 123,\n" " \"option-data\": [ ],\n" @@ -6147,6 +6191,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 234,\n" " \"option-data\": [ ],\n" @@ -6218,6 +6263,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 542,\n" " \"option-data\": [ ],\n" @@ -6352,6 +6398,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 234,\n" " \"option-data\": [ ],\n" @@ -6598,6 +6645,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -6623,6 +6671,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 2,\n" " \"option-data\": [ ],\n" @@ -6648,6 +6697,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 3,\n" " \"option-data\": [ ],\n" @@ -6673,6 +6723,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 4,\n" " \"option-data\": [ ],\n" @@ -6698,6 +6749,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 5,\n" " \"option-data\": [ ],\n" @@ -6793,6 +6845,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -6818,6 +6871,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 2,\n" " \"option-data\": [ ],\n" @@ -7264,6 +7318,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7359,6 +7414,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7454,6 +7510,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7550,6 +7607,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7651,6 +7709,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7752,6 +7811,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7849,6 +7909,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -7947,6 +8008,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 1,\n" " \"option-data\": [ ],\n" @@ -8181,6 +8243,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [\n" " {\n" " \"comment\": \"A shared network\",\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"interface\": \"\",\n" " \"name\": \"foo\",\n" @@ -8194,6 +8257,7 @@ const char* UNPARSED_CONFIGS[] = { " \"subnet6\": [\n" " {\n" " \"comment\": \"A subnet\",\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 100,\n" " \"option-data\": [ ],\n" @@ -8374,6 +8438,7 @@ const char* UNPARSED_CONFIGS[] = { " \"shared-networks\": [ ],\n" " \"subnet6\": [\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 123,\n" " \"option-data\": [ ],\n" @@ -8399,6 +8464,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 234,\n" " \"option-data\": [ ],\n" @@ -8419,6 +8485,7 @@ const char* UNPARSED_CONFIGS[] = { " \"valid-lifetime\": 4000\n" " },\n" " {\n" +" \"allow-static-leases\": false,\n" " \"calculate-tee-times\": true,\n" " \"id\": 542,\n" " \"option-data\": [ ],\n" diff --git a/src/lib/dhcpsrv/network.cc b/src/lib/dhcpsrv/network.cc index 27562b2740..d3a3cd53a2 100644 --- a/src/lib/dhcpsrv/network.cc +++ b/src/lib/dhcpsrv/network.cc @@ -242,6 +242,10 @@ Network::toElement() const { map->set("t2-percent", Element::create(t2_percent_)); } + if (!allow_static_leases_.unspecified()) { + map->set("allow-static-leases", Element::create(allow_static_leases_)); + } + return (map); } diff --git a/src/lib/dhcpsrv/network.h b/src/lib/dhcpsrv/network.h index 08d68b793f..02f9689139 100644 --- a/src/lib/dhcpsrv/network.h +++ b/src/lib/dhcpsrv/network.h @@ -206,7 +206,8 @@ public: Network() : iface_name_(), client_class_(), t1_(), t2_(), valid_(), host_reservation_mode_(HR_ALL, true), cfg_option_(new CfgOption()), - calculate_tee_times_(), t1_percent_(), t2_percent_() { + calculate_tee_times_(), t1_percent_(), t2_percent_(), + allow_static_leases_() { } /// @brief Virtual destructor. @@ -520,6 +521,24 @@ public: t2_percent_ = t2_percent; } + /// @brief Returns whether or not static leases are allowed. + /// + /// @param inheritance inheritance mode to be used. + util::Optional + getAllowStaticLeases(const Inheritance& inheritance = Inheritance::ALL) const { + return (getProperty(&Network::getAllowStaticLeases, + allow_static_leases_, + inheritance, + "allow-static-leases")); + } + + /// @brief Sets whether or not static leases are allowed. + /// + /// @param allow_static_leases new value of allowed/forbidden. + void setAllowStaticLeases(const util::Optional& allow_static_leases) { + allow_static_leases_ = allow_static_leases; + } + /// @brief Unparses network object. /// /// @return A pointer to unparsed network configuration. @@ -782,6 +801,9 @@ protected: /// @brief Percentage of the lease lifetime to use when calculating T2 timer util::Optional t2_percent_; + /// @brief Allows static leases + util::Optional allow_static_leases_; + /// @brief Pointer to another network that this network belongs to. /// /// The most common case is that this instance is a subnet which belongs diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc index a9c20aa85e..b9b0ce086e 100644 --- a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc +++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc @@ -925,6 +925,12 @@ Subnet4ConfigParser::initSubnet(data::ConstElementPtr params, // Parse t1-percent and t2-percent parseTeePercents(params, network); + + // Parse allow-static-leases + if (params->contains("allow-static-leases")) { + bool allow_static_leases = getBoolean(params, "allow-static-leases"); + subnet4->setAllowStaticLeases(allow_static_leases); + } } //**************************** Subnets4ListConfigParser ********************** @@ -1314,6 +1320,12 @@ Subnet6ConfigParser::initSubnet(data::ConstElementPtr params, // Parse t1-percent and t2-percent parseTeePercents(params, network); + + // Parse allow-static-leases + if (params->contains("allow-static-leases")) { + bool allow_static_leases = getBoolean(params, "allow-static-leases"); + subnet6->setAllowStaticLeases(allow_static_leases); + } } //**************************** Subnet6ListConfigParser ******************** diff --git a/src/lib/dhcpsrv/parsers/shared_network_parser.cc b/src/lib/dhcpsrv/parsers/shared_network_parser.cc index 4ec06d6381..ae4968e31b 100644 --- a/src/lib/dhcpsrv/parsers/shared_network_parser.cc +++ b/src/lib/dhcpsrv/parsers/shared_network_parser.cc @@ -174,6 +174,12 @@ SharedNetwork4Parser::parse(const data::ConstElementPtr& shared_network_data) { parseTeePercents(shared_network_data, network); + if (shared_network_data->contains("allow-static-leases")) { + bool allow_static_leases = getBoolean(shared_network_data, + "allow-static-leases"); + shared_network->setAllowStaticLeases(allow_static_leases); + } + } catch (const DhcpConfigError&) { // Position was already added throw; @@ -326,6 +332,12 @@ SharedNetwork6Parser::parse(const data::ConstElementPtr& shared_network_data) { parseTeePercents(shared_network_data, network); + if (shared_network_data->contains("allow-static-leases")) { + bool allow_static_leases = getBoolean(shared_network_data, + "allow-static-leases"); + shared_network->setAllowStaticLeases(allow_static_leases); + } + } catch (const std::exception& ex) { isc_throw(DhcpConfigError, ex.what() << " (" << shared_network_data->getPosition() << ")"); diff --git a/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc b/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc index 54b28e5af1..d78239b0ec 100644 --- a/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc @@ -198,6 +198,7 @@ TEST(CfgSharedNetworks4Test, unparse) { network1->setCalculateTeeTimes(true); network1->setT1Percent(.35); network1->setT2Percent(.655); + network1->setAllowStaticLeases(true); network2->setIface("eth1"); network2->setT1(Triplet(100)); @@ -242,7 +243,8 @@ TEST(CfgSharedNetworks4Test, unparse) { " \"relay\": { \"ip-addresses\": [ \"198.16.1.1\", \"198.16.1.2\" ] },\n" " \"subnet4\": [ ],\n" " \"t1-percent\": .35,\n" - " \"t2-percent\": .655\n" + " \"t2-percent\": .655,\n" + " \"allow-static-leases\": true\n" " }\n" "]\n"; diff --git a/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc b/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc index 6d338083fc..e3f18931cc 100644 --- a/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc @@ -200,6 +200,7 @@ TEST(CfgSharedNetworks6Test, unparse) { network1->setCalculateTeeTimes(true); network1->setT1Percent(.35); network1->setT2Percent(.655); + network1->setAllowStaticLeases(true); network2->setIface("eth1"); network2->setT1(Triplet(100)); @@ -250,7 +251,8 @@ TEST(CfgSharedNetworks6Test, unparse) { " \"relay\": { \"ip-addresses\": [ \"2001:db8:1::1\", \"2001:db8:1::2\" ] },\n" " \"subnet6\": [ ],\n" " \"t1-percent\": .35,\n" - " \"t2-percent\": .655\n" + " \"t2-percent\": .655,\n" + " \"allow-static-leases\": true\n" " }\n" "]\n"; diff --git a/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc b/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc index e99c475e6a..6b36eb7029 100644 --- a/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc @@ -1027,6 +1027,7 @@ TEST(CfgSubnets4Test, unparseSubnet) { subnet3->setCalculateTeeTimes(true); subnet3->setT1Percent(0.50); subnet3->setT2Percent(0.65); + subnet3->setAllowStaticLeases(true); subnet3->setHostReservationMode(Network::HR_ALL); subnet3->setAuthoritative(false); subnet3->setMatchClientId(true); @@ -1100,7 +1101,8 @@ TEST(CfgSubnets4Test, unparseSubnet) { " \"require-client-classes\": [ \"foo\", \"bar\" ],\n" " \"calculate-tee-times\": true,\n" " \"t1-percent\": 0.50,\n" - " \"t2-percent\": 0.65\n" + " \"t2-percent\": 0.65,\n" + " \"allow-static-leases\": true\n" "} ]\n"; runToElementTest(expected, cfg); } @@ -1364,6 +1366,7 @@ TEST(CfgSubnets4Test, validLifetimeValidation) { EXPECT_EQ("100", value->str()); EXPECT_FALSE(repr->get("min-valid-lifetime")); EXPECT_FALSE(repr->get("max-valid-lifetime")); + EXPECT_FALSE(repr->get("allow-static-leases")); } { @@ -1539,6 +1542,23 @@ TEST(CfgSubnets4Test, validLifetimeValidation) { EXPECT_EQ(oneyear, t2_value->intValue()); } + { + SCOPED_TRACE("allow static leases"); + data::ElementPtr copied = data::copy(elems); + copied->set("allow-static-leases", data::Element::create(true)); + Subnet4Ptr subnet; + Subnet4ConfigParser parser; + ASSERT_NO_THROW(subnet = parser.parse(copied)); + ASSERT_TRUE(subnet); + EXPECT_FALSE(subnet->getAllowStaticLeases().unspecified()); + EXPECT_TRUE(subnet->getAllowStaticLeases()); + data::ConstElementPtr repr = subnet->toElement(); + data::ConstElementPtr value = repr->get("allow-static-leases"); + ASSERT_TRUE(value); + ASSERT_EQ(data::Element::boolean, value->getType()); + EXPECT_TRUE(value->boolValue()); + } + { SCOPED_TRACE("default value too small"); data::ElementPtr copied = data::copy(elems); diff --git a/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc b/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc index a84dc3bd63..ec5b764648 100644 --- a/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc @@ -630,6 +630,7 @@ TEST(CfgSubnets6Test, unparseSubnet) { subnet3->setCalculateTeeTimes(true); subnet3->setT1Percent(0.50); subnet3->setT2Percent(0.65); + subnet3->setAllowStaticLeases(true); subnet3->setValid(Triplet(100, 200, 300)); subnet3->setPreferred(Triplet(50, 100, 150)); @@ -694,7 +695,8 @@ TEST(CfgSubnets6Test, unparseSubnet) { " \"require-client-classes\": [ \"foo\", \"bar\" ],\n" " \"calculate-tee-times\": true,\n" " \"t1-percent\": 0.50,\n" - " \"t2-percent\": 0.65\n" + " \"t2-percent\": 0.65,\n" + " \"allow-static-leases\": true\n" "} ]\n"; runToElementTest(expected, cfg); } @@ -1152,6 +1154,7 @@ TEST(CfgSubnets6Test, preferredLifetimeValidation) { EXPECT_EQ("100", value->str()); EXPECT_FALSE(repr->get("min-preferred-lifetime")); EXPECT_FALSE(repr->get("max-preferred-lifetime")); + EXPECT_FALSE(repr->get("allow-static-leases")); } { @@ -1328,6 +1331,23 @@ TEST(CfgSubnets6Test, preferredLifetimeValidation) { EXPECT_EQ(oneyear, t2_value->intValue()); } + { + SCOPED_TRACE("allow static leases"); + data::ElementPtr copied = data::copy(elems); + copied->set("allow-static-leases", data::Element::create(true)); + Subnet6Ptr subnet; + Subnet6ConfigParser parser; + ASSERT_NO_THROW(subnet = parser.parse(copied)); + ASSERT_TRUE(subnet); + EXPECT_FALSE(subnet->getAllowStaticLeases().unspecified()); + EXPECT_TRUE(subnet->getAllowStaticLeases()); + data::ConstElementPtr repr = subnet->toElement(); + data::ConstElementPtr value = repr->get("allow-static-leases"); + ASSERT_TRUE(value); + ASSERT_EQ(data::Element::boolean, value->getType()); + EXPECT_TRUE(value->boolValue()); + } + { SCOPED_TRACE("default value too small"); data::ElementPtr copied = data::copy(elems); diff --git a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc index 4dc4da40cf..01e4905ac6 100644 --- a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc +++ b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc @@ -3121,6 +3121,9 @@ TEST_F(ParseConfigTest, defaultSubnet4) { EXPECT_TRUE(subnet->getT2Percent().unspecified()); EXPECT_EQ(0.0, subnet->getT2Percent().get()); + EXPECT_TRUE(subnet->getAllowStaticLeases().unspecified()); + EXPECT_FALSE(subnet->getAllowStaticLeases().get()); + EXPECT_TRUE(subnet->getMatchClientId().unspecified()); EXPECT_TRUE(subnet->getMatchClientId().get()); @@ -3192,6 +3195,9 @@ TEST_F(ParseConfigTest, defaultSubnet6) { EXPECT_TRUE(subnet->getT2Percent().unspecified()); EXPECT_EQ(0.0, subnet->getT2Percent().get()); + EXPECT_TRUE(subnet->getAllowStaticLeases().unspecified()); + EXPECT_FALSE(subnet->getAllowStaticLeases().get()); + EXPECT_TRUE(subnet->getPreferred().unspecified()); EXPECT_EQ(0, subnet->getPreferred().get()); @@ -3246,6 +3252,9 @@ TEST_F(ParseConfigTest, defaultSharedNetwork4) { EXPECT_TRUE(network->getT2Percent().unspecified()); EXPECT_EQ(0.0, network->getT2Percent().get()); + EXPECT_TRUE(network->getAllowStaticLeases().unspecified()); + EXPECT_FALSE(network->getAllowStaticLeases().get()); + EXPECT_TRUE(network->getMatchClientId().unspecified()); EXPECT_TRUE(network->getMatchClientId().get()); @@ -3300,6 +3309,9 @@ TEST_F(ParseConfigTest, defaultSharedNetwork6) { EXPECT_TRUE(network->getT2Percent().unspecified()); EXPECT_EQ(0.0, network->getT2Percent().get()); + EXPECT_TRUE(network->getAllowStaticLeases().unspecified()); + EXPECT_FALSE(network->getAllowStaticLeases().get()); + EXPECT_TRUE(network->getPreferred().unspecified()); EXPECT_EQ(0, network->getPreferred().get()); diff --git a/src/lib/dhcpsrv/tests/network_unittest.cc b/src/lib/dhcpsrv/tests/network_unittest.cc index ab74ea8af2..7928f298cb 100644 --- a/src/lib/dhcpsrv/tests/network_unittest.cc +++ b/src/lib/dhcpsrv/tests/network_unittest.cc @@ -169,6 +169,7 @@ TEST_F(NetworkTest, inheritanceSupport4) { globals_->set("calculate-tee-times", Element::create(false)); globals_->set("t1-percent", Element::create(0.75)); globals_->set("t2-percent", Element::create(0.6)); + globals_->set("allow-static-leases", Element::create(false)); globals_->set("match-client-id", Element::create(true)); globals_->set("authoritative", Element::create(false)); globals_->set("next-server", Element::create("192.0.2.3")); @@ -229,6 +230,12 @@ TEST_F(NetworkTest, inheritanceSupport4) { &Network::setT2Percent, 0.3, 0.6); } + { + SCOPED_TRACE("allow-static-leases"); + testNetworkInheritance(&Network::getAllowStaticLeases, + &Network::setAllowStaticLeases, + true, false); + } { SCOPED_TRACE("match-client-id"); testNetworkInheritance(&Network4::getMatchClientId, diff --git a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc index 9fdbdf61f5..97fe2ccd3b 100644 --- a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc +++ b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc @@ -135,6 +135,7 @@ public: " \"calculate-tee-times\": true," " \"t1-percent\": 0.345," " \"t2-percent\": 0.721," + " \"allow-static-leases\": true," " \"option-data\": [" " {" " \"name\": \"domain-name-servers\"," @@ -165,7 +166,8 @@ public: " \"reservation-mode\": \"all\"," " \"calculate-tee-times\": true," " \"t1-percent\": .45," - " \"t2-percent\": .65" + " \"t2-percent\": .65," + " \"allow-static-leases\": true" " }," " {" " \"id\": 2," @@ -188,7 +190,8 @@ public: " \"reservation-mode\": \"all\"," " \"calculate-tee-times\": false," " \"t1-percent\": .40," - " \"t2-percent\": .80" + " \"t2-percent\": .80," + " \"allow-static-leases\": false" " }" " ]" "}"; @@ -242,6 +245,7 @@ TEST_F(SharedNetwork4ParserTest, parse) { EXPECT_TRUE(network->getCalculateTeeTimes()); EXPECT_EQ(0.345, network->getT1Percent()); EXPECT_EQ(0.721, network->getT2Percent()); + EXPECT_TRUE(network->getAllowStaticLeases()); EXPECT_EQ("/dev/null", network->getFilename().get()); EXPECT_EQ("10.0.0.1", network->getSiaddr().get().toText()); EXPECT_EQ("example.org", network->getSname().get()); @@ -445,6 +449,7 @@ public: " \"calculate-tee-times\": true," " \"t1-percent\": 0.345," " \"t2-percent\": 0.721," + " \"allow-static-leases\": true," " \"option-data\": [" " {" " \"name\": \"dns-servers\"," @@ -537,6 +542,7 @@ TEST_F(SharedNetwork6ParserTest, parse) { EXPECT_TRUE(network->getCalculateTeeTimes()); EXPECT_EQ(0.345, network->getT1Percent()); EXPECT_EQ(0.721, network->getT2Percent()); + EXPECT_TRUE(network->getAllowStaticLeases()); // Relay information. auto relay_info = network->getRelayInfo(); diff --git a/src/lib/dhcpsrv/tests/shared_network_unittest.cc b/src/lib/dhcpsrv/tests/shared_network_unittest.cc index 75e44215f3..5e71725d09 100644 --- a/src/lib/dhcpsrv/tests/shared_network_unittest.cc +++ b/src/lib/dhcpsrv/tests/shared_network_unittest.cc @@ -61,6 +61,9 @@ TEST(SharedNetwork4Test, defaults) { EXPECT_TRUE(network->getT2Percent().unspecified()); EXPECT_EQ(0.0, network->getT2Percent().get()); + EXPECT_TRUE(network->getAllowStaticLeases().unspecified()); + EXPECT_FALSE(network->getAllowStaticLeases().get()); + EXPECT_TRUE(network->getMatchClientId().unspecified()); EXPECT_TRUE(network->getMatchClientId().get()); @@ -674,6 +677,9 @@ TEST(SharedNetwork6Test, defaults) { EXPECT_TRUE(network->getT2Percent().unspecified()); EXPECT_EQ(0.0, network->getT2Percent().get()); + EXPECT_TRUE(network->getAllowStaticLeases().unspecified()); + EXPECT_FALSE(network->getAllowStaticLeases().get()); + EXPECT_TRUE(network->getPreferred().unspecified()); EXPECT_EQ(0, network->getPreferred().get()); diff --git a/src/lib/dhcpsrv/tests/subnet_unittest.cc b/src/lib/dhcpsrv/tests/subnet_unittest.cc index 3201e71ea0..f3fbb564dd 100644 --- a/src/lib/dhcpsrv/tests/subnet_unittest.cc +++ b/src/lib/dhcpsrv/tests/subnet_unittest.cc @@ -92,6 +92,9 @@ TEST(Subnet4Test, defaults) { EXPECT_TRUE(subnet.getT2Percent().unspecified()); EXPECT_EQ(0.0, subnet.getT2Percent().get()); + EXPECT_TRUE(subnet.getAllowStaticLeases().unspecified()); + EXPECT_FALSE(subnet.getAllowStaticLeases().get()); + EXPECT_TRUE(subnet.getMatchClientId().unspecified()); EXPECT_TRUE(subnet.getMatchClientId().get()); @@ -814,6 +817,9 @@ TEST(SharedNetwork6Test, defaults) { EXPECT_TRUE(subnet.getT2Percent().unspecified()); EXPECT_EQ(0.0, subnet.getT2Percent().get()); + EXPECT_TRUE(subnet.getAllowStaticLeases().unspecified()); + EXPECT_FALSE(subnet.getAllowStaticLeases().get()); + EXPECT_TRUE(subnet.getPreferred().unspecified()); EXPECT_EQ(0, subnet.getPreferred().get());