From: Thomas Markwalder Date: Tue, 20 Oct 2020 12:35:51 +0000 (-0400) Subject: [#1386] kea-dhcp4/6 now parse ddns-use-conflict-resolution X-Git-Tag: Kea-1.9.1~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00305bc7d49fd5597e71ad693924b5087bc40e25;p=thirdparty%2Fkea.git [#1386] kea-dhcp4/6 now parse ddns-use-conflict-resolution Both servers parse and store ddns-use-conflict-resolution but do nothing with it. doc/examples/kea4/all-keys.json doc/examples/kea4/with-ddns.json doc/examples/kea6/all-keys.json doc/examples/kea6/with-ddns.json Added entries for ddns-use-conflict-resolution 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 Added support for ddns-use-conflict-resolution src/bin/dhcp4/tests/get_config_unittest.cc.skel Changed important calls to ASSERT_NO_THROW_LOG to ease debugging 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 Added support for ddns-use-conflict-resolution src/bin/dhcp6/tests/get_config_unittest.cc.skel Changed important calls to ASSERT_NO_THROW_LOG to ease debugging src/lib/dhcpsrv/parsers/base_network_parser.cc Fixed copy/paste error --- diff --git a/doc/examples/kea4/all-keys.json b/doc/examples/kea4/all-keys.json index 719d823730..38dce67a61 100644 --- a/doc/examples/kea4/all-keys.json +++ b/doc/examples/kea4/all-keys.json @@ -155,6 +155,13 @@ // may be specified at the global, shared-network and subnet levels. "ddns-update-on-renew": true, + // Boolean flag, which is passed to kea-dhcp-ddns with each DDNS + // udpate request to indicate whether or not DNS update conflict + // resolution as described in RFC 4703 should be employed for the + // given update request. The default value for this flag is true. + // It may be specified at the global, shared-network and subnet levels. + "ddns-use-conflict-resolution": true, + // Time in seconds specifying how long a declined lease should be // excluded from DHCP assignments. The default value is 24 hours. "decline-probation-period": 86400, @@ -627,6 +634,9 @@ // Shared network level value. See description at the global level. "ddns-update-on-renew": true, + // Shared network level value. See description at the global level. + "ddns-use-conflict-resolution": true, + // Shared network level value. See description at the global level. "hostname-char-replacement": "x", @@ -740,6 +750,9 @@ // Subnet level value. See description at the global level. "ddns-update-on-renew": true, + // Subnet level value. See description at the global level. + "ddns-use-conflict-resolution": true, + // Subnet level value. See description at the global level. "hostname-char-replacement": "x", diff --git a/doc/examples/kea4/with-ddns.json b/doc/examples/kea4/with-ddns.json index 769c7d64e3..8ca16d68af 100644 --- a/doc/examples/kea4/with-ddns.json +++ b/doc/examples/kea4/with-ddns.json @@ -59,6 +59,8 @@ "ddns-replace-client-name" : "when-present", "ddns-generated-prefix" : "test.prefix", "ddns-qualifying-suffix" : "test.suffix.", + "ddns-update-on-renew" : false, + "ddns-use-conflict-resolution" : true, "hostname-char-set": "[^A-Za-z0-9.-]", "hostname-char-replacement": "x", diff --git a/doc/examples/kea6/all-keys.json b/doc/examples/kea6/all-keys.json index c70d8a6ddf..68b26a940d 100644 --- a/doc/examples/kea6/all-keys.json +++ b/doc/examples/kea6/all-keys.json @@ -115,6 +115,13 @@ // may be specified at the global, shared-network and subnet levels. "ddns-update-on-renew": true, + // Boolean flag, which is passed to kea-dhcp-ddns with each DDNS + // udpate request to indicate whether or not DNS update conflict + // resolution as described in RFC 4703 should be employed for the + // given update request. The default value for this flag is true. + // It may be specified at the global, shared-network and subnet levels. + "ddns-use-conflict-resolution": true, + // Time in seconds specifying how long a declined lease should be // excluded from DHCP assignments. The default value is 24 hours. "decline-probation-period": 86400, @@ -574,6 +581,9 @@ // Shared network level value. See description at the global level. "ddns-update-on-renew": true, + // Shared network level value. See description at the global level. + "ddns-use-conflict-resolution": true, + // Shared network level value. See description at the global level. "hostname-char-replacement": "x", @@ -679,6 +689,9 @@ // Subnet level value. See description at the global level. "ddns-update-on-renew": true, + // Subnet level value. See description at the global level. + "ddns-use-conflict-resolution": true, + // Subnet level value. See description at the global level. "hostname-char-replacement": "x", diff --git a/doc/examples/kea6/with-ddns.json b/doc/examples/kea6/with-ddns.json index f87dfbb3c3..64d7528cf9 100644 --- a/doc/examples/kea6/with-ddns.json +++ b/doc/examples/kea6/with-ddns.json @@ -62,6 +62,8 @@ "ddns-replace-client-name" : "when-present", "ddns-generated-prefix" : "test.prefix", "ddns-qualifying-suffix" : "test.suffix.", + "ddns-update-on-renew" : false, + "ddns-use-conflict-resolution" : true, "hostname-char-set": "[^A-Za-z0-9.-]", "hostname-char-replacement": "x", diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 684855314f..9669c1d3f3 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 201 -#define YY_END_OF_BUFFER 202 +#define YY_NUM_RULES 202 +#define YY_END_OF_BUFFER 203 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,21 +700,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1868] = +static const flex_int16_t yy_accept[1891] = { 0, - 194, 194, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 200, 10, 11, 200, 1, 194, 191, 194, 194, - 200, 193, 192, 200, 200, 200, 200, 200, 187, 188, - 200, 200, 200, 189, 190, 5, 5, 5, 200, 200, - 200, 10, 11, 0, 0, 183, 0, 0, 0, 0, + 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, + 203, 201, 10, 11, 201, 1, 195, 192, 195, 195, + 201, 194, 193, 201, 201, 201, 201, 201, 188, 189, + 201, 201, 201, 190, 191, 5, 5, 5, 201, 201, + 201, 10, 11, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 194, 194, - 0, 193, 194, 3, 2, 6, 0, 194, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 184, + 0, 0, 0, 0, 0, 0, 0, 1, 195, 195, + 0, 194, 195, 3, 2, 6, 0, 195, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 9, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -724,10 +724,10 @@ static const flex_int16_t yy_accept[1868] = 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -735,178 +735,180 @@ static const flex_int16_t yy_accept[1868] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 199, 197, 0, 196, 195, 0, 0, - 0, 0, 0, 0, 0, 0, 165, 0, 164, 0, - 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 198, 0, 197, 196, 0, 0, + 0, 0, 0, 0, 0, 0, 166, 0, 165, 0, + 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 198, 195, - 0, 0, 0, 0, 0, 0, 0, 166, 0, 168, + 0, 0, 0, 18, 0, 0, 0, 0, 199, 196, + 0, 0, 0, 0, 0, 0, 0, 167, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 0, 0, 0, 0, 0, 0, 0, 75, - 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, + 0, 91, 0, 0, 0, 0, 0, 0, 0, 76, + 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 78, 0, 39, 0, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 31, 0, 0, 36, 0, 0, 0, 0, 0, - 0, 0, 12, 170, 169, 0, 0, 0, 122, 0, + 0, 0, 12, 171, 170, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, + 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 0, 171, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 128, 97, 0, - 0, 0, 0, 0, 0, 102, 32, 0, 0, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 98, 0, 0, 0, 0, 0, 0, 103, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 104, 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, - - 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 118, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 37, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - + 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, - 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 175, 0, 0, 0, 0, 0, 0, 0, 0, 115, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, + 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 113, 22, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 0, 0, 0, 0, 72, 0, 0, 0, 0, - 0, 0, 127, 34, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 59, 0, 0, 0, 0, 0, 93, 94, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 154, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, + 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, + 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, + 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 22, + + 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, + 73, 0, 0, 0, 0, 0, 0, 128, 34, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, + 0, 0, 94, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 179, 0, 73, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, - 0, 0, 0, 154, 0, 0, 152, 0, 143, 142, - 0, 0, 0, 49, 0, 0, 21, 0, 0, 0, - 0, 167, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 136, 0, 0, 145, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, - 15, 0, 41, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 0, 120, 0, 0, 0, 0, 111, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, - 0, 173, 0, 0, 178, 0, 96, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 180, 0, 74, + 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 0, 0, 0, 0, 0, 155, + 0, 0, 153, 0, 144, 143, 0, 0, 0, 49, + 0, 0, 21, 0, 0, 0, 0, 168, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 137, 0, 0, 146, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 0, 15, 0, 41, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, + 121, 0, 0, 0, 0, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 80, 0, 174, 0, + 0, 179, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 48, 0, - - 0, 0, 0, 0, 181, 0, 0, 106, 27, 0, - 0, 0, 50, 141, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 176, 0, 149, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 24, - 0, 155, 0, 0, 0, 52, 0, 0, 0, 0, - 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 0, 0, 95, 0, 0, 0, 42, 0, 0, + + 14, 0, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 182, 0, 0, 107, 27, 0, 0, 0, + 50, 142, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 177, 0, 150, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 24, 0, + 156, 0, 0, 0, 52, 0, 0, 0, 0, 0, + 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + 0, 0, 96, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 0, 0, 0, 26, 0, 0, - 177, 0, 0, 0, 0, 0, 137, 0, 0, 0, + 0, 0, 0, 127, 0, 0, 0, 26, 0, 0, + 178, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 20, - 0, 180, 71, 0, 0, 0, 0, 174, 172, 0, + 0, 181, 72, 0, 0, 0, 0, 175, 173, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 161, 0, 0, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, - 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 162, 13, 0, 0, 0, 0, 0, 0, 0, 0, - - 140, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 0, 0, 0, 0, 0, 0, 0, 133, 0, 55, - 54, 19, 0, 158, 0, 0, 0, 0, 45, 0, - 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 132, 0, 0, 0, 51, 0, - 0, 46, 160, 0, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, + 0, 0, 16, 0, 0, 0, 162, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 111, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, + 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 163, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 141, 151, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 55, 54, 19, 0, 159, 0, 0, 0, + 0, 45, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, + 0, 0, 51, 0, 0, 46, 161, 0, 0, 71, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 67, 0, 0, - 138, 0, 0, 0, 0, 182, 159, 0, 107, 0, - 0, 0, 63, 0, 0, 0, 0, 0, 0, 130, - 0, 135, 0, 65, 58, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 163, 0, 0, 0, 0, 0, - 0, 0, 64, 0, 0, 0, 0, 0, 91, 61, - 0, 0, 0, 0, 60, 131, 0 + 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 67, 0, 0, 0, 139, 0, 0, + 0, 0, 183, 160, 0, 108, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 131, 0, 136, + 0, 65, 0, 58, 0, 0, 0, 0, 0, 0, + 0, 130, 0, 0, 164, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 69, + 0, 92, 61, 0, 0, 0, 0, 60, 132, 0 } ; static const YY_CHAR yy_ec[256] = @@ -953,244 +955,248 @@ static const YY_CHAR yy_meta[74] = 3, 3, 3 } ; -static const flex_int16_t yy_base[1880] = +static const flex_int16_t yy_base[1903] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2268, 2269, 34, 2264, 145, 0, 207, 2269, 214, 221, - 13, 228, 2269, 2244, 118, 25, 2, 6, 2269, 2269, - 73, 11, 17, 2269, 2269, 2269, 104, 2252, 2205, 0, - 2242, 108, 2259, 24, 262, 2269, 2201, 67, 2207, 84, - 75, 88, 224, 91, 89, 290, 220, 2199, 206, 285, - 206, 204, 212, 60, 232, 2208, 247, 294, 315, 307, - 286, 2191, 230, 325, 354, 328, 2210, 0, 366, 382, - 397, 411, 404, 2269, 0, 2269, 419, 425, 216, 225, - 229, 227, 319, 329, 2269, 2207, 2248, 2269, 300, 2269, - - 438, 2235, 390, 2204, 331, 10, 406, 311, 408, 414, - 420, 2245, 0, 491, 409, 2187, 2184, 2188, 402, 2184, - 2192, 406, 2188, 2177, 2178, 2183, 78, 2193, 2176, 2185, - 2185, 95, 2176, 239, 2177, 2175, 396, 2223, 2227, 2167, - 2220, 2160, 2183, 2180, 2180, 2174, 336, 2167, 2165, 2166, - 2158, 2163, 2157, 413, 2168, 2161, 2152, 2151, 2165, 423, - 2151, 430, 422, 2145, 465, 420, 432, 2166, 2163, 2164, - 423, 2162, 2197, 2196, 423, 2142, 2142, 2143, 462, 2135, - 2152, 2144, 0, 456, 471, 471, 489, 479, 504, 2143, - 2269, 0, 2188, 509, 2137, 494, 501, 507, 2191, 516, - - 2190, 503, 2189, 2269, 553, 2188, 526, 2147, 2139, 2126, - 2137, 2141, 2142, 2139, 2136, 2135, 2126, 500, 2177, 2171, - 2135, 2116, 2113, 2121, 2116, 2130, 2126, 2114, 2126, 2126, - 2117, 2101, 2105, 2118, 2120, 2117, 2109, 2099, 2117, 2269, - 2112, 498, 2097, 2096, 2148, 2095, 2105, 2108, 541, 2104, - 2143, 2088, 2090, 2101, 2139, 2084, 2142, 2077, 2092, 535, - 2082, 2088, 2097, 2078, 2076, 2076, 2082, 2073, 2072, 2079, - 2069, 2128, 2084, 2083, 2077, 488, 2084, 2079, 2071, 2061, - 2076, 2075, 2070, 2074, 166, 2072, 2058, 2064, 2071, 2053, - 2054, 2057, 2054, 2053, 341, 2048, 2062, 2061, 2104, 2063, - - 399, 2054, 523, 2269, 2269, 536, 2269, 2269, 2041, 0, - 520, 515, 2089, 548, 2099, 548, 2269, 2098, 2269, 2092, - 598, 2269, 547, 2032, 2041, 2089, 2049, 2032, 2049, 2030, - 2036, 2088, 2043, 2038, 2041, 2036, 543, 2269, 2038, 2082, - 2076, 2034, 2031, 576, 2037, 2077, 2071, 2024, 2019, 2016, - 2067, 2024, 2013, 2029, 2063, 2009, 621, 2023, 2008, 2021, - 2019, 2007, 2017, 2012, 2019, 2014, 2010, 528, 2008, 2011, - 2006, 1992, 2004, 2000, 2050, 546, 2044, 2269, 2043, 1993, - 1992, 1991, 1984, 1986, 1998, 1989, 1978, 1995, 1990, 586, - 2037, 1990, 1987, 1990, 2269, 1989, 1978, 1978, 1990, 570, - - 1965, 1966, 1987, 580, 1969, 2020, 1965, 1979, 1982, 1977, - 1963, 1975, 1974, 1973, 1968, 1971, 1970, 1969, 1968, 572, - 2011, 1970, 2009, 2269, 1951, 1950, 629, 1963, 2269, 2269, - 1962, 0, 1951, 1943, 573, 2002, 2001, 2269, 2000, 2269, - 604, 672, 603, 1999, 1941, 1952, 1991, 1944, 1946, 1945, - 1933, 2269, 1938, 1944, 1947, 1930, 1945, 1932, 1931, 2269, - 591, 1933, 1930, 607, 1928, 1930, 2269, 1938, 1935, 1920, - 1933, 1928, 653, 1935, 1923, 1916, 1967, 2269, 1914, 1930, - 1964, 1925, 1922, 1923, 1907, 1924, 1958, 1909, 1904, 1903, - 1954, 1898, 560, 1917, 1891, 1898, 1903, 1913, 1947, 1951, - - 2269, 1896, 1892, 1890, 1899, 1893, 1900, 1884, 1884, 1894, - 1882, 1896, 1885, 1881, 1879, 2269, 1936, 2269, 1878, 1889, - 1928, 1873, 1878, 1887, 1881, 1875, 1884, 1926, 1920, 1882, - 1865, 1865, 1860, 1880, 1855, 1861, 1866, 1859, 1867, 1871, - 1854, 1912, 1853, 1905, 1850, 1851, 1850, 1862, 1851, 2269, - 1861, 2269, 1850, 1848, 2269, 1859, 1895, 1855, 0, 1839, - 1856, 1896, 2269, 2269, 2269, 608, 607, 655, 2269, 1847, - 1846, 614, 1853, 1833, 1832, 1885, 1830, 1883, 1828, 1827, - 1826, 1833, 1826, 1838, 1820, 1820, 1835, 1834, 1822, 1832, - 1831, 1831, 1813, 1818, 1859, 1826, 1818, 1863, 1807, 1823, - - 1822, 2269, 1807, 1804, 1862, 1817, 1809, 1815, 1806, 1814, - 1799, 1815, 1797, 1809, 1810, 570, 1792, 1786, 1791, 1806, - 1803, 1804, 1783, 1793, 1799, 1842, 1797, 1789, 1780, 2269, - 1781, 1783, 1792, 1790, 1829, 1828, 1779, 16, 1788, 1825, - 1770, 1771, 1774, 1767, 2269, 1781, 1760, 1764, 1778, 1770, - 1815, 1767, 1774, 1812, 2269, 1757, 1771, 1755, 1769, 1772, - 1753, 1805, 1804, 1803, 1802, 1747, 1800, 1799, 2269, 1744, - 1758, 656, 1759, 1758, 1755, 1755, 1792, 1752, 1735, 1740, - 1742, 2269, 1748, 1738, 2269, 637, 625, 1732, 1730, 1737, - 1747, 1739, 1726, 1720, 1778, 628, 1782, 643, 1776, 1736, - - 1774, 1773, 1725, 1723, 1731, 1734, 1718, 1719, 1728, 1709, - 1764, 1715, 1723, 1724, 1760, 1721, 199, 643, 217, 293, - 351, 309, 353, 2269, 419, 446, 483, 544, 612, 610, - 629, 628, 618, 633, 631, 647, 653, 698, 700, 650, - 642, 653, 700, 658, 708, 2269, 709, 662, 664, 666, - 660, 663, 716, 679, 668, 681, 2269, 671, 682, 671, - 684, 686, 730, 731, 674, 685, 670, 693, 672, 678, - 733, 697, 681, 693, 737, 738, 739, 686, 741, 705, - 700, 707, 703, 688, 700, 701, 708, 694, 2269, 759, - 717, 719, 709, 721, 711, 724, 709, 716, 722, 714, - - 728, 768, 744, 731, 736, 733, 715, 722, 736, 781, - 734, 732, 741, 2269, 731, 746, 743, 729, 736, 735, - 733, 752, 749, 737, 744, 745, 754, 758, 755, 745, - 743, 743, 754, 750, 806, 763, 748, 749, 755, 771, - 761, 2269, 771, 771, 764, 775, 773, 818, 760, 762, - 777, 764, 763, 825, 782, 768, 771, 2269, 2269, 781, - 786, 791, 779, 789, 791, 2269, 2269, 792, 779, 797, - 784, 778, 783, 801, 788, 838, 789, 841, 787, 791, - 849, 2269, 2269, 794, 798, 797, 794, 854, 807, 797, - 798, 794, 807, 818, 802, 820, 815, 816, 818, 811, - - 813, 814, 815, 815, 817, 832, 873, 830, 835, 812, - 835, 819, 2269, 826, 827, 841, 831, 829, 879, 837, - 827, 842, 843, 830, 862, 870, 839, 834, 889, 890, - 852, 892, 2269, 855, 859, 900, 848, 843, 844, 856, - 863, 852, 853, 849, 852, 853, 863, 872, 908, 856, - 865, 861, 919, 876, 877, 868, 2269, 870, 873, 881, - 883, 868, 884, 878, 925, 891, 875, 876, 2269, 892, - 895, 878, 937, 880, 899, 2269, 898, 901, 881, 899, - 939, 897, 893, 890, 943, 944, 906, 892, 910, 909, - 910, 896, 911, 903, 910, 900, 918, 917, 904, 2269, - - 912, 918, 921, 966, 2269, 915, 920, 964, 915, 928, - 922, 926, 924, 922, 924, 934, 979, 923, 928, 924, - 983, 927, 939, 2269, 927, 935, 933, 984, 946, 932, - 933, 942, 954, 942, 940, 945, 955, 956, 961, 1002, - 974, 979, 961, 958, 954, 968, 951, 951, 1011, 954, - 2269, 954, 974, 973, 964, 953, 970, 977, 1020, 981, - 974, 978, 982, 965, 982, 1027, 974, 2269, 1024, 971, - 976, 975, 976, 976, 997, 994, 999, 1000, 986, 994, - 1003, 983, 998, 1005, 1047, 2269, 1048, 1049, 991, 1001, - 1011, 1014, 1002, 998, 1005, 1014, 1002, 1009, 1010, 1022, - - 1063, 1010, 1008, 1010, 1027, 1068, 1018, 1017, 1023, 1021, - 1019, 1014, 1075, 1076, 1072, 1078, 2269, 1035, 1028, 1019, - 1038, 1026, 1036, 1033, 1038, 1034, 1047, 1047, 2269, 1031, - 1033, 1033, 2269, 1035, 1095, 1034, 1053, 1054, 1056, 1047, - 1101, 1102, 1055, 1040, 1054, 1062, 1061, 1045, 1050, 1068, - 2269, 1090, 1081, 1113, 1053, 1075, 1070, 1070, 1074, 2269, - 1061, 1063, 1080, 1075, 1079, 1124, 1072, 1076, 2269, 1068, - 1085, 1065, 1086, 1076, 1127, 2269, 1092, 1093, 1131, 1078, - 1133, 1091, 1097, 1083, 1143, 1086, 1097, 1089, 1095, 1091, - 1109, 1110, 1111, 2269, 2269, 1110, 2269, 1095, 1106, 1097, - - 1116, 1106, 1099, 1111, 1155, 1119, 1108, 1115, 1116, 1122, - 2269, 1115, 1167, 1108, 1169, 2269, 1170, 1112, 1118, 1125, - 1169, 1131, 2269, 2269, 1118, 2269, 1120, 1134, 1139, 1122, - 1181, 1138, 1139, 1140, 1180, 1132, 1137, 1188, 1141, 1137, - 1191, 2269, 1138, 1193, 1194, 1151, 1153, 2269, 2269, 1136, - 1198, 1194, 1158, 1201, 1143, 1155, 1160, 1175, 1206, 2269, - 1163, 1156, 1165, 1156, 1167, 1212, 1159, 1174, 1210, 1162, - 2269, 1158, 1174, 1175, 1176, 1173, 1217, 1180, 1170, 1185, - 1172, 1168, 1228, 1181, 1225, 1231, 1188, 2269, 1190, 1183, - 1192, 1193, 1191, 1181, 1184, 1184, 1189, 1244, 1191, 1246, - - 1189, 1248, 1244, 1185, 1200, 1193, 1196, 1209, 1210, 1209, - 1258, 2269, 1212, 2269, 2269, 1217, 1209, 1219, 1204, 1260, - 1206, 1267, 1211, 1221, 1270, 2269, 1218, 1218, 1220, 1222, - 1275, 1216, 1219, 2269, 1220, 1239, 2269, 1223, 2269, 2269, - 1236, 1238, 1239, 2269, 1226, 1234, 2269, 1286, 1235, 1288, - 1268, 2269, 1290, 1247, 1292, 1243, 1290, 2269, 1238, 1246, - 1240, 1237, 1240, 1243, 1243, 1260, 1299, 1252, 1264, 1267, - 1255, 1250, 1257, 1247, 2269, 1270, 1255, 2269, 1257, 1258, - 1273, 1273, 1276, 1276, 1273, 1317, 1279, 1271, 2269, 1272, - 2269, 1282, 2269, 1279, 1284, 1285, 1282, 1326, 1274, 1289, - - 1290, 1282, 2269, 1279, 1280, 1280, 1286, 1285, 1283, 1297, - 2269, 1338, 1285, 2269, 1286, 1286, 1288, 1294, 2269, 1296, - 1350, 1292, 1300, 1303, 1314, 1312, 1356, 1309, 1318, 2269, - 1315, 2269, 1312, 1335, 2269, 1362, 2269, 1320, 1305, 1365, - 1366, 1323, 1328, 1310, 1370, 1371, 1367, 1331, 1328, 1324, - 1317, 1372, 1330, 1320, 1325, 1381, 1335, 1383, 1380, 1343, - 1339, 1384, 1332, 1337, 1335, 1394, 1350, 1338, 1397, 1355, - 1399, 1360, 1349, 1343, 1403, 1345, 1346, 1360, 1363, 1363, - 1409, 1351, 1368, 1364, 1368, 1352, 1410, 1411, 1358, 1413, - 1376, 1377, 2269, 1377, 1378, 1365, 1364, 1420, 2269, 1361, - - 1379, 1428, 1386, 1399, 2269, 1431, 1384, 2269, 2269, 1375, - 1386, 1435, 2269, 2269, 1381, 1386, 1384, 1434, 1392, 1397, - 1385, 1389, 1387, 1401, 2269, 1389, 2269, 1392, 1443, 1386, - 1391, 1451, 1400, 1410, 1411, 2269, 1456, 1409, 1454, 2269, - 1460, 2269, 1403, 1418, 1406, 2269, 1416, 1417, 1466, 1424, - 1428, 2269, 1464, 1430, 1406, 1424, 1433, 1415, 1422, 1476, - 1435, 1434, 1479, 1427, 1481, 1482, 1432, 1436, 1441, 1434, - 2269, 1487, 1488, 2269, 1437, 1490, 1432, 2269, 1435, 1445, - 1489, 1437, 1452, 1439, 1454, 1446, 1446, 1501, 1458, 1446, - 1445, 1505, 1458, 2269, 1502, 1453, 1450, 2269, 1464, 1451, - - 2269, 1468, 1513, 1466, 1463, 1464, 2269, 1517, 1476, 1459, - 1461, 1477, 1459, 1475, 1476, 1485, 2269, 1475, 1527, 2269, - 1486, 2269, 2269, 1470, 1477, 1531, 1527, 2269, 2269, 1489, - 2269, 1529, 1491, 1492, 1477, 1478, 1486, 1540, 1488, 1537, - 1492, 2269, 1504, 1491, 1498, 2269, 1495, 1500, 1498, 1550, - 1551, 1499, 1495, 2269, 1510, 1511, 1512, 2269, 1513, 1503, - 1515, 1560, 1561, 1503, 1511, 1512, 1525, 2269, 1502, 1562, - 1523, 2269, 1527, 1512, 1512, 1527, 1520, 1519, 1530, 1517, - 2269, 1533, 1523, 1579, 1537, 1539, 1530, 1539, 1541, 1545, - 2269, 2269, 1538, 1587, 1530, 1589, 1590, 1591, 1549, 1593, - - 2269, 2269, 1589, 1551, 1552, 1539, 1598, 1541, 1546, 1537, - 1602, 1555, 1556, 1546, 1563, 1562, 1603, 1547, 1566, 2269, - 1563, 1568, 1569, 1614, 1571, 1574, 1561, 2269, 1618, 2269, - 2269, 2269, 1579, 2269, 1561, 1621, 1622, 1565, 2269, 1584, - 1625, 1584, 2269, 1575, 1565, 1624, 1590, 1583, 1579, 1633, - 1577, 1582, 1578, 1580, 2269, 1585, 1595, 1580, 2269, 1582, - 1594, 2269, 2269, 1599, 1592, 2269, 1594, 1602, 1647, 1588, - 1590, 1587, 1611, 2269, 1604, 1607, 1596, 1650, 1597, 1605, - 1614, 1615, 1608, 1603, 1607, 1619, 1664, 2269, 1610, 1622, - 1667, 1616, 1615, 1670, 1623, 1610, 1625, 1630, 1675, 1676, - - 1633, 1678, 1628, 1622, 2269, 1638, 1682, 2269, 1639, 1641, - 2269, 1632, 1646, 1642, 1635, 2269, 2269, 1689, 2269, 1646, - 1691, 1652, 2269, 1693, 1694, 1649, 1648, 1649, 1639, 2269, - 1694, 2269, 1641, 2269, 2269, 1701, 1643, 1659, 1704, 1665, - 1662, 2269, 1703, 1652, 2269, 1664, 1657, 1712, 1654, 1656, - 1671, 1656, 2269, 1669, 1718, 1719, 1667, 1669, 2269, 2269, - 1663, 1679, 1724, 1725, 2269, 2269, 2269, 1731, 1736, 1741, - 1746, 1751, 1756, 1761, 1764, 1738, 1743, 1745, 1758 + 2291, 2292, 34, 2287, 145, 0, 207, 2292, 214, 221, + 13, 228, 2292, 2267, 118, 25, 2, 6, 2292, 2292, + 73, 11, 17, 2292, 2292, 2292, 104, 2275, 2228, 0, + 2265, 108, 2282, 24, 262, 2292, 2224, 67, 2230, 84, + 75, 88, 224, 91, 89, 290, 220, 2222, 206, 285, + 206, 204, 212, 60, 232, 2231, 247, 294, 315, 307, + 286, 2214, 230, 325, 354, 328, 2233, 0, 366, 382, + 397, 411, 404, 2292, 0, 2292, 419, 425, 216, 225, + 229, 227, 319, 329, 2292, 2230, 2271, 2292, 300, 2292, + + 438, 2258, 390, 2227, 331, 10, 406, 311, 408, 414, + 420, 2268, 0, 491, 409, 2210, 2207, 2211, 402, 2207, + 2215, 406, 2211, 2200, 2201, 2206, 78, 2216, 2199, 2208, + 2208, 95, 2199, 239, 2200, 2198, 396, 2246, 2250, 2190, + 2243, 2183, 2206, 2203, 2203, 2197, 336, 2190, 2188, 2189, + 2181, 2186, 2180, 413, 2191, 2184, 2175, 2174, 2188, 423, + 2174, 430, 422, 2168, 465, 420, 432, 2189, 2186, 2187, + 423, 2185, 2220, 2219, 423, 2165, 2165, 2166, 462, 2158, + 2175, 2167, 0, 456, 471, 471, 489, 479, 504, 2166, + 2292, 0, 2211, 509, 2160, 494, 501, 507, 2214, 516, + + 2213, 503, 2212, 2292, 553, 2211, 526, 2170, 2162, 2149, + 2160, 2164, 2165, 2162, 2159, 2158, 2149, 500, 2200, 2194, + 2158, 2139, 2136, 2144, 2139, 2153, 2149, 2137, 2149, 2149, + 2140, 2124, 2128, 2141, 2143, 2140, 2132, 2122, 2140, 2292, + 2135, 498, 2120, 2119, 2171, 2118, 2128, 2131, 541, 2127, + 2166, 2111, 2113, 2124, 2162, 2107, 2165, 2100, 2115, 535, + 2105, 2111, 2120, 2101, 2099, 2099, 2105, 2096, 2095, 2102, + 2092, 2151, 2107, 2106, 2100, 488, 2107, 2102, 2094, 2084, + 2099, 2098, 2093, 2097, 166, 2095, 2081, 2087, 2094, 2076, + 2077, 2080, 2077, 2076, 341, 2071, 2085, 2084, 2127, 2086, + + 399, 2077, 523, 2292, 2292, 536, 2292, 2292, 2064, 0, + 520, 515, 2112, 548, 2122, 548, 2292, 2121, 2292, 2115, + 598, 2292, 547, 2055, 2064, 2112, 2072, 2055, 2072, 2053, + 2059, 2111, 2066, 2061, 2064, 2059, 543, 2292, 2061, 2105, + 2099, 2057, 2054, 576, 2060, 2100, 2094, 2047, 2042, 2039, + 2090, 2047, 2036, 2052, 2086, 2032, 621, 2046, 2031, 2044, + 2042, 2030, 2040, 2035, 2042, 2037, 2033, 528, 2031, 2034, + 2029, 2015, 2027, 2023, 2073, 546, 2067, 2292, 2066, 2016, + 2015, 2014, 2007, 2009, 2021, 2012, 2001, 2018, 2013, 586, + 2060, 2013, 2010, 2013, 2292, 2012, 2001, 2001, 2013, 570, + + 1988, 1989, 2010, 580, 1992, 2043, 1988, 2002, 2005, 2000, + 1986, 1998, 1997, 1996, 1991, 1994, 1993, 1992, 1991, 572, + 2034, 1993, 2032, 2292, 1974, 1973, 629, 1986, 2292, 2292, + 1985, 0, 1974, 1966, 573, 2025, 2024, 2292, 2023, 2292, + 604, 672, 603, 2022, 1964, 1975, 2014, 1967, 1969, 1968, + 1956, 2292, 1961, 1967, 1970, 1953, 1968, 1955, 1954, 2292, + 591, 1956, 1953, 607, 1951, 1953, 2292, 1961, 1958, 1943, + 1956, 1951, 653, 1958, 1946, 1939, 1990, 2292, 1937, 1953, + 1987, 1948, 1945, 1946, 1930, 1947, 1981, 1932, 1927, 1926, + 1977, 1921, 560, 1940, 1914, 1921, 1926, 1936, 1970, 1974, + + 2292, 1919, 1915, 1913, 1922, 1916, 1923, 1907, 1907, 1917, + 1905, 1919, 1908, 1904, 1902, 2292, 1959, 2292, 1901, 1912, + 1951, 1896, 1901, 1910, 1904, 1898, 1907, 1949, 1943, 1905, + 1888, 1888, 1883, 1903, 1878, 1884, 1889, 1882, 1890, 1894, + 1877, 1935, 1876, 1928, 1873, 1874, 1873, 1885, 1874, 2292, + 1884, 2292, 1873, 1871, 2292, 1882, 1918, 1878, 0, 1862, + 1879, 1919, 2292, 2292, 2292, 608, 607, 655, 2292, 1870, + 1869, 614, 1876, 1856, 1855, 1908, 1853, 1906, 1851, 1850, + 1849, 1856, 1849, 1861, 1843, 1843, 1858, 1857, 612, 1856, + 1855, 1855, 1837, 1842, 1883, 1850, 1842, 1887, 1831, 1847, + + 1846, 2292, 1831, 1828, 1886, 1841, 1833, 1839, 1830, 1838, + 1823, 1839, 1821, 1833, 1834, 570, 1816, 1810, 1815, 1830, + 1827, 1828, 1807, 1817, 1823, 1866, 1821, 1813, 1804, 2292, + 1805, 1807, 1816, 1814, 1853, 1852, 1803, 16, 1812, 1849, + 1794, 1795, 1798, 1791, 2292, 1805, 1784, 1788, 1802, 1794, + 1839, 1791, 1798, 1836, 2292, 1781, 1795, 1779, 1793, 1796, + 1777, 1829, 1828, 1827, 1826, 1771, 1824, 1823, 2292, 1768, + 1782, 675, 1783, 1782, 1779, 1779, 1816, 1776, 1759, 1764, + 1766, 2292, 1772, 1762, 2292, 637, 625, 1756, 1754, 1761, + 1771, 1763, 1750, 1744, 1802, 629, 1806, 655, 1800, 1760, + + 1798, 1797, 1749, 1747, 1755, 1758, 1742, 1743, 1752, 1750, + 1732, 1787, 1738, 1746, 1747, 1783, 1744, 199, 643, 217, + 293, 351, 309, 353, 2292, 419, 446, 483, 544, 612, + 610, 614, 628, 619, 634, 638, 647, 644, 701, 702, + 653, 645, 655, 702, 660, 710, 2292, 711, 670, 672, + 668, 662, 665, 718, 681, 670, 683, 2292, 673, 684, + 673, 686, 688, 732, 733, 676, 687, 672, 695, 674, + 680, 735, 699, 683, 695, 739, 740, 741, 688, 743, + 707, 702, 709, 705, 690, 702, 703, 710, 696, 2292, + 761, 719, 721, 711, 723, 713, 726, 711, 718, 724, + + 716, 730, 770, 746, 733, 738, 735, 717, 724, 738, + 783, 736, 734, 743, 2292, 733, 748, 745, 731, 738, + 737, 735, 754, 751, 739, 746, 747, 756, 760, 796, + 758, 748, 747, 746, 757, 753, 809, 766, 751, 752, + 758, 774, 764, 2292, 774, 774, 767, 778, 776, 821, + 763, 765, 780, 767, 766, 828, 785, 771, 774, 2292, + 2292, 784, 789, 794, 782, 792, 794, 2292, 2292, 795, + 782, 800, 787, 781, 786, 804, 791, 841, 792, 844, + 790, 794, 852, 2292, 2292, 797, 801, 800, 797, 857, + 810, 800, 801, 797, 810, 821, 805, 823, 818, 819, + + 821, 814, 816, 817, 818, 818, 820, 835, 876, 833, + 838, 815, 838, 822, 2292, 829, 830, 844, 834, 832, + 882, 840, 830, 845, 846, 833, 865, 873, 842, 837, + 892, 893, 855, 895, 2292, 858, 862, 903, 851, 846, + 847, 859, 866, 855, 856, 852, 855, 856, 866, 875, + 911, 859, 877, 870, 865, 923, 880, 881, 872, 2292, + 874, 877, 885, 887, 872, 888, 882, 929, 895, 879, + 880, 2292, 896, 899, 882, 941, 884, 903, 2292, 902, + 905, 885, 903, 943, 901, 897, 894, 947, 948, 910, + 896, 914, 913, 914, 900, 915, 907, 914, 904, 922, + + 921, 908, 2292, 916, 922, 925, 970, 2292, 919, 924, + 968, 919, 932, 926, 930, 928, 926, 928, 938, 983, + 927, 932, 928, 987, 931, 943, 2292, 931, 939, 937, + 988, 950, 936, 937, 946, 958, 946, 944, 949, 959, + 960, 965, 1006, 978, 983, 965, 962, 958, 972, 955, + 955, 1015, 958, 2292, 958, 978, 977, 968, 957, 974, + 981, 1024, 985, 978, 982, 986, 969, 986, 977, 1032, + 979, 2292, 1029, 978, 981, 980, 981, 981, 1002, 999, + 1004, 1005, 991, 999, 1008, 988, 1003, 1010, 1052, 2292, + 1053, 1054, 996, 1006, 1016, 1019, 1007, 1003, 1010, 1019, + + 1007, 1014, 1015, 1027, 1068, 1015, 1013, 1015, 1032, 1073, + 1023, 1022, 1028, 1026, 1024, 1019, 1080, 1081, 1077, 1083, + 2292, 1040, 1033, 1024, 1043, 1031, 1041, 1038, 1043, 1039, + 1052, 1052, 2292, 1036, 1038, 1038, 2292, 1040, 1100, 1039, + 1058, 1059, 1061, 1052, 1106, 1107, 1060, 1045, 1059, 1067, + 1066, 1050, 1055, 1073, 2292, 1095, 1086, 1118, 1058, 1080, + 1075, 1075, 1079, 2292, 1066, 1068, 1085, 1080, 1084, 1129, + 1077, 1081, 2292, 1073, 1090, 1070, 1091, 1081, 1132, 1085, + 2292, 1099, 1099, 1137, 1084, 1139, 1098, 1103, 1089, 1149, + 1092, 1103, 1095, 1101, 1097, 1115, 1116, 1117, 2292, 2292, + + 1116, 2292, 1101, 1112, 1103, 1122, 1112, 1105, 1117, 1161, + 1125, 1114, 1121, 1122, 1128, 2292, 1121, 1173, 1114, 1175, + 2292, 1176, 1118, 1124, 1131, 1175, 1137, 2292, 2292, 1124, + 2292, 1126, 1140, 1145, 1128, 1187, 1144, 1145, 1146, 1186, + 1138, 1143, 1194, 1147, 1143, 1197, 2292, 1144, 1199, 1200, + 1157, 1159, 2292, 2292, 1142, 1204, 1200, 1164, 1207, 1149, + 1161, 1166, 1181, 1212, 2292, 1169, 1162, 1171, 1162, 1173, + 1218, 1165, 1180, 1216, 1168, 2292, 1164, 1180, 1181, 1182, + 1179, 1223, 1186, 1176, 1186, 1192, 1179, 1175, 1235, 1188, + 1232, 1238, 1196, 2292, 1197, 1190, 1199, 1201, 1198, 1188, + + 1191, 1191, 1196, 1251, 1198, 1253, 1196, 1255, 1251, 1192, + 1207, 1200, 1203, 1216, 1218, 1216, 1265, 2292, 1219, 2292, + 2292, 1224, 1216, 1226, 1211, 1267, 1213, 1274, 1218, 1228, + 1277, 2292, 1225, 1225, 1227, 1229, 1282, 1223, 1226, 2292, + 1227, 1246, 2292, 1230, 2292, 2292, 1243, 1245, 1246, 2292, + 1233, 1241, 2292, 1293, 1242, 1295, 1275, 2292, 1297, 1254, + 1299, 1250, 1297, 2292, 1245, 1253, 1247, 1244, 1247, 1250, + 1250, 1267, 1306, 1259, 1271, 1274, 1262, 1265, 1258, 1265, + 1256, 2292, 1278, 1263, 2292, 1265, 1266, 1281, 1281, 1284, + 1284, 1281, 1325, 1287, 1279, 2292, 1280, 2292, 1290, 2292, + + 1287, 1292, 1293, 1290, 1334, 1282, 1297, 1298, 1290, 2292, + 1287, 1288, 1288, 1294, 1293, 1291, 1305, 2292, 1346, 1293, + 2292, 1294, 1294, 1296, 1302, 2292, 1304, 1358, 1300, 1308, + 1311, 1322, 1320, 1364, 1317, 1326, 2292, 1323, 2292, 1320, + 1343, 2292, 1370, 2292, 1328, 1313, 1373, 1374, 1331, 1336, + 1318, 1378, 1379, 1375, 1339, 1336, 1332, 1325, 1380, 1338, + 1339, 1329, 1334, 1390, 1344, 1393, 1389, 1352, 1349, 1393, + 1341, 1346, 1344, 1403, 1359, 1347, 1406, 1364, 1408, 1369, + 1358, 1352, 1412, 1354, 1355, 1369, 1372, 1372, 1418, 1360, + 1377, 1373, 1377, 1361, 1419, 1420, 1367, 1422, 1385, 1386, + + 2292, 1386, 1387, 1374, 1373, 1429, 2292, 1370, 1388, 1437, + 1395, 1408, 2292, 1440, 1393, 2292, 2292, 1384, 1395, 1444, + 2292, 2292, 1390, 1395, 1393, 1443, 1401, 1406, 1394, 1410, + 1399, 1397, 1411, 2292, 1399, 2292, 1402, 1453, 1396, 1401, + 1462, 1410, 1420, 1421, 2292, 1466, 1420, 1464, 2292, 1470, + 2292, 1413, 1428, 1416, 2292, 1426, 1427, 1476, 1434, 1438, + 2292, 1474, 1440, 1416, 1434, 1443, 1425, 1432, 1486, 1445, + 1444, 1489, 1437, 1491, 1492, 1442, 1446, 1451, 1444, 2292, + 1497, 1498, 2292, 1447, 1500, 1442, 2292, 1445, 1455, 1499, + 1447, 1462, 1449, 1464, 1450, 1457, 1457, 1512, 1469, 1457, + + 1456, 1516, 1469, 2292, 1513, 1464, 1461, 2292, 1475, 1462, + 2292, 1479, 1524, 1477, 1474, 1475, 2292, 1528, 1487, 1470, + 1472, 1488, 1470, 1486, 1487, 1496, 2292, 1486, 1538, 2292, + 1497, 2292, 2292, 1481, 1488, 1542, 1538, 2292, 2292, 1500, + 2292, 1540, 1502, 1503, 1488, 1489, 1497, 1551, 1499, 1548, + 1549, 1504, 2292, 1516, 1503, 1510, 2292, 1507, 1512, 1510, + 1562, 1563, 1511, 1507, 2292, 1522, 1523, 1524, 2292, 1525, + 1515, 1527, 1572, 1573, 1515, 1523, 1524, 1537, 2292, 1514, + 1574, 1535, 2292, 1539, 1524, 1524, 1539, 1532, 1531, 1542, + 1529, 2292, 1545, 1533, 1536, 1592, 1550, 1552, 1543, 1552, + + 1554, 1558, 2292, 2292, 1551, 1600, 1543, 1602, 1603, 1604, + 1562, 1606, 2292, 2292, 1602, 1564, 1565, 1552, 1611, 1554, + 1559, 1550, 1615, 1568, 1569, 1559, 1576, 1575, 1616, 1560, + 1579, 1580, 2292, 1577, 1582, 1583, 1628, 1585, 1588, 1575, + 2292, 1632, 2292, 2292, 2292, 1593, 2292, 1575, 1635, 1636, + 1579, 2292, 1598, 1639, 1598, 2292, 1589, 1579, 1638, 1604, + 1597, 1593, 1647, 1590, 1592, 1597, 1593, 1595, 2292, 1600, + 1610, 1595, 2292, 1597, 1609, 2292, 2292, 1614, 1607, 2292, + 1609, 1617, 1662, 1603, 1605, 1602, 1626, 2292, 1613, 1620, + 1623, 1612, 1666, 1613, 1621, 1630, 1631, 1624, 1619, 1623, + + 1635, 1680, 2292, 1626, 1638, 1683, 1632, 1634, 1632, 1687, + 1640, 1627, 1642, 1647, 1692, 1693, 1650, 1695, 1645, 1639, + 2292, 1655, 1699, 2292, 1656, 1641, 1659, 2292, 1650, 1664, + 1660, 1653, 2292, 2292, 1707, 2292, 1664, 1709, 1670, 2292, + 1711, 1653, 1713, 1668, 1667, 1668, 1658, 2292, 1713, 2292, + 1660, 2292, 1672, 2292, 1721, 1663, 1679, 1724, 1685, 1682, + 1674, 2292, 1724, 1673, 2292, 1685, 1678, 1733, 1681, 1676, + 1678, 1693, 1678, 2292, 1739, 1692, 1741, 1742, 1690, 2292, + 1692, 2292, 2292, 1686, 1702, 1747, 1748, 2292, 2292, 2292, + 1754, 1759, 1764, 1769, 1774, 1779, 1784, 1787, 1761, 1766, + + 1768, 1781 } ; -static const flex_int16_t yy_def[1880] = +static const flex_int16_t yy_def[1903] = { 0, - 1868, 1868, 1869, 1869, 1868, 1868, 1868, 1868, 1868, 1868, - 1867, 1867, 1867, 1867, 1867, 1870, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1871, - 1867, 1867, 1867, 1872, 15, 1867, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1873, 45, 45, 45, 45, + 1891, 1891, 1892, 1892, 1891, 1891, 1891, 1891, 1891, 1891, + 1890, 1890, 1890, 1890, 1890, 1893, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1894, + 1890, 1890, 1890, 1895, 15, 1890, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1896, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1870, 1867, 1867, - 1867, 1867, 1867, 1867, 1874, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1871, 1867, 1872, 1867, + 45, 45, 45, 45, 45, 45, 45, 1893, 1890, 1890, + 1890, 1890, 1890, 1890, 1897, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1894, 1890, 1895, 1890, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1875, 45, 1873, 45, 45, 45, 45, 45, 45, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1898, 45, 1896, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1874, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1876, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1897, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1899, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1875, 1867, 1873, 45, 45, 45, 45, 45, + 45, 45, 1898, 1890, 1896, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1198,190 +1204,194 @@ static const flex_int16_t yy_def[1880] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1877, - 45, 45, 45, 45, 45, 45, 1867, 45, 1867, 45, - 1873, 1867, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, + 45, 45, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1900, + 45, 45, 45, 45, 45, 45, 1890, 45, 1890, 45, + 1896, 1890, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 45, 1867, 1867, - 1867, 1878, 45, 45, 45, 45, 45, 1867, 45, 1867, - 45, 1873, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 45, 45, 1867, - 45, 45, 45, 45, 45, 45, 1867, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 1890, 1890, + 1890, 1901, 45, 45, 45, 45, 45, 1890, 45, 1890, + 45, 1896, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 45, 45, 45, 45, 45, 1890, + 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1867, 45, 1867, 45, 45, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1890, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, - 45, 1867, 45, 45, 1867, 45, 45, 1867, 1879, 45, - 45, 45, 1867, 1867, 1867, 45, 45, 45, 1867, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, + 45, 1890, 45, 45, 1890, 45, 45, 1890, 1902, 45, + 45, 45, 1890, 1890, 1890, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1867, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 1867, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1867, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1867, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1867, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 1867, 45, - 45, 45, 45, 45, 45, 1867, 1867, 45, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, + 1890, 45, 45, 45, 45, 45, 45, 1890, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 1867, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1890, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1867, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1867, 45, - 45, 45, 45, 45, 45, 1867, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, - - 45, 45, 45, 45, 1867, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, + + 45, 45, 1890, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1867, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1867, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1867, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 1867, - 45, 45, 45, 45, 45, 45, 45, 45, 1867, 45, - 45, 45, 45, 45, 45, 1867, 45, 45, 45, 45, + 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1867, 1867, 45, 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 45, 45, 1867, 45, 45, 45, 45, - 45, 45, 1867, 1867, 45, 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 1867, 1867, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1890, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, + 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1890, 1890, + + 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, + 1890, 45, 45, 45, 45, 45, 45, 1890, 1890, 45, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, + 45, 45, 1890, 1890, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 1867, 1867, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1867, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 1867, 45, 1867, 1867, - 45, 45, 45, 1867, 45, 45, 1867, 45, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 1867, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 1890, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 45, 45, 45, 45, 45, 1890, + 45, 45, 1890, 45, 1890, 1890, 45, 45, 45, 1890, + 45, 45, 1890, 45, 45, 45, 45, 1890, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 45, 1867, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1867, 45, - 1867, 45, 1867, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 1867, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 1867, 45, 45, 45, 45, 1867, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, - 45, 1867, 45, 45, 1867, 45, 1867, 45, 45, 45, + 45, 1890, 45, 45, 1890, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1890, 45, 1890, 45, 1890, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, + 1890, 45, 45, 45, 45, 1890, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1890, 45, 1890, 45, + 45, 1890, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 1867, 45, - - 45, 45, 45, 45, 1867, 45, 45, 1867, 1867, 45, - 45, 45, 1867, 1867, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 1867, 45, 45, 45, - 45, 45, 45, 45, 45, 1867, 45, 45, 45, 1867, - 45, 1867, 45, 45, 45, 1867, 45, 45, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 45, 45, 45, + + 1890, 45, 45, 45, 45, 45, 1890, 45, 45, 45, + 45, 45, 1890, 45, 45, 1890, 1890, 45, 45, 45, + 1890, 1890, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1890, 45, 1890, 45, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 1890, 45, + 1890, 45, 45, 45, 1890, 45, 45, 45, 45, 45, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1890, + 45, 45, 1890, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 1867, 45, 45, 45, 1867, 45, 45, + + 45, 45, 45, 1890, 45, 45, 45, 1890, 45, 45, + 1890, 45, 45, 45, 45, 45, 1890, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1890, 45, 45, 1890, + 45, 1890, 1890, 45, 45, 45, 45, 1890, 1890, 45, + 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1890, 45, 45, 45, 1890, 45, 45, 45, + 45, 45, 45, 45, 1890, 45, 45, 45, 1890, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, + 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 1890, 1890, 45, 45, 45, 45, 45, 45, + 45, 45, 1890, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 1867, 45, 45, - - 1867, 45, 45, 45, 45, 45, 1867, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1867, 45, 45, 1867, - 45, 1867, 1867, 45, 45, 45, 45, 1867, 1867, 45, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 45, 1867, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 1867, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, - 45, 1867, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1867, 1867, 45, 45, 45, 45, 45, 45, 45, 45, - - 1867, 1867, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1867, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 1867, - 1867, 1867, 45, 1867, 45, 45, 45, 45, 1867, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 45, 45, 1867, 45, - 45, 1867, 1867, 45, 45, 1867, 45, 45, 45, 45, - 45, 45, 45, 1867, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1867, 45, 45, + 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, + 1890, 45, 1890, 1890, 1890, 45, 1890, 45, 45, 45, + 45, 1890, 45, 45, 45, 1890, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1890, 45, + 45, 45, 1890, 45, 45, 1890, 1890, 45, 45, 1890, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1867, 45, 45, 1867, 45, 45, - 1867, 45, 45, 45, 45, 1867, 1867, 45, 1867, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 45, 1867, - 45, 1867, 45, 1867, 1867, 45, 45, 45, 45, 45, - 45, 1867, 45, 45, 1867, 45, 45, 45, 45, 45, - 45, 45, 1867, 45, 45, 45, 45, 45, 1867, 1867, - 45, 45, 45, 45, 1867, 1867, 0, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867 + 45, 45, 1890, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1890, 45, 45, 1890, 45, 45, 45, 1890, 45, 45, + 45, 45, 1890, 1890, 45, 1890, 45, 45, 45, 1890, + 45, 45, 45, 45, 45, 45, 45, 1890, 45, 1890, + 45, 1890, 45, 1890, 45, 45, 45, 45, 45, 45, + 45, 1890, 45, 45, 1890, 45, 45, 45, 45, 45, + 45, 45, 45, 1890, 45, 45, 45, 45, 45, 1890, + 45, 1890, 1890, 45, 45, 45, 45, 1890, 1890, 0, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + + 1890, 1890 } ; -static const flex_int16_t yy_nxt[2343] = +static const flex_int16_t yy_nxt[2366] = { 0, - 1867, 13, 14, 13, 1867, 15, 16, 1867, 17, 18, + 1890, 13, 14, 13, 1890, 15, 16, 1890, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, - 84, 757, 37, 14, 37, 85, 25, 26, 38, 100, - 1867, 27, 37, 14, 37, 42, 28, 42, 38, 90, + 84, 758, 37, 14, 37, 85, 25, 26, 38, 100, + 1890, 27, 37, 14, 37, 42, 28, 42, 38, 90, 91, 29, 197, 30, 13, 14, 13, 89, 90, 25, 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, - 758, 13, 14, 13, 33, 40, 101, 90, 91, 197, + 759, 13, 14, 13, 33, 40, 101, 90, 91, 197, 89, 34, 35, 13, 14, 13, 93, 15, 16, 94, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 13, 14, 13, 89, 39, 103, 25, 26, @@ -1402,141 +1412,141 @@ static const flex_int16_t yy_nxt[2343] = 80, 80, 80, 80, 80, 79, 105, 82, 82, 82, 82, 82, 410, 81, 83, 83, 83, 83, 83, 79, 81, 82, 82, 82, 82, 82, 184, 81, 108, 105, - 103, 119, 836, 131, 81, 185, 81, 184, 109, 120, + 103, 119, 838, 131, 81, 185, 81, 184, 109, 120, 134, 135, 121, 81, 132, 122, 186, 123, 136, 124, - 81, 108, 184, 840, 133, 164, 115, 81, 45, 165, + 81, 108, 184, 842, 133, 164, 115, 81, 45, 165, 139, 185, 116, 187, 45, 117, 109, 45, 232, 45, 140, 45, 141, 45, 186, 113, 143, 144, 45, 45, - 145, 45, 45, 841, 233, 100, 146, 45, 45, 45, + 145, 45, 45, 843, 233, 100, 146, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 125, 160, 45, 126, 127, 161, 45, 128, 129, 147, 45, 107, 101, 148, 199, 162, 317, 149, 45, 185, - 130, 420, 45, 110, 45, 114, 842, 155, 843, 150, + 130, 420, 45, 110, 45, 114, 844, 155, 845, 150, 152, 196, 153, 151, 154, 156, 186, 157, 173, 174, 166, 199, 158, 159, 167, 188, 179, 168, 108, 83, 83, 83, 83, 83, 169, 170, 180, 196, 109, 171, 172, 181, 81, 79, 189, 80, 80, 80, 80, 80, - 248, 175, 844, 176, 249, 87, 177, 87, 81, 426, + 248, 175, 846, 176, 249, 87, 177, 87, 81, 426, 88, 88, 88, 88, 88, 81, 109, 83, 83, 83, 83, 83, 79, 178, 82, 82, 82, 82, 82, 194, 81, 81, 88, 88, 88, 88, 88, 81, 88, 88, 88, 88, 88, 99, 198, 200, 202, 201, 194, 211, 99, 198, 236, 81, 216, 237, 199, 194, 212, 238, - 81, 427, 213, 217, 218, 206, 845, 270, 290, 202, + 81, 427, 213, 217, 218, 206, 847, 270, 290, 202, 262, 271, 198, 200, 201, 273, 207, 282, 283, 198, 99, 256, 291, 295, 99, 263, 264, 265, 99, 267, - 284, 303, 268, 269, 285, 201, 99, 305, 286, 846, + 284, 303, 268, 269, 285, 201, 99, 305, 286, 848, 99, 304, 99, 192, 205, 205, 205, 205, 205, 304, 274, 275, 276, 205, 205, 205, 205, 205, 205, 303, 305, 277, 299, 278, 303, 279, 280, 304, 281, 314, 305, 312, 315, 316, 320, 307, 205, 205, 205, 205, - 205, 205, 318, 360, 399, 381, 847, 400, 312, 429, + 205, 205, 318, 360, 399, 381, 849, 400, 312, 429, 334, 368, 306, 308, 312, 435, 316, 314, 335, 315, 361, 320, 429, 336, 337, 318, 321, 321, 321, 321, 321, 323, 429, 433, 437, 321, 321, 321, 321, 321, 321, 382, 439, 434, 435, 430, 464, 435, 457, 492, - 493, 516, 465, 848, 494, 383, 502, 437, 321, 321, + 493, 516, 465, 850, 494, 383, 502, 437, 321, 321, 321, 321, 321, 321, 369, 458, 503, 370, 562, 622, - 439, 442, 442, 442, 442, 442, 443, 735, 736, 623, + 439, 442, 442, 442, 442, 442, 443, 736, 737, 623, 442, 442, 442, 442, 442, 442, 478, 548, 526, 531, 549, 479, 527, 532, 555, 566, 562, 567, 562, 556, 686, 687, 584, 442, 442, 442, 442, 442, 442, 517, - 585, 803, 586, 587, 588, 592, 589, 849, 602, 850, - 685, 789, 566, 603, 567, 688, 568, 686, 593, 687, - 594, 691, 790, 802, 803, 812, 851, 852, 692, 480, - 853, 813, 854, 855, 481, 45, 45, 45, 45, 45, - 815, 816, 856, 817, 45, 45, 45, 45, 45, 45, - - 837, 802, 857, 858, 838, 859, 860, 861, 839, 862, - 864, 865, 863, 866, 867, 868, 869, 45, 45, 45, + 585, 804, 586, 587, 588, 592, 589, 851, 602, 852, + 685, 853, 566, 603, 567, 688, 568, 686, 593, 687, + 594, 691, 709, 803, 804, 710, 813, 854, 692, 480, + 790, 855, 814, 856, 481, 45, 45, 45, 45, 45, + 857, 791, 858, 859, 45, 45, 45, 45, 45, 45, + + 839, 803, 816, 817, 840, 818, 860, 861, 841, 862, + 863, 864, 866, 867, 865, 868, 869, 45, 45, 45, 45, 45, 45, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, - 897, 898, 899, 900, 902, 903, 904, 907, 908, 909, - 901, 911, 912, 905, 913, 910, 914, 906, 915, 916, + 897, 898, 899, 900, 901, 902, 904, 905, 906, 909, + 910, 911, 903, 913, 914, 907, 915, 912, 916, 908, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 952, 953, 926, 954, 955, + 947, 948, 949, 950, 951, 952, 953, 954, 955, 928, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, - 966, 967, 968, 969, 971, 972, 973, 974, 970, 975, - 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, - 986, 987, 988, 989, 990, 991, 992, 994, 995, 996, - 993, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 966, 967, 968, 969, 970, 971, 972, 974, 975, 976, + 977, 973, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 997, 998, 999, 996, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1042, - 1065, 1066, 1041, 1067, 1068, 1069, 1070, 1071, 1072, 1073, + 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, + 1066, 1067, 1045, 1068, 1069, 1044, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, - 1084, 1085, 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1094, + 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, - 1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1121, 1111, 1122, 1123, 1124, - 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, + 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1115, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, - 1087, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1154, - 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, + 1145, 1146, 1147, 1148, 1091, 1149, 1150, 1151, 1152, 1153, + 1154, 1155, 1156, 1158, 1157, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, - 1174, 1175, 1176, 1177, 1178, 1179, 1152, 1153, 1180, 1181, - 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, - 1192, 1193, 1194, 1195, 1197, 1199, 1200, 1201, 1196, 1202, - 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, + 1156, 1157, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, + 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1202, + 1204, 1205, 1206, 1201, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, - 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1198, 1241, + 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, - 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, + 1243, 1244, 1245, 1203, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, - 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1258, - 1281, 1282, 1283, 1284, 1285, 1259, 1286, 1287, 1288, 1289, - 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, + 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, + 1282, 1283, 1284, 1285, 1263, 1286, 1287, 1288, 1289, 1290, + 1264, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, - 1330, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, + 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, - 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1360, 1361, - 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1351, 1380, - 1381, 1382, 1383, 1331, 1384, 1385, 1386, 1387, 1388, 1389, - 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1398, 1399, 1400, - 1401, 1359, 1402, 1403, 1397, 1404, 1405, 1406, 1407, 1408, - 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, + 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, + 1361, 1362, 1363, 1364, 1366, 1367, 1368, 1369, 1370, 1371, + 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1385, 1357, 1386, 1387, 1388, 1389, 1337, + 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1405, 1406, 1407, 1365, 1408, 1409, + 1410, 1404, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, - 1429, 1430, 1431, 1432, 1434, 1435, 1436, 1437, 1433, 1438, + 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, - 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, - 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1434, 1456, 1457, - 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, + 1439, 1441, 1442, 1443, 1444, 1440, 1445, 1446, 1447, 1448, + 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, 1462, 1441, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, - 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1518, - 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1517, - 1528, 1529, 1530, 1504, 1531, 1532, 1533, 1534, 1535, 1536, + 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1526, 1527, 1528, + 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1525, 1536, 1537, - 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, + 1538, 1512, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, - 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1537, 1595, 1596, - 1597, 1598, 1599, 1573, 1600, 1601, 1602, 1603, 1604, 1605, - 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, + 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, + 1598, 1599, 1600, 1601, 1602, 1603, 1546, 1604, 1605, 1606, + 1607, 1608, 1582, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, @@ -1563,79 +1573,81 @@ static const flex_int16_t yy_nxt[2343] = 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, - 1846, 1848, 1847, 1849, 1850, 1851, 1852, 1853, 1854, 1855, + 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, - 1866, 12, 12, 12, 12, 12, 36, 36, 36, 36, - 36, 78, 310, 78, 78, 78, 97, 432, 97, 559, - 97, 99, 99, 99, 99, 99, 112, 112, 112, 112, - 112, 183, 99, 183, 183, 183, 203, 203, 203, 835, - 834, 833, 832, 831, 830, 829, 828, 827, 826, 825, - 824, 823, 822, 821, 820, 819, 818, 814, 811, 810, - 809, 808, 807, 806, 805, 804, 801, 800, 799, 798, - - 797, 796, 795, 794, 793, 792, 791, 788, 787, 786, - 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, - 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, - 765, 764, 763, 762, 761, 760, 759, 756, 755, 754, - 753, 752, 751, 750, 749, 748, 747, 746, 745, 744, - 743, 742, 741, 740, 739, 738, 737, 734, 733, 732, - 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, - 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, - 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, - 701, 700, 699, 698, 697, 696, 695, 694, 693, 690, - - 689, 685, 684, 683, 682, 681, 680, 679, 678, 677, - 676, 675, 674, 673, 672, 671, 670, 669, 668, 667, - 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, - 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, - 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, - 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, - 626, 625, 624, 621, 620, 619, 618, 617, 616, 615, - 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, - 604, 601, 600, 599, 598, 597, 596, 595, 591, 590, - 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, - - 573, 572, 571, 570, 569, 565, 564, 563, 561, 560, - 558, 557, 554, 553, 552, 551, 550, 547, 546, 545, - 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, - 534, 533, 530, 529, 528, 525, 524, 523, 522, 521, - 520, 519, 518, 515, 514, 513, 512, 511, 510, 509, - 508, 507, 506, 505, 504, 501, 500, 499, 498, 497, - 496, 495, 491, 490, 489, 488, 487, 486, 485, 484, - 483, 482, 477, 476, 475, 474, 473, 472, 471, 470, - 469, 468, 467, 466, 463, 462, 461, 460, 459, 456, - 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, - - 445, 444, 441, 440, 438, 436, 431, 428, 425, 424, - 423, 422, 421, 419, 418, 417, 416, 415, 414, 413, - 412, 411, 408, 407, 406, 405, 404, 403, 402, 401, - 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, - 388, 387, 386, 385, 384, 380, 379, 378, 377, 376, - 375, 374, 373, 372, 371, 367, 366, 365, 364, 363, - 362, 359, 358, 357, 356, 355, 354, 353, 352, 351, - 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, - 340, 339, 338, 333, 332, 331, 330, 329, 328, 327, - 326, 325, 324, 322, 204, 319, 317, 313, 311, 309, - - 302, 301, 300, 298, 297, 296, 294, 293, 292, 289, - 288, 287, 272, 266, 261, 260, 259, 258, 257, 255, - 254, 253, 252, 251, 250, 247, 246, 245, 244, 243, - 242, 241, 240, 239, 235, 234, 231, 228, 227, 226, - 225, 222, 221, 220, 219, 215, 214, 210, 209, 208, - 204, 195, 193, 191, 190, 182, 163, 142, 118, 104, - 102, 43, 98, 96, 95, 86, 43, 1867, 11, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867 + 1866, 1868, 1867, 1869, 1870, 1871, 1872, 1873, 1874, 1875, + 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, + 1886, 1887, 1888, 1889, 12, 12, 12, 12, 12, 36, + 36, 36, 36, 36, 78, 310, 78, 78, 78, 97, + 432, 97, 559, 97, 99, 99, 99, 99, 99, 112, + 112, 112, 112, 112, 183, 99, 183, 183, 183, 203, + 203, 203, 837, 836, 835, 834, 833, 832, 831, 830, + + 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, + 819, 815, 812, 811, 810, 809, 808, 807, 806, 805, + 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, + 792, 789, 788, 787, 786, 785, 784, 783, 782, 781, + 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, + 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, + 760, 757, 756, 755, 754, 753, 752, 751, 750, 749, + 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, + 738, 735, 734, 733, 732, 731, 730, 729, 728, 727, + 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, + + 716, 715, 714, 713, 712, 711, 708, 707, 706, 705, + 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, + 694, 693, 690, 689, 685, 684, 683, 682, 681, 680, + 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, + 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, + 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, + 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, + 629, 628, 627, 626, 625, 624, 621, 620, 619, 618, + 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, + + 607, 606, 605, 604, 601, 600, 599, 598, 597, 596, + 595, 591, 590, 583, 582, 581, 580, 579, 578, 577, + 576, 575, 574, 573, 572, 571, 570, 569, 565, 564, + 563, 561, 560, 558, 557, 554, 553, 552, 551, 550, + 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, + 537, 536, 535, 534, 533, 530, 529, 528, 525, 524, + 523, 522, 521, 520, 519, 518, 515, 514, 513, 512, + 511, 510, 509, 508, 507, 506, 505, 504, 501, 500, + 499, 498, 497, 496, 495, 491, 490, 489, 488, 487, + 486, 485, 484, 483, 482, 477, 476, 475, 474, 473, + + 472, 471, 470, 469, 468, 467, 466, 463, 462, 461, + 460, 459, 456, 455, 454, 453, 452, 451, 450, 449, + 448, 447, 446, 445, 444, 441, 440, 438, 436, 431, + 428, 425, 424, 423, 422, 421, 419, 418, 417, 416, + 415, 414, 413, 412, 411, 408, 407, 406, 405, 404, + 403, 402, 401, 398, 397, 396, 395, 394, 393, 392, + 391, 390, 389, 388, 387, 386, 385, 384, 380, 379, + 378, 377, 376, 375, 374, 373, 372, 371, 367, 366, + 365, 364, 363, 362, 359, 358, 357, 356, 355, 354, + 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, + + 343, 342, 341, 340, 339, 338, 333, 332, 331, 330, + 329, 328, 327, 326, 325, 324, 322, 204, 319, 317, + 313, 311, 309, 302, 301, 300, 298, 297, 296, 294, + 293, 292, 289, 288, 287, 272, 266, 261, 260, 259, + 258, 257, 255, 254, 253, 252, 251, 250, 247, 246, + 245, 244, 243, 242, 241, 240, 239, 235, 234, 231, + 228, 227, 226, 225, 222, 221, 220, 219, 215, 214, + 210, 209, 208, 204, 195, 193, 191, 190, 182, 163, + 142, 118, 104, 102, 43, 98, 96, 95, 86, 43, + 1890, 11, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890 } ; -static const flex_int16_t yy_chk[2343] = +static const flex_int16_t yy_chk[2366] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1664,237 +1676,239 @@ static const flex_int16_t yy_chk[2343] = 17, 17, 17, 17, 17, 19, 62, 19, 19, 19, 19, 19, 285, 17, 20, 20, 20, 20, 20, 22, 19, 22, 22, 22, 22, 22, 89, 20, 53, 62, - 57, 59, 717, 61, 22, 90, 17, 92, 53, 59, + 57, 59, 718, 61, 22, 90, 17, 92, 53, 59, 62, 63, 59, 19, 61, 59, 91, 59, 63, 59, - 20, 53, 89, 719, 61, 73, 57, 22, 45, 73, + 20, 53, 89, 720, 61, 73, 57, 22, 45, 73, 65, 90, 57, 92, 45, 57, 53, 45, 134, 45, 65, 45, 65, 45, 91, 56, 67, 67, 45, 45, - 67, 45, 56, 720, 134, 99, 67, 45, 45, 45, + 67, 45, 56, 721, 134, 99, 67, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 60, 71, 56, 60, 60, 71, 56, 60, 60, 68, 56, 69, 99, 68, 108, 71, 295, 68, 56, 93, - 60, 295, 56, 76, 56, 56, 721, 70, 722, 68, + 60, 295, 56, 76, 56, 56, 722, 70, 723, 68, 69, 105, 69, 68, 69, 70, 94, 70, 75, 75, 74, 108, 70, 70, 74, 93, 76, 74, 75, 79, 79, 79, 79, 79, 74, 74, 76, 105, 75, 74, 74, 76, 79, 80, 94, 80, 80, 80, 80, 80, - 147, 75, 723, 75, 147, 81, 75, 81, 80, 301, + 147, 75, 724, 75, 147, 81, 75, 81, 80, 301, 81, 81, 81, 81, 81, 79, 75, 83, 83, 83, 83, 83, 82, 75, 82, 82, 82, 82, 82, 103, 83, 80, 87, 87, 87, 87, 87, 82, 88, 88, 88, 88, 88, 101, 107, 109, 111, 110, 115, 119, 101, 154, 137, 83, 122, 137, 175, 103, 119, 137, - 82, 301, 119, 122, 122, 115, 725, 163, 171, 111, + 82, 301, 119, 122, 122, 115, 726, 163, 171, 111, 160, 163, 107, 109, 110, 165, 115, 166, 166, 154, 101, 154, 171, 175, 101, 160, 160, 160, 101, 162, - 167, 184, 162, 162, 167, 179, 101, 186, 167, 726, + 167, 184, 162, 162, 167, 179, 101, 186, 167, 727, 101, 185, 101, 101, 114, 114, 114, 114, 114, 188, 165, 165, 165, 114, 114, 114, 114, 114, 114, 184, 186, 165, 179, 165, 187, 165, 165, 185, 165, 196, 189, 194, 197, 198, 202, 188, 114, 114, 114, 114, - 114, 114, 200, 242, 276, 260, 727, 276, 207, 303, + 114, 114, 200, 242, 276, 260, 728, 276, 207, 303, 218, 249, 187, 189, 194, 312, 198, 196, 218, 197, 242, 202, 306, 218, 218, 200, 205, 205, 205, 205, 205, 207, 303, 311, 314, 205, 205, 205, 205, 205, 205, 260, 316, 311, 312, 306, 344, 323, 337, 368, - 368, 390, 344, 728, 368, 260, 376, 314, 205, 205, + 368, 390, 344, 729, 368, 260, 376, 314, 205, 205, 205, 205, 205, 205, 249, 337, 376, 249, 435, 493, 316, 321, 321, 321, 321, 321, 323, 616, 616, 493, 321, 321, 321, 321, 321, 321, 357, 420, 400, 404, 420, 357, 400, 404, 427, 441, 435, 441, 443, 427, 566, 567, 461, 321, 321, 321, 321, 321, 321, 390, - 461, 687, 461, 461, 461, 464, 461, 729, 473, 730, - 568, 672, 441, 473, 441, 568, 443, 566, 464, 567, - 464, 572, 672, 686, 687, 696, 731, 732, 572, 357, - 733, 696, 734, 735, 357, 442, 442, 442, 442, 442, - 698, 698, 736, 698, 442, 442, 442, 442, 442, 442, - - 718, 686, 737, 738, 718, 739, 740, 741, 718, 742, - 743, 744, 742, 745, 747, 748, 749, 442, 442, 442, - 442, 442, 442, 750, 751, 752, 753, 754, 755, 756, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 783, 784, 785, 786, - 781, 787, 788, 783, 790, 786, 791, 783, 792, 793, - 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, - 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, - - 825, 826, 827, 828, 829, 830, 831, 803, 832, 833, - 834, 835, 836, 837, 838, 839, 840, 841, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 848, 853, - 854, 855, 856, 857, 860, 861, 862, 863, 864, 865, - 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, - 874, 878, 879, 880, 881, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, - 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, - 909, 910, 911, 912, 914, 915, 916, 917, 918, 919, - 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, - - 930, 931, 932, 934, 935, 936, 937, 938, 939, 940, - 941, 942, 943, 944, 945, 946, 947, 948, 949, 926, - 950, 951, 925, 952, 953, 954, 955, 956, 958, 959, - 960, 961, 962, 963, 964, 965, 966, 967, 968, 970, - 971, 972, 973, 974, 975, 977, 978, 979, 980, 981, - 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 996, 997, 998, 999, 1001, 1002, - 1003, 1004, 1006, 1007, 1008, 1009, 997, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - 1023, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, - - 973, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1043, - 1042, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1052, 1053, - 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1067, 1069, 1070, 1041, 1042, 1071, 1072, - 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, - 1083, 1084, 1085, 1087, 1088, 1089, 1090, 1091, 1087, 1092, - 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, - 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1122, 1123, - 1124, 1125, 1126, 1127, 1128, 1130, 1131, 1132, 1088, 1134, + 461, 687, 461, 461, 461, 464, 461, 730, 473, 731, + 568, 732, 441, 473, 441, 568, 443, 566, 464, 567, + 464, 572, 589, 686, 687, 589, 696, 733, 572, 357, + 672, 734, 696, 735, 357, 442, 442, 442, 442, 442, + 736, 672, 737, 738, 442, 442, 442, 442, 442, 442, + + 719, 686, 698, 698, 719, 698, 739, 740, 719, 741, + 742, 743, 744, 745, 743, 746, 748, 442, 442, 442, + 442, 442, 442, 749, 750, 751, 752, 753, 754, 755, + 756, 757, 759, 760, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, + 777, 778, 779, 780, 781, 782, 783, 784, 784, 785, + 786, 787, 782, 788, 789, 784, 791, 787, 792, 784, + 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, + 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, + 813, 814, 816, 817, 818, 819, 820, 821, 822, 823, + + 824, 825, 826, 827, 828, 829, 830, 831, 832, 804, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, + 843, 845, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 850, 855, 856, 857, 858, 859, 862, 863, 864, + 865, 866, 867, 870, 871, 872, 873, 874, 875, 876, + 877, 878, 879, 876, 880, 881, 882, 883, 886, 887, + 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, + 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, + 908, 909, 910, 911, 912, 913, 914, 916, 917, 918, + 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, + + 929, 930, 931, 932, 933, 934, 936, 937, 938, 939, + 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, + 950, 951, 928, 952, 953, 927, 954, 955, 956, 957, + 958, 959, 961, 962, 963, 964, 965, 966, 967, 968, + 969, 970, 971, 973, 974, 975, 976, 977, 978, 980, + 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1004, 1005, 1006, 1007, 1009, 1010, 1011, 1012, + 1000, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1026, 1028, 1029, 1030, 1031, 1032, + + 1033, 1034, 1035, 1036, 976, 1037, 1038, 1039, 1040, 1041, + 1042, 1043, 1044, 1046, 1045, 1047, 1048, 1049, 1050, 1051, + 1052, 1053, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, + 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1073, + 1044, 1045, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, + 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, + 1093, 1094, 1095, 1091, 1096, 1097, 1098, 1099, 1100, 1101, + 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, + 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1122, + 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, + + 1134, 1135, 1136, 1092, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, + 1154, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165, + 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1174, 1175, 1176, + 1177, 1178, 1179, 1180, 1156, 1182, 1183, 1184, 1185, 1186, + 1157, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, + 1196, 1197, 1198, 1201, 1203, 1204, 1205, 1206, 1207, 1208, + 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, 1218, 1219, + 1220, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1232, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + + 1244, 1245, 1246, 1248, 1249, 1250, 1251, 1252, 1255, 1256, + 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1266, 1267, + 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278, + 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, + 1289, 1290, 1291, 1292, 1263, 1293, 1295, 1296, 1297, 1240, + 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, + 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1271, 1315, 1316, + 1317, 1311, 1319, 1322, 1323, 1324, 1325, 1326, 1327, 1328, + 1329, 1330, 1331, 1333, 1334, 1335, 1336, 1337, 1338, 1339, + 1341, 1342, 1344, 1347, 1348, 1349, 1351, 1352, 1354, 1355, + + 1356, 1357, 1359, 1360, 1361, 1356, 1362, 1363, 1365, 1366, + 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, + 1377, 1378, 1379, 1380, 1357, 1381, 1383, 1384, 1386, 1387, + 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1397, 1399, + 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1411, + 1412, 1413, 1414, 1415, 1416, 1417, 1419, 1420, 1422, 1423, + 1424, 1425, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, + 1435, 1436, 1438, 1440, 1441, 1443, 1445, 1446, 1447, 1448, + 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1455, 1466, 1467, + + 1468, 1441, 1469, 1470, 1471, 1472, 1473, 1473, 1474, 1475, + 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, + 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, + 1496, 1497, 1498, 1499, 1500, 1502, 1503, 1504, 1505, 1506, + 1508, 1509, 1510, 1511, 1512, 1514, 1515, 1518, 1519, 1520, + 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, + 1533, 1535, 1537, 1538, 1539, 1540, 1474, 1541, 1542, 1543, + 1544, 1546, 1512, 1547, 1548, 1550, 1552, 1553, 1554, 1556, + 1557, 1558, 1559, 1560, 1562, 1563, 1564, 1565, 1566, 1567, + 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, - 1145, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1154, 1155, - 1156, 1157, 1158, 1159, 1161, 1162, 1163, 1164, 1165, 1166, - 1167, 1168, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1152, - 1178, 1179, 1180, 1181, 1182, 1153, 1183, 1184, 1185, 1186, - 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1196, 1198, 1199, - 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, - 1210, 1212, 1213, 1214, 1215, 1217, 1218, 1219, 1220, 1221, - 1222, 1225, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, - 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1243, 1244, 1245, - - 1246, 1247, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, - 1258, 1259, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, - 1269, 1270, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1258, 1289, - 1290, 1291, 1292, 1235, 1293, 1294, 1295, 1296, 1297, 1298, - 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, - 1309, 1266, 1310, 1311, 1305, 1313, 1316, 1317, 1318, 1319, - 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1328, 1329, 1330, - 1331, 1332, 1333, 1335, 1336, 1338, 1341, 1342, 1343, 1345, - 1346, 1348, 1349, 1350, 1351, 1353, 1354, 1355, 1350, 1356, - - 1357, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, - 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1351, 1376, 1377, - 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, - 1390, 1392, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, - 1402, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1412, 1413, - 1415, 1416, 1417, 1418, 1420, 1421, 1422, 1423, 1424, 1425, - 1426, 1427, 1428, 1429, 1431, 1433, 1434, 1436, 1438, 1439, - 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, - 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1448, - 1459, 1460, 1461, 1434, 1462, 1463, 1464, 1465, 1465, 1466, - - 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, - 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, - 1487, 1488, 1489, 1490, 1491, 1492, 1494, 1495, 1496, 1497, - 1498, 1500, 1501, 1502, 1503, 1504, 1506, 1507, 1510, 1511, - 1512, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, - 1524, 1526, 1528, 1529, 1530, 1531, 1532, 1466, 1533, 1534, - 1535, 1537, 1538, 1504, 1539, 1541, 1543, 1544, 1545, 1547, - 1548, 1549, 1550, 1551, 1553, 1554, 1555, 1556, 1557, 1558, - 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, - 1569, 1570, 1572, 1573, 1575, 1576, 1577, 1579, 1580, 1581, - - 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, - 1592, 1593, 1595, 1596, 1597, 1599, 1600, 1602, 1603, 1604, - 1605, 1606, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, - 1616, 1618, 1619, 1621, 1624, 1625, 1626, 1627, 1630, 1632, - 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1643, - 1644, 1645, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1655, - 1656, 1657, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, - 1667, 1669, 1670, 1671, 1673, 1674, 1675, 1676, 1677, 1678, - 1679, 1680, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, - 1690, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1703, - - 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, - 1714, 1715, 1716, 1717, 1718, 1719, 1721, 1722, 1723, 1724, - 1725, 1726, 1727, 1729, 1733, 1735, 1736, 1737, 1738, 1740, - 1741, 1742, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, - 1752, 1753, 1754, 1756, 1757, 1758, 1760, 1761, 1764, 1765, - 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1775, 1776, 1777, - 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, - 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, - 1799, 1800, 1801, 1802, 1803, 1804, 1806, 1807, 1809, 1810, - 1812, 1813, 1814, 1815, 1818, 1820, 1821, 1822, 1824, 1825, - - 1826, 1827, 1828, 1829, 1831, 1833, 1836, 1837, 1838, 1839, - 1840, 1841, 1840, 1843, 1844, 1846, 1847, 1848, 1849, 1850, - 1851, 1852, 1854, 1855, 1856, 1857, 1858, 1861, 1862, 1863, - 1864, 1868, 1868, 1868, 1868, 1868, 1869, 1869, 1869, 1869, - 1869, 1870, 1876, 1870, 1870, 1870, 1871, 1877, 1871, 1878, - 1871, 1872, 1872, 1872, 1872, 1872, 1873, 1873, 1873, 1873, - 1873, 1874, 1879, 1874, 1874, 1874, 1875, 1875, 1875, 716, - 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, - 705, 704, 703, 702, 701, 700, 699, 697, 695, 694, - 693, 692, 691, 690, 689, 688, 684, 683, 681, 680, - - 679, 678, 677, 676, 675, 674, 673, 671, 670, 668, - 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, - 657, 656, 654, 653, 652, 651, 650, 649, 648, 647, - 646, 644, 643, 642, 641, 640, 639, 637, 636, 635, - 634, 633, 632, 631, 629, 628, 627, 626, 625, 624, - 623, 622, 621, 620, 619, 618, 617, 615, 614, 613, - 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, - 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, - 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, - 581, 580, 579, 578, 577, 576, 575, 574, 573, 571, - - 570, 562, 561, 560, 558, 557, 556, 554, 553, 551, - 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, - 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, - 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, - 519, 517, 515, 514, 513, 512, 511, 510, 509, 508, - 507, 506, 505, 504, 503, 502, 500, 499, 498, 497, - 496, 495, 494, 492, 491, 490, 489, 488, 487, 486, - 485, 484, 483, 482, 481, 480, 479, 477, 476, 475, - 474, 472, 471, 470, 469, 468, 466, 465, 463, 462, - 459, 458, 457, 456, 455, 454, 453, 451, 450, 449, - - 448, 447, 446, 445, 444, 439, 437, 436, 434, 433, - 431, 428, 426, 425, 423, 422, 421, 419, 418, 417, - 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, - 406, 405, 403, 402, 401, 399, 398, 397, 396, 394, - 393, 392, 391, 389, 388, 387, 386, 385, 384, 383, - 382, 381, 380, 379, 377, 375, 374, 373, 372, 371, - 370, 369, 367, 366, 365, 364, 363, 362, 361, 360, - 359, 358, 356, 355, 354, 353, 352, 351, 350, 349, - 348, 347, 346, 345, 343, 342, 341, 340, 339, 336, - 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, - - 325, 324, 320, 318, 315, 313, 309, 302, 300, 299, - 298, 297, 296, 294, 293, 292, 291, 290, 289, 288, - 287, 286, 284, 283, 282, 281, 280, 279, 278, 277, - 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, - 265, 264, 263, 262, 261, 259, 258, 257, 256, 255, - 254, 253, 252, 251, 250, 248, 247, 246, 245, 244, - 243, 241, 239, 238, 237, 236, 235, 234, 233, 232, - 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, - 221, 220, 219, 217, 216, 215, 214, 213, 212, 211, - 210, 209, 208, 206, 203, 201, 199, 195, 193, 190, - - 182, 181, 180, 178, 177, 176, 174, 173, 172, 170, - 169, 168, 164, 161, 159, 158, 157, 156, 155, 153, - 152, 151, 150, 149, 148, 146, 145, 144, 143, 142, - 141, 140, 139, 138, 136, 135, 133, 131, 130, 129, - 128, 126, 125, 124, 123, 121, 120, 118, 117, 116, - 112, 104, 102, 97, 96, 77, 72, 66, 58, 49, - 47, 43, 41, 39, 38, 24, 14, 11, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867 + 1578, 1579, 1581, 1582, 1584, 1585, 1586, 1588, 1589, 1590, + 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, + 1601, 1602, 1603, 1605, 1606, 1607, 1609, 1610, 1612, 1613, + 1614, 1615, 1616, 1618, 1619, 1620, 1621, 1622, 1623, 1624, + 1625, 1626, 1628, 1629, 1631, 1634, 1635, 1636, 1637, 1640, + 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, + 1652, 1654, 1655, 1656, 1658, 1659, 1660, 1661, 1662, 1663, + 1664, 1666, 1667, 1668, 1670, 1671, 1672, 1673, 1674, 1675, + 1676, 1677, 1678, 1680, 1681, 1682, 1684, 1685, 1686, 1687, + 1688, 1689, 1690, 1691, 1693, 1694, 1695, 1696, 1697, 1698, + + 1699, 1700, 1701, 1702, 1705, 1706, 1707, 1708, 1709, 1710, + 1711, 1712, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, + 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, + 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1742, 1746, 1748, + 1749, 1750, 1751, 1753, 1754, 1755, 1757, 1758, 1759, 1760, + 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1770, 1771, + 1772, 1774, 1775, 1778, 1779, 1781, 1782, 1783, 1784, 1785, + 1786, 1787, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, + 1797, 1798, 1799, 1800, 1801, 1802, 1804, 1805, 1806, 1807, + 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, + + 1818, 1819, 1820, 1822, 1823, 1825, 1826, 1827, 1829, 1830, + 1831, 1832, 1835, 1837, 1838, 1839, 1841, 1842, 1843, 1844, + 1845, 1846, 1847, 1849, 1851, 1853, 1855, 1856, 1857, 1858, + 1859, 1860, 1859, 1861, 1863, 1864, 1866, 1867, 1868, 1869, + 1870, 1871, 1872, 1873, 1875, 1876, 1877, 1878, 1879, 1881, + 1884, 1885, 1886, 1887, 1891, 1891, 1891, 1891, 1891, 1892, + 1892, 1892, 1892, 1892, 1893, 1899, 1893, 1893, 1893, 1894, + 1900, 1894, 1901, 1894, 1895, 1895, 1895, 1895, 1895, 1896, + 1896, 1896, 1896, 1896, 1897, 1902, 1897, 1897, 1897, 1898, + 1898, 1898, 717, 716, 715, 714, 713, 712, 711, 710, + + 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, + 699, 697, 695, 694, 693, 692, 691, 690, 689, 688, + 684, 683, 681, 680, 679, 678, 677, 676, 675, 674, + 673, 671, 670, 668, 667, 666, 665, 664, 663, 662, + 661, 660, 659, 658, 657, 656, 654, 653, 652, 651, + 650, 649, 648, 647, 646, 644, 643, 642, 641, 640, + 639, 637, 636, 635, 634, 633, 632, 631, 629, 628, + 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, + 617, 615, 614, 613, 612, 611, 610, 609, 608, 607, + 606, 605, 604, 603, 601, 600, 599, 598, 597, 596, + + 595, 594, 593, 592, 591, 590, 588, 587, 586, 585, + 584, 583, 582, 581, 580, 579, 578, 577, 576, 575, + 574, 573, 571, 570, 562, 561, 560, 558, 557, 556, + 554, 553, 551, 549, 548, 547, 546, 545, 544, 543, + 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, + 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, + 522, 521, 520, 519, 517, 515, 514, 513, 512, 511, + 510, 509, 508, 507, 506, 505, 504, 503, 502, 500, + 499, 498, 497, 496, 495, 494, 492, 491, 490, 489, + 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, + + 477, 476, 475, 474, 472, 471, 470, 469, 468, 466, + 465, 463, 462, 459, 458, 457, 456, 455, 454, 453, + 451, 450, 449, 448, 447, 446, 445, 444, 439, 437, + 436, 434, 433, 431, 428, 426, 425, 423, 422, 421, + 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, + 409, 408, 407, 406, 405, 403, 402, 401, 399, 398, + 397, 396, 394, 393, 392, 391, 389, 388, 387, 386, + 385, 384, 383, 382, 381, 380, 379, 377, 375, 374, + 373, 372, 371, 370, 369, 367, 366, 365, 364, 363, + 362, 361, 360, 359, 358, 356, 355, 354, 353, 352, + + 351, 350, 349, 348, 347, 346, 345, 343, 342, 341, + 340, 339, 336, 335, 334, 333, 332, 331, 330, 329, + 328, 327, 326, 325, 324, 320, 318, 315, 313, 309, + 302, 300, 299, 298, 297, 296, 294, 293, 292, 291, + 290, 289, 288, 287, 286, 284, 283, 282, 281, 280, + 279, 278, 277, 275, 274, 273, 272, 271, 270, 269, + 268, 267, 266, 265, 264, 263, 262, 261, 259, 258, + 257, 256, 255, 254, 253, 252, 251, 250, 248, 247, + 246, 245, 244, 243, 241, 239, 238, 237, 236, 235, + 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, + + 224, 223, 222, 221, 220, 219, 217, 216, 215, 214, + 213, 212, 211, 210, 209, 208, 206, 203, 201, 199, + 195, 193, 190, 182, 181, 180, 178, 177, 176, 174, + 173, 172, 170, 169, 168, 164, 161, 159, 158, 157, + 156, 155, 153, 152, 151, 150, 149, 148, 146, 145, + 144, 143, 142, 141, 140, 139, 138, 136, 135, 133, + 131, 130, 129, 128, 126, 125, 124, 123, 121, 120, + 118, 117, 116, 112, 104, 102, 97, 96, 77, 72, + 66, 58, 49, 47, 43, 41, 39, 38, 24, 14, + 11, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890 } ; static yy_state_type yy_last_accepting_state; @@ -1903,7 +1917,7 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[201] = +static const flex_int16_t yy_rule_linenum[202] = { 0, 145, 147, 149, 154, 155, 160, 161, 162, 174, 177, 182, 189, 198, 207, 216, 225, 234, 243, 253, 262, @@ -1911,22 +1925,23 @@ static const flex_int16_t yy_rule_linenum[201] = 361, 373, 382, 391, 400, 409, 420, 431, 442, 453, 464, 475, 486, 497, 508, 519, 530, 541, 552, 563, 574, 585, 594, 605, 616, 627, 638, 649, 658, 667, - 676, 685, 696, 707, 718, 729, 740, 751, 762, 772, - 783, 792, 802, 816, 832, 841, 850, 859, 868, 890, - 912, 921, 931, 940, 951, 960, 969, 978, 987, 996, - 1006, 1015, 1026, 1037, 1048, 1059, 1071, 1080, 1089, 1098, - - 1107, 1116, 1125, 1134, 1143, 1152, 1162, 1173, 1185, 1194, - 1203, 1213, 1223, 1233, 1243, 1253, 1263, 1272, 1282, 1291, - 1300, 1309, 1318, 1328, 1338, 1347, 1357, 1366, 1375, 1384, - 1393, 1402, 1411, 1420, 1429, 1438, 1447, 1456, 1465, 1474, - 1483, 1492, 1501, 1510, 1519, 1528, 1537, 1546, 1555, 1564, - 1573, 1582, 1591, 1600, 1609, 1618, 1627, 1636, 1645, 1654, - 1663, 1672, 1684, 1696, 1706, 1716, 1726, 1736, 1746, 1756, - 1766, 1776, 1786, 1795, 1804, 1813, 1822, 1833, 1844, 1857, - 1870, 1883, 1892, 1991, 1996, 2001, 2006, 2007, 2008, 2009, - 2010, 2011, 2013, 2031, 2044, 2049, 2053, 2055, 2057, 2059 - + 676, 685, 696, 707, 718, 729, 740, 751, 762, 773, + 783, 794, 803, 813, 827, 843, 852, 861, 870, 879, + 901, 923, 932, 942, 951, 962, 971, 980, 989, 998, + 1007, 1017, 1026, 1037, 1048, 1059, 1070, 1082, 1091, 1100, + + 1109, 1118, 1127, 1136, 1145, 1154, 1163, 1173, 1184, 1196, + 1205, 1214, 1224, 1234, 1244, 1254, 1264, 1274, 1283, 1293, + 1302, 1311, 1320, 1329, 1339, 1349, 1358, 1368, 1377, 1386, + 1395, 1404, 1413, 1422, 1431, 1440, 1449, 1458, 1467, 1476, + 1485, 1494, 1503, 1512, 1521, 1530, 1539, 1548, 1557, 1566, + 1575, 1584, 1593, 1602, 1611, 1620, 1629, 1638, 1647, 1656, + 1665, 1674, 1683, 1695, 1707, 1717, 1727, 1737, 1747, 1757, + 1767, 1777, 1787, 1797, 1806, 1815, 1824, 1833, 1844, 1855, + 1868, 1881, 1894, 1903, 2002, 2007, 2012, 2017, 2018, 2019, + 2020, 2021, 2022, 2024, 2042, 2055, 2060, 2064, 2066, 2068, + + 2070 } ; /* The intent behind this definition is that it'll catch @@ -1979,7 +1994,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 1982 "dhcp4_lexer.cc" +#line 1997 "dhcp4_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And using yywrap requires linking with -lfl, which provides the default yywrap @@ -2005,8 +2020,8 @@ using namespace isc::dhcp; by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 2008 "dhcp4_lexer.cc" -#line 2009 "dhcp4_lexer.cc" +#line 2023 "dhcp4_lexer.cc" +#line 2024 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2334,7 +2349,7 @@ YY_DECL } -#line 2337 "dhcp4_lexer.cc" +#line 2352 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2363,13 +2378,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1868 ) + if ( yy_current_state >= 1891 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1867 ); + while ( yy_current_state != 1890 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2388,13 +2403,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 201 ) + else if ( yy_act < 202 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 201 ) + else if ( yy_act == 202 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 202 ) + else if ( yy_act == 203 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -3245,6 +3260,20 @@ YY_RULE_SETUP case 69: YY_RULE_SETUP #line 762 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: + case isc::dhcp::Parser4Context::SUBNET4: + case isc::dhcp::Parser4Context::SHARED_NETWORK: + return isc::dhcp::Dhcp4Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_); + } +} + YY_BREAK +case 70: +YY_RULE_SETUP +#line 773 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3255,9 +3284,9 @@ YY_RULE_SETUP } } YY_BREAK -case 70: +case 71: YY_RULE_SETUP -#line 772 "dhcp4_lexer.ll" +#line 783 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3269,9 +3298,9 @@ YY_RULE_SETUP } } YY_BREAK -case 71: +case 72: YY_RULE_SETUP -#line 783 "dhcp4_lexer.ll" +#line 794 "dhcp4_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3281,9 +3310,9 @@ YY_RULE_SETUP } } YY_BREAK -case 72: +case 73: YY_RULE_SETUP -#line 792 "dhcp4_lexer.ll" +#line 803 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3294,9 +3323,9 @@ YY_RULE_SETUP } } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 802 "dhcp4_lexer.ll" +#line 813 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3311,9 +3340,9 @@ YY_RULE_SETUP } } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 816 "dhcp4_lexer.ll" +#line 827 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3330,9 +3359,9 @@ YY_RULE_SETUP } } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 832 "dhcp4_lexer.ll" +#line 843 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3342,9 +3371,9 @@ YY_RULE_SETUP } } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 841 "dhcp4_lexer.ll" +#line 852 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3354,9 +3383,9 @@ YY_RULE_SETUP } } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 850 "dhcp4_lexer.ll" +#line 861 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3366,9 +3395,9 @@ YY_RULE_SETUP } } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 859 "dhcp4_lexer.ll" +#line 870 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::POOLS: @@ -3378,9 +3407,9 @@ YY_RULE_SETUP } } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 868 "dhcp4_lexer.ll" +#line 879 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3403,9 +3432,9 @@ YY_RULE_SETUP } } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 890 "dhcp4_lexer.ll" +#line 901 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3428,9 +3457,9 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 912 "dhcp4_lexer.ll" +#line 923 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3440,9 +3469,9 @@ YY_RULE_SETUP } } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 921 "dhcp4_lexer.ll" +#line 932 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3453,9 +3482,9 @@ YY_RULE_SETUP } } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 931 "dhcp4_lexer.ll" +#line 942 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3465,9 +3494,9 @@ YY_RULE_SETUP } } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 940 "dhcp4_lexer.ll" +#line 951 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3479,9 +3508,9 @@ YY_RULE_SETUP } } YY_BREAK -case 85: +case 86: YY_RULE_SETUP -#line 951 "dhcp4_lexer.ll" +#line 962 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3491,9 +3520,9 @@ YY_RULE_SETUP } } YY_BREAK -case 86: +case 87: YY_RULE_SETUP -#line 960 "dhcp4_lexer.ll" +#line 971 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3503,9 +3532,9 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 88: YY_RULE_SETUP -#line 969 "dhcp4_lexer.ll" +#line 980 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3515,9 +3544,9 @@ YY_RULE_SETUP } } YY_BREAK -case 88: +case 89: YY_RULE_SETUP -#line 978 "dhcp4_lexer.ll" +#line 989 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3527,9 +3556,9 @@ YY_RULE_SETUP } } YY_BREAK -case 89: +case 90: YY_RULE_SETUP -#line 987 "dhcp4_lexer.ll" +#line 998 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3539,9 +3568,9 @@ YY_RULE_SETUP } } YY_BREAK -case 90: +case 91: YY_RULE_SETUP -#line 996 "dhcp4_lexer.ll" +#line 1007 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3552,9 +3581,9 @@ YY_RULE_SETUP } } YY_BREAK -case 91: +case 92: YY_RULE_SETUP -#line 1006 "dhcp4_lexer.ll" +#line 1017 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3564,9 +3593,9 @@ YY_RULE_SETUP } } YY_BREAK -case 92: +case 93: YY_RULE_SETUP -#line 1015 "dhcp4_lexer.ll" +#line 1026 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3578,9 +3607,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 94: YY_RULE_SETUP -#line 1026 "dhcp4_lexer.ll" +#line 1037 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3592,9 +3621,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 95: YY_RULE_SETUP -#line 1037 "dhcp4_lexer.ll" +#line 1048 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3606,9 +3635,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 96: YY_RULE_SETUP -#line 1048 "dhcp4_lexer.ll" +#line 1059 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3620,9 +3649,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 97: YY_RULE_SETUP -#line 1059 "dhcp4_lexer.ll" +#line 1070 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3634,9 +3663,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 98: YY_RULE_SETUP -#line 1071 "dhcp4_lexer.ll" +#line 1082 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3646,9 +3675,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 99: YY_RULE_SETUP -#line 1080 "dhcp4_lexer.ll" +#line 1091 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3658,9 +3687,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 100: YY_RULE_SETUP -#line 1089 "dhcp4_lexer.ll" +#line 1100 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3670,9 +3699,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 101: YY_RULE_SETUP -#line 1098 "dhcp4_lexer.ll" +#line 1109 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3682,9 +3711,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 102: YY_RULE_SETUP -#line 1107 "dhcp4_lexer.ll" +#line 1118 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3694,9 +3723,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 103: YY_RULE_SETUP -#line 1116 "dhcp4_lexer.ll" +#line 1127 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3706,9 +3735,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 104: YY_RULE_SETUP -#line 1125 "dhcp4_lexer.ll" +#line 1136 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3718,9 +3747,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 105: YY_RULE_SETUP -#line 1134 "dhcp4_lexer.ll" +#line 1145 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3730,9 +3759,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 106: YY_RULE_SETUP -#line 1143 "dhcp4_lexer.ll" +#line 1154 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3742,9 +3771,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 107: YY_RULE_SETUP -#line 1152 "dhcp4_lexer.ll" +#line 1163 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3755,9 +3784,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 1162 "dhcp4_lexer.ll" +#line 1173 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3769,9 +3798,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 109: YY_RULE_SETUP -#line 1173 "dhcp4_lexer.ll" +#line 1184 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3784,9 +3813,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 1185 "dhcp4_lexer.ll" +#line 1196 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -3796,9 +3825,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 1194 "dhcp4_lexer.ll" +#line 1205 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -3808,9 +3837,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 1203 "dhcp4_lexer.ll" +#line 1214 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3821,9 +3850,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 113: YY_RULE_SETUP -#line 1213 "dhcp4_lexer.ll" +#line 1224 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3834,9 +3863,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 1223 "dhcp4_lexer.ll" +#line 1234 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3847,9 +3876,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 115: YY_RULE_SETUP -#line 1233 "dhcp4_lexer.ll" +#line 1244 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3860,9 +3889,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 1243 "dhcp4_lexer.ll" +#line 1254 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3873,9 +3902,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 1253 "dhcp4_lexer.ll" +#line 1264 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3886,9 +3915,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 118: YY_RULE_SETUP -#line 1263 "dhcp4_lexer.ll" +#line 1274 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATIONS: @@ -3898,9 +3927,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 1272 "dhcp4_lexer.ll" +#line 1283 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3911,9 +3940,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 1282 "dhcp4_lexer.ll" +#line 1293 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3923,9 +3952,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 121: YY_RULE_SETUP -#line 1291 "dhcp4_lexer.ll" +#line 1302 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3935,9 +3964,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 1300 "dhcp4_lexer.ll" +#line 1311 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3947,9 +3976,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 1309 "dhcp4_lexer.ll" +#line 1320 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3959,9 +3988,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 1318 "dhcp4_lexer.ll" +#line 1329 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3972,9 +4001,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 1328 "dhcp4_lexer.ll" +#line 1339 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -3985,9 +4014,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 1338 "dhcp4_lexer.ll" +#line 1349 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -3997,9 +4026,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 1347 "dhcp4_lexer.ll" +#line 1358 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4009,9 +4038,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 1357 "dhcp4_lexer.ll" +#line 1368 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4021,9 +4050,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 129: YY_RULE_SETUP -#line 1366 "dhcp4_lexer.ll" +#line 1377 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4033,9 +4062,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 1375 "dhcp4_lexer.ll" +#line 1386 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4045,9 +4074,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 1384 "dhcp4_lexer.ll" +#line 1395 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4057,9 +4086,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 132: YY_RULE_SETUP -#line 1393 "dhcp4_lexer.ll" +#line 1404 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4069,9 +4098,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 1402 "dhcp4_lexer.ll" +#line 1413 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4081,9 +4110,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 134: YY_RULE_SETUP -#line 1411 "dhcp4_lexer.ll" +#line 1422 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4093,9 +4122,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 135: YY_RULE_SETUP -#line 1420 "dhcp4_lexer.ll" +#line 1431 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4105,9 +4134,9 @@ YY_RULE_SETUP } } YY_BREAK -case 135: +case 136: YY_RULE_SETUP -#line 1429 "dhcp4_lexer.ll" +#line 1440 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4117,9 +4146,9 @@ YY_RULE_SETUP } } YY_BREAK -case 136: +case 137: YY_RULE_SETUP -#line 1438 "dhcp4_lexer.ll" +#line 1449 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4129,9 +4158,9 @@ YY_RULE_SETUP } } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 1447 "dhcp4_lexer.ll" +#line 1458 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4141,9 +4170,9 @@ YY_RULE_SETUP } } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 1456 "dhcp4_lexer.ll" +#line 1467 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4153,9 +4182,9 @@ YY_RULE_SETUP } } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 1465 "dhcp4_lexer.ll" +#line 1476 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4165,9 +4194,9 @@ YY_RULE_SETUP } } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 1474 "dhcp4_lexer.ll" +#line 1485 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4177,9 +4206,9 @@ YY_RULE_SETUP } } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 1483 "dhcp4_lexer.ll" +#line 1494 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4189,9 +4218,9 @@ YY_RULE_SETUP } } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 1492 "dhcp4_lexer.ll" +#line 1503 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4201,9 +4230,9 @@ YY_RULE_SETUP } } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 1501 "dhcp4_lexer.ll" +#line 1512 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4213,9 +4242,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 1510 "dhcp4_lexer.ll" +#line 1521 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4225,9 +4254,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 1519 "dhcp4_lexer.ll" +#line 1530 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4237,9 +4266,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 1528 "dhcp4_lexer.ll" +#line 1539 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4249,9 +4278,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 1537 "dhcp4_lexer.ll" +#line 1548 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4261,9 +4290,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 1546 "dhcp4_lexer.ll" +#line 1557 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4273,9 +4302,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 1555 "dhcp4_lexer.ll" +#line 1566 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4285,9 +4314,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 1564 "dhcp4_lexer.ll" +#line 1575 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4297,9 +4326,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 1573 "dhcp4_lexer.ll" +#line 1584 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4309,9 +4338,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 1582 "dhcp4_lexer.ll" +#line 1593 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4321,9 +4350,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 1591 "dhcp4_lexer.ll" +#line 1602 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4333,9 +4362,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 1600 "dhcp4_lexer.ll" +#line 1611 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4345,9 +4374,9 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 156: YY_RULE_SETUP -#line 1609 "dhcp4_lexer.ll" +#line 1620 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4357,9 +4386,9 @@ YY_RULE_SETUP } } YY_BREAK -case 156: +case 157: YY_RULE_SETUP -#line 1618 "dhcp4_lexer.ll" +#line 1629 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4369,9 +4398,9 @@ YY_RULE_SETUP } } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 1627 "dhcp4_lexer.ll" +#line 1638 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4381,9 +4410,9 @@ YY_RULE_SETUP } } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 1636 "dhcp4_lexer.ll" +#line 1647 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4393,9 +4422,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 1645 "dhcp4_lexer.ll" +#line 1656 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4405,9 +4434,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 1654 "dhcp4_lexer.ll" +#line 1665 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4417,9 +4446,9 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 1663 "dhcp4_lexer.ll" +#line 1674 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4429,9 +4458,9 @@ YY_RULE_SETUP } } YY_BREAK -case 162: +case 163: YY_RULE_SETUP -#line 1672 "dhcp4_lexer.ll" +#line 1683 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4444,9 +4473,9 @@ YY_RULE_SETUP } } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 1684 "dhcp4_lexer.ll" +#line 1695 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4459,9 +4488,9 @@ YY_RULE_SETUP } } YY_BREAK -case 164: +case 165: YY_RULE_SETUP -#line 1696 "dhcp4_lexer.ll" +#line 1707 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -4472,9 +4501,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 1706 "dhcp4_lexer.ll" +#line 1717 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -4485,9 +4514,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 166: +case 167: YY_RULE_SETUP -#line 1716 "dhcp4_lexer.ll" +#line 1727 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) { @@ -4498,9 +4527,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 1726 "dhcp4_lexer.ll" +#line 1737 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4511,9 +4540,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 168: +case 169: YY_RULE_SETUP -#line 1736 "dhcp4_lexer.ll" +#line 1747 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4524,9 +4553,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 169: +case 170: YY_RULE_SETUP -#line 1746 "dhcp4_lexer.ll" +#line 1757 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4537,9 +4566,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 170: +case 171: YY_RULE_SETUP -#line 1756 "dhcp4_lexer.ll" +#line 1767 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4550,9 +4579,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 171: +case 172: YY_RULE_SETUP -#line 1766 "dhcp4_lexer.ll" +#line 1777 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4563,9 +4592,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 172: +case 173: YY_RULE_SETUP -#line 1776 "dhcp4_lexer.ll" +#line 1787 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4576,9 +4605,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 173: +case 174: YY_RULE_SETUP -#line 1786 "dhcp4_lexer.ll" +#line 1797 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4588,9 +4617,9 @@ YY_RULE_SETUP } } YY_BREAK -case 174: +case 175: YY_RULE_SETUP -#line 1795 "dhcp4_lexer.ll" +#line 1806 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4600,9 +4629,9 @@ YY_RULE_SETUP } } YY_BREAK -case 175: +case 176: YY_RULE_SETUP -#line 1804 "dhcp4_lexer.ll" +#line 1815 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4612,9 +4641,9 @@ YY_RULE_SETUP } } YY_BREAK -case 176: +case 177: YY_RULE_SETUP -#line 1813 "dhcp4_lexer.ll" +#line 1824 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4624,9 +4653,9 @@ YY_RULE_SETUP } } YY_BREAK -case 177: +case 178: YY_RULE_SETUP -#line 1822 "dhcp4_lexer.ll" +#line 1833 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4638,9 +4667,9 @@ YY_RULE_SETUP } } YY_BREAK -case 178: +case 179: YY_RULE_SETUP -#line 1833 "dhcp4_lexer.ll" +#line 1844 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4652,9 +4681,9 @@ YY_RULE_SETUP } } YY_BREAK -case 179: +case 180: YY_RULE_SETUP -#line 1844 "dhcp4_lexer.ll" +#line 1855 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4668,9 +4697,9 @@ YY_RULE_SETUP } } YY_BREAK -case 180: +case 181: YY_RULE_SETUP -#line 1857 "dhcp4_lexer.ll" +#line 1868 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4684,9 +4713,9 @@ YY_RULE_SETUP } } YY_BREAK -case 181: +case 182: YY_RULE_SETUP -#line 1870 "dhcp4_lexer.ll" +#line 1881 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4700,9 +4729,9 @@ YY_RULE_SETUP } } YY_BREAK -case 182: +case 183: YY_RULE_SETUP -#line 1883 "dhcp4_lexer.ll" +#line 1894 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4712,9 +4741,9 @@ YY_RULE_SETUP } } YY_BREAK -case 183: +case 184: YY_RULE_SETUP -#line 1892 "dhcp4_lexer.ll" +#line 1903 "dhcp4_lexer.ll" { /* 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. @@ -4814,65 +4843,65 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 184: -/* rule 184 can match eol */ +case 185: +/* rule 185 can match eol */ YY_RULE_SETUP -#line 1991 "dhcp4_lexer.ll" +#line 2002 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); } YY_BREAK -case 185: -/* rule 185 can match eol */ +case 186: +/* rule 186 can match eol */ YY_RULE_SETUP -#line 1996 "dhcp4_lexer.ll" +#line 2007 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); } YY_BREAK -case 186: +case 187: YY_RULE_SETUP -#line 2001 "dhcp4_lexer.ll" +#line 2012 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); } YY_BREAK -case 187: +case 188: YY_RULE_SETUP -#line 2006 "dhcp4_lexer.ll" +#line 2017 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 188: +case 189: YY_RULE_SETUP -#line 2007 "dhcp4_lexer.ll" +#line 2018 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 189: +case 190: YY_RULE_SETUP -#line 2008 "dhcp4_lexer.ll" +#line 2019 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 190: +case 191: YY_RULE_SETUP -#line 2009 "dhcp4_lexer.ll" +#line 2020 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 191: +case 192: YY_RULE_SETUP -#line 2010 "dhcp4_lexer.ll" +#line 2021 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); } YY_BREAK -case 192: +case 193: YY_RULE_SETUP -#line 2011 "dhcp4_lexer.ll" +#line 2022 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } YY_BREAK -case 193: +case 194: YY_RULE_SETUP -#line 2013 "dhcp4_lexer.ll" +#line 2024 "dhcp4_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -4891,9 +4920,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 194: +case 195: YY_RULE_SETUP -#line 2031 "dhcp4_lexer.ll" +#line 2042 "dhcp4_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -4907,43 +4936,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 195: +case 196: YY_RULE_SETUP -#line 2044 "dhcp4_lexer.ll" +#line 2055 "dhcp4_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 196: +case 197: YY_RULE_SETUP -#line 2049 "dhcp4_lexer.ll" +#line 2060 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 197: +case 198: YY_RULE_SETUP -#line 2053 "dhcp4_lexer.ll" +#line 2064 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 198: +case 199: YY_RULE_SETUP -#line 2055 "dhcp4_lexer.ll" +#line 2066 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 199: +case 200: YY_RULE_SETUP -#line 2057 "dhcp4_lexer.ll" +#line 2068 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 200: +case 201: YY_RULE_SETUP -#line 2059 "dhcp4_lexer.ll" +#line 2070 "dhcp4_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2061 "dhcp4_lexer.ll" +#line 2072 "dhcp4_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp4Parser::make_END(driver.loc_); @@ -4967,12 +4996,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 201: +case 202: YY_RULE_SETUP -#line 2084 "dhcp4_lexer.ll" +#line 2095 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 4975 "dhcp4_lexer.cc" +#line 5004 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -5291,7 +5320,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1868 ) + if ( yy_current_state >= 1891 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5324,11 +5353,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1868 ) + if ( yy_current_state >= 1891 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1867); + yy_is_jam = (yy_current_state == 1890); return yy_is_jam ? 0 : yy_current_state; } @@ -6077,7 +6106,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2084 "dhcp4_lexer.ll" +#line 2095 "dhcp4_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 449a4e927a..456dc003d3 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -758,6 +758,17 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"ddns-use-conflict-resolution\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: + case isc::dhcp::Parser4Context::SUBNET4: + case isc::dhcp::Parser4Context::SHARED_NETWORK: + return isc::dhcp::Dhcp4Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_); + } +} + \"subnet4\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index b84f940bc5..65ca29f5e0 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.0.4. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. +// Copyright (C) 2002-2015 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,25 +30,32 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. -// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, -// especially those whose name start with YY_ or yy_. They are -// private implementation details that can be changed or removed. - - // Take the name prefix into account. #define yylex parser4_lex +// First part of user declarations. + +#line 39 "dhcp4_parser.cc" // lalr1.cc:404 +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif #include "dhcp4_parser.h" +// User implementation prologue. +#line 53 "dhcp4_parser.cc" // lalr1.cc:412 // Unqualified %code blocks. -#line 34 "dhcp4_parser.yy" +#line 34 "dhcp4_parser.yy" // lalr1.cc:413 #include -#line 52 "dhcp4_parser.cc" +#line 59 "dhcp4_parser.cc" // lalr1.cc:413 #ifndef YY_ @@ -63,16 +70,6 @@ # endif #endif - -// Whether we are compiled with exception support. -#ifndef YY_EXCEPTIONS -# if defined __GNUC__ && !defined __EXCEPTIONS -# define YY_EXCEPTIONS 0 -# else -# define YY_EXCEPTIONS 1 -# endif -#endif - #define YYRHSLOC(Rhs, K) ((Rhs)[K].location) /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends @@ -90,10 +87,13 @@ { \ (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ } \ - while (false) + while (/*CONSTCOND*/ false) # endif +// Suppress unused-variable warnings by "using" E. +#define YYUSE(E) ((void) (E)) + // Enable debugging if requested. #if PARSER4_DEBUG @@ -106,7 +106,7 @@ { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << '\n'; \ + *yycdebug_ << std::endl; \ } \ } while (false) @@ -119,15 +119,15 @@ # define YY_STACK_PRINT() \ do { \ if (yydebug_) \ - yy_stack_print_ (); \ + yystack_print_ (); \ } while (false) #else // !PARSER4_DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast (0) -# define YY_STACK_PRINT() static_cast (0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast(0) +# define YY_STACK_PRINT() static_cast(0) #endif // !PARSER4_DEBUG @@ -139,17 +139,54 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "dhcp4_parser.yy" +#line 14 "dhcp4_parser.yy" // lalr1.cc:479 namespace isc { namespace dhcp { -#line 145 "dhcp4_parser.cc" +#line 145 "dhcp4_parser.cc" // lalr1.cc:479 + + /* Return YYSTR after stripping away unnecessary quotes and + backslashes, so that it's suitable for yyerror. The heuristic is + that double-quoting is unnecessary unless the string contains an + apostrophe, a comma, or backslash (other than backslash-backslash). + YYSTR is taken from yytname. */ + std::string + Dhcp4Parser::yytnamerr_ (const char *yystr) + { + if (*yystr == '"') + { + std::string yyr = ""; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + // Fall through. + default: + yyr += *yyp; + break; + + case '"': + return yyr; + } + do_not_strip_quotes: ; + } + + return yystr; + } + /// Build a parser object. Dhcp4Parser::Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg) + : #if PARSER4_DEBUG - : yydebug_ (false), + yydebug_ (false), yycdebug_ (&std::cerr), -#else - : #endif ctx (ctx_yyarg) {} @@ -157,30 +194,32 @@ namespace isc { namespace dhcp { Dhcp4Parser::~Dhcp4Parser () {} - Dhcp4Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW - {} /*---------------. - | symbol kinds. | + | Symbol types. | `---------------*/ // by_state. - Dhcp4Parser::by_state::by_state () YY_NOEXCEPT + inline + Dhcp4Parser::by_state::by_state () : state (empty_state) {} - Dhcp4Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT - : state (that.state) + inline + Dhcp4Parser::by_state::by_state (const by_state& other) + : state (other.state) {} + inline void - Dhcp4Parser::by_state::clear () YY_NOEXCEPT + Dhcp4Parser::by_state::clear () { state = empty_state; } + inline void Dhcp4Parser::by_state::move (by_state& that) { @@ -188,94 +227,57 @@ namespace isc { namespace dhcp { that.clear (); } - Dhcp4Parser::by_state::by_state (state_type s) YY_NOEXCEPT + inline + Dhcp4Parser::by_state::by_state (state_type s) : state (s) {} - Dhcp4Parser::symbol_kind_type - Dhcp4Parser::by_state::kind () const YY_NOEXCEPT + inline + Dhcp4Parser::symbol_number_type + Dhcp4Parser::by_state::type_get () const { if (state == empty_state) - return symbol_kind::S_YYEMPTY; + return empty_symbol; else - return YY_CAST (symbol_kind_type, yystos_[+state]); + return yystos_[state]; } + inline Dhcp4Parser::stack_symbol_type::stack_symbol_type () {} - Dhcp4Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that) - : super_type (YY_MOVE (that.state), YY_MOVE (that.location)) - { - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_BOOLEAN: // "boolean" - value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_FLOAT: // "floating point" - value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_INTEGER: // "integer" - value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_STRING: // "constant string" - value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); - break; - - default: - break; - } - -#if 201103L <= YY_CPLUSPLUS - // that is emptied. - that.state = empty_state; -#endif - } - Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that) - : super_type (s, YY_MOVE (that.location)) + inline + Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) + : super_type (s, that.location) { - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (YY_MOVE (that.value)); + switch (that.type_get ()) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value + value.move< ElementPtr > (that.value); break; - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (YY_MOVE (that.value)); + case 194: // "boolean" + value.move< bool > (that.value); break; - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (YY_MOVE (that.value)); + case 193: // "floating point" + value.move< double > (that.value); break; - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (YY_MOVE (that.value)); + case 192: // "integer" + value.move< int64_t > (that.value); break; - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (YY_MOVE (that.value)); + case 191: // "constant string" + value.move< std::string > (that.value); break; default: @@ -283,40 +285,40 @@ namespace isc { namespace dhcp { } // that is emptied. - that.kind_ = symbol_kind::S_YYEMPTY; + that.type = empty_symbol; } -#if YY_CPLUSPLUS < 201103L + inline Dhcp4Parser::stack_symbol_type& Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value + switch (that.type_get ()) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value value.copy< ElementPtr > (that.value); break; - case symbol_kind::S_BOOLEAN: // "boolean" + case 194: // "boolean" value.copy< bool > (that.value); break; - case symbol_kind::S_FLOAT: // "floating point" + case 193: // "floating point" value.copy< double > (that.value); break; - case symbol_kind::S_INTEGER: // "integer" + case 192: // "integer" value.copy< int64_t > (that.value); break; - case symbol_kind::S_STRING: // "constant string" + case 191: // "constant string" value.copy< std::string > (that.value); break; @@ -328,51 +330,9 @@ namespace isc { namespace dhcp { return *this; } - Dhcp4Parser::stack_symbol_type& - Dhcp4Parser::stack_symbol_type::operator= (stack_symbol_type& that) - { - state = that.state; - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (that.value); - break; - - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (that.value); - break; - - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (that.value); - break; - - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (that.value); - break; - - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (that.value); - break; - - default: - break; - } - - location = that.location; - // that is emptied. - that.state = empty_state; - return *this; - } -#endif template + inline void Dhcp4Parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -383,121 +343,133 @@ namespace isc { namespace dhcp { #if PARSER4_DEBUG template void - Dhcp4Parser::yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const + Dhcp4Parser::yy_print_ (std::ostream& yyo, + const basic_symbol& yysym) const { std::ostream& yyoutput = yyo; YYUSE (yyoutput); + symbol_number_type yytype = yysym.type_get (); + // Avoid a (spurious) G++ 4.8 warning about "array subscript is + // below array bounds". if (yysym.empty ()) - yyo << "empty symbol"; - else - { - symbol_kind_type yykind = yysym.kind (); - yyo << (yykind < YYNTOKENS ? "token" : "nterm") - << ' ' << yysym.name () << " (" - << yysym.location << ": "; - switch (yykind) - { - case symbol_kind::S_STRING: // "constant string" -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < std::string > (); } -#line 404 "dhcp4_parser.cc" + std::abort (); + yyo << (yytype < yyntokens_ ? "token" : "nterm") + << ' ' << yytname_[yytype] << " (" + << yysym.location << ": "; + switch (yytype) + { + case 191: // "constant string" + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< std::string > (); } +#line 366 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_INTEGER: // "integer" -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < int64_t > (); } -#line 410 "dhcp4_parser.cc" + case 192: // "integer" + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< int64_t > (); } +#line 373 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_FLOAT: // "floating point" -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < double > (); } -#line 416 "dhcp4_parser.cc" + case 193: // "floating point" + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< double > (); } +#line 380 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_BOOLEAN: // "boolean" -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < bool > (); } -#line 422 "dhcp4_parser.cc" + case 194: // "boolean" + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< bool > (); } +#line 387 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_value: // value -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 428 "dhcp4_parser.cc" + case 210: // value + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 394 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_map_value: // map_value -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 434 "dhcp4_parser.cc" + case 214: // map_value + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 401 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 440 "dhcp4_parser.cc" + case 255: // ddns_replace_client_name_value + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 408 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_socket_type: // socket_type -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 446 "dhcp4_parser.cc" + case 280: // socket_type + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 415 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_outbound_interface_value: // outbound_interface_value -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 452 "dhcp4_parser.cc" + case 283: // outbound_interface_value + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 422 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_db_type: // db_type -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 458 "dhcp4_parser.cc" + case 305: // db_type + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 429 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_hr_mode: // hr_mode -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 464 "dhcp4_parser.cc" + case 399: // hr_mode + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 436 "dhcp4_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 272 "dhcp4_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 470 "dhcp4_parser.cc" + case 554: // ncr_protocol_value + +#line 273 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 443 "dhcp4_parser.cc" // lalr1.cc:636 break; + default: break; } - yyo << ')'; - } + yyo << ')'; } #endif + inline void - Dhcp4Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym) + Dhcp4Parser::yypush_ (const char* m, state_type s, symbol_type& sym) { - if (m) - YY_SYMBOL_PRINT (m, sym); - yystack_.push (YY_MOVE (sym)); + stack_symbol_type t (s, sym); + yypush_ (m, t); } + inline void - Dhcp4Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym) + Dhcp4Parser::yypush_ (const char* m, stack_symbol_type& s) { -#if 201103L <= YY_CPLUSPLUS - yypush_ (m, stack_symbol_type (s, std::move (sym))); -#else - stack_symbol_type ss (s, sym); - yypush_ (m, ss); -#endif + if (m) + YY_SYMBOL_PRINT (m, s); + yystack_.push (s); } + inline void - Dhcp4Parser::yypop_ (int n) + Dhcp4Parser::yypop_ (unsigned int n) { yystack_.pop (n); } @@ -529,37 +501,32 @@ namespace isc { namespace dhcp { } #endif // PARSER4_DEBUG - Dhcp4Parser::state_type + inline Dhcp4Parser::state_type Dhcp4Parser::yy_lr_goto_state_ (state_type yystate, int yysym) { - int yyr = yypgoto_[yysym - YYNTOKENS] + yystate; + int yyr = yypgoto_[yysym - yyntokens_] + yystate; if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate) return yytable_[yyr]; else - return yydefgoto_[yysym - YYNTOKENS]; + return yydefgoto_[yysym - yyntokens_]; } - bool + inline bool Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } - bool + inline bool Dhcp4Parser::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; } - int - Dhcp4Parser::operator() () - { - return parse (); - } - int Dhcp4Parser::parse () { + // State. int yyn; /// Length of the RHS of the rule being reduced. int yylen = 0; @@ -577,11 +544,11 @@ namespace isc { namespace dhcp { /// The return value of parse (). int yyresult; -#if YY_EXCEPTIONS + // FIXME: This shoud be completely indented. It is not yet to + // avoid gratuitous conflicts when merging into the master branch. try -#endif // YY_EXCEPTIONS { - YYCDEBUG << "Starting parse\n"; + YYCDEBUG << "Starting parse" << std::endl; /* Initialize the stack. The initial state will be set in @@ -589,70 +556,48 @@ namespace isc { namespace dhcp { location values to have been already stored, initialize these stacks with a primary value. */ yystack_.clear (); - yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla)); + yypush_ (YY_NULLPTR, 0, yyla); - /*-----------------------------------------------. - | yynewstate -- push a new symbol on the stack. | - `-----------------------------------------------*/ + // A new symbol was pushed on the stack. yynewstate: - YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n'; - YY_STACK_PRINT (); + YYCDEBUG << "Entering state " << yystack_[0].state << std::endl; // Accept? if (yystack_[0].state == yyfinal_) - YYACCEPT; + goto yyacceptlab; goto yybackup; - - /*-----------. - | yybackup. | - `-----------*/ + // Backup. yybackup: + // Try to take a decision without lookahead. - yyn = yypact_[+yystack_[0].state]; + yyn = yypact_[yystack_[0].state]; if (yy_pact_value_is_default_ (yyn)) goto yydefault; // Read a lookahead token. if (yyla.empty ()) { - YYCDEBUG << "Reading a token\n"; -#if YY_EXCEPTIONS + YYCDEBUG << "Reading a token: "; try -#endif // YY_EXCEPTIONS { symbol_type yylookahead (yylex (ctx)); yyla.move (yylookahead); } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); goto yyerrlab1; } -#endif // YY_EXCEPTIONS } YY_SYMBOL_PRINT ("Next token is", yyla); - if (yyla.kind () == symbol_kind::S_YYerror) - { - // The scanner already issued an error message, process directly - // to error recovery. But do not keep the error token as - // lookahead, it is too special and may lead us to an endless - // loop in error recovery. */ - yyla.kind_ = symbol_kind::S_YYUNDEF; - goto yyerrlab1; - } - /* If the proper action on seeing token YYLA.TYPE is to reduce or to detect an error, take that action. */ - yyn += yyla.kind (); - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ()) - { - goto yydefault; - } + yyn += yyla.type_get (); + if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ()) + goto yydefault; // Reduce or error. yyn = yytable_[yyn]; @@ -669,58 +614,56 @@ namespace isc { namespace dhcp { --yyerrstatus_; // Shift the lookahead token. - yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla)); + yypush_ ("Shifting", yyn, yyla); goto yynewstate; - /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: - yyn = yydefact_[+yystack_[0].state]; + yyn = yydefact_[yystack_[0].state]; if (yyn == 0) goto yyerrlab; goto yyreduce; - /*-----------------------------. - | yyreduce -- do a reduction. | + | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: yylen = yyr2_[yyn]; { stack_symbol_type yylhs; - yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]); + yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]); /* Variants are always initialized to an empty instance of the correct type. The default '$$ = $1' action is NOT applied when using variants. */ - switch (yyr1_[yyn]) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - yylhs.value.emplace< ElementPtr > (); + switch (yyr1_[yyn]) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value + yylhs.value.build< ElementPtr > (); break; - case symbol_kind::S_BOOLEAN: // "boolean" - yylhs.value.emplace< bool > (); + case 194: // "boolean" + yylhs.value.build< bool > (); break; - case symbol_kind::S_FLOAT: // "floating point" - yylhs.value.emplace< double > (); + case 193: // "floating point" + yylhs.value.build< double > (); break; - case symbol_kind::S_INTEGER: // "integer" - yylhs.value.emplace< int64_t > (); + case 192: // "integer" + yylhs.value.build< int64_t > (); break; - case symbol_kind::S_STRING: // "constant string" - yylhs.value.emplace< std::string > (); + case 191: // "constant string" + yylhs.value.build< std::string > (); break; default: @@ -728,293 +671,290 @@ namespace isc { namespace dhcp { } - // Default location. + // Compute the default @$. { - stack_type::slice range (yystack_, yylen); - YYLLOC_DEFAULT (yylhs.location, range, yylen); - yyerror_range[1].location = yylhs.location; + slice slice (yystack_, yylen); + YYLLOC_DEFAULT (yylhs.location, slice, yylen); } // Perform the reduction. YY_REDUCE_PRINT (yyn); -#if YY_EXCEPTIONS try -#endif // YY_EXCEPTIONS { switch (yyn) { - case 2: // $@1: %empty -#line 281 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 750 "dhcp4_parser.cc" + case 2: +#line 282 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.NO_KEYWORD; } +#line 690 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 4: // $@2: %empty -#line 282 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.CONFIG; } -#line 756 "dhcp4_parser.cc" + case 4: +#line 283 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.CONFIG; } +#line 696 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 6: // $@3: %empty -#line 283 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.DHCP4; } -#line 762 "dhcp4_parser.cc" + case 6: +#line 284 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.DHCP4; } +#line 702 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 8: // $@4: %empty -#line 284 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 768 "dhcp4_parser.cc" + case 8: +#line 285 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.INTERFACES_CONFIG; } +#line 708 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 10: // $@5: %empty -#line 285 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.SUBNET4; } -#line 774 "dhcp4_parser.cc" + case 10: +#line 286 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.SUBNET4; } +#line 714 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 12: // $@6: %empty -#line 286 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.POOLS; } -#line 780 "dhcp4_parser.cc" + case 12: +#line 287 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.POOLS; } +#line 720 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 14: // $@7: %empty -#line 287 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.RESERVATIONS; } -#line 786 "dhcp4_parser.cc" + case 14: +#line 288 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.RESERVATIONS; } +#line 726 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 16: // $@8: %empty -#line 288 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.DHCP4; } -#line 792 "dhcp4_parser.cc" + case 16: +#line 289 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.DHCP4; } +#line 732 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 18: // $@9: %empty -#line 289 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.OPTION_DEF; } -#line 798 "dhcp4_parser.cc" + case 18: +#line 290 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.OPTION_DEF; } +#line 738 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 20: // $@10: %empty -#line 290 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.OPTION_DATA; } -#line 804 "dhcp4_parser.cc" + case 20: +#line 291 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.OPTION_DATA; } +#line 744 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 22: // $@11: %empty -#line 291 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 810 "dhcp4_parser.cc" + case 22: +#line 292 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } +#line 750 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 24: // $@12: %empty -#line 292 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 816 "dhcp4_parser.cc" + case 24: +#line 293 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.DHCP_DDNS; } +#line 756 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 26: // $@13: %empty -#line 293 "dhcp4_parser.yy" - { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 822 "dhcp4_parser.cc" + case 26: +#line 294 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.CONFIG_CONTROL; } +#line 762 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 28: // value: "integer" -#line 301 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 828 "dhcp4_parser.cc" + case 28: +#line 302 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } +#line 768 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 29: // value: "floating point" -#line 302 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 834 "dhcp4_parser.cc" + case 29: +#line 303 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } +#line 774 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 30: // value: "boolean" -#line 303 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 840 "dhcp4_parser.cc" + case 30: +#line 304 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } +#line 780 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 31: // value: "constant string" -#line 304 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 846 "dhcp4_parser.cc" + case 31: +#line 305 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } +#line 786 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 32: // value: "null" -#line 305 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 852 "dhcp4_parser.cc" + case 32: +#line 306 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } +#line 792 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 33: // value: map2 -#line 306 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 858 "dhcp4_parser.cc" + case 33: +#line 307 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 798 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 34: // value: list_generic -#line 307 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 864 "dhcp4_parser.cc" + case 34: +#line 308 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 804 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 35: // sub_json: value -#line 310 "dhcp4_parser.yy" - { + case 35: +#line 311 "dhcp4_parser.yy" // lalr1.cc:859 + { // Push back the JSON value on the stack - ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 873 "dhcp4_parser.cc" +#line 813 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 36: // $@14: %empty -#line 315 "dhcp4_parser.yy" - { + case 36: +#line 316 "dhcp4_parser.yy" // lalr1.cc:859 + { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 884 "dhcp4_parser.cc" +#line 824 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 37: // map2: "{" $@14 map_content "}" -#line 320 "dhcp4_parser.yy" - { + case 37: +#line 321 "dhcp4_parser.yy" // lalr1.cc:859 + { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 894 "dhcp4_parser.cc" +#line 834 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 38: // map_value: map2 -#line 326 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 900 "dhcp4_parser.cc" + case 38: +#line 327 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 840 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 41: // not_empty_map: "constant string" ":" value -#line 333 "dhcp4_parser.yy" - { + case 41: +#line 334 "dhcp4_parser.yy" // lalr1.cc:859 + { // map containing a single entry - ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); - ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location)); + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 910 "dhcp4_parser.cc" +#line 850 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 42: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 338 "dhcp4_parser.yy" - { + case 42: +#line 339 "dhcp4_parser.yy" // lalr1.cc:859 + { // map consisting of a shorter map followed by // comma and string:value - ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); - ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location)); + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 921 "dhcp4_parser.cc" +#line 861 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 43: // $@15: %empty -#line 346 "dhcp4_parser.yy" - { + case 43: +#line 347 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 930 "dhcp4_parser.cc" +#line 870 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 44: // list_generic: "[" $@15 list_content "]" -#line 349 "dhcp4_parser.yy" - { + case 44: +#line 350 "dhcp4_parser.yy" // lalr1.cc:859 + { // list parsing complete. Put any sanity checking here } -#line 938 "dhcp4_parser.cc" +#line 878 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 47: // not_empty_list: value -#line 357 "dhcp4_parser.yy" - { + case 47: +#line 358 "dhcp4_parser.yy" // lalr1.cc:859 + { // List consisting of a single element. - ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 947 "dhcp4_parser.cc" +#line 887 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 48: // not_empty_list: not_empty_list "," value -#line 361 "dhcp4_parser.yy" - { + case 48: +#line 362 "dhcp4_parser.yy" // lalr1.cc:859 + { // List ending with , and a value. - ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 956 "dhcp4_parser.cc" +#line 896 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 49: // $@16: %empty -#line 368 "dhcp4_parser.yy" - { + case 49: +#line 369 "dhcp4_parser.yy" // lalr1.cc:859 + { // List parsing about to start } -#line 964 "dhcp4_parser.cc" +#line 904 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 50: // list_strings: "[" $@16 list_strings_content "]" -#line 370 "dhcp4_parser.yy" - { + case 50: +#line 371 "dhcp4_parser.yy" // lalr1.cc:859 + { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 973 "dhcp4_parser.cc" +#line 913 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 53: // not_empty_list_strings: "constant string" -#line 379 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 53: +#line 380 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 982 "dhcp4_parser.cc" +#line 922 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 54: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 383 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 54: +#line 384 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 991 "dhcp4_parser.cc" +#line 931 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 55: // unknown_map_entry: "constant string" ":" -#line 394 "dhcp4_parser.yy" - { + case 55: +#line 395 "dhcp4_parser.yy" // lalr1.cc:859 + { const std::string& where = ctx.contextName(); - const std::string& keyword = yystack_[1].value.as < std::string > (); + const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 1002 "dhcp4_parser.cc" +#line 942 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 56: // $@17: %empty -#line 403 "dhcp4_parser.yy" - { + case 56: +#line 404 "dhcp4_parser.yy" // lalr1.cc:859 + { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1013 "dhcp4_parser.cc" +#line 953 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 57: // syntax_map: "{" $@17 global_object "}" -#line 408 "dhcp4_parser.yy" - { + case 57: +#line 409 "dhcp4_parser.yy" // lalr1.cc:859 + { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. @@ -1022,12 +962,12 @@ namespace isc { namespace dhcp { // Dhcp4 is required ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 1026 "dhcp4_parser.cc" +#line 966 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 58: // $@18: %empty -#line 418 "dhcp4_parser.yy" - { + case 58: +#line 419 "dhcp4_parser.yy" // lalr1.cc:859 + { // This code is executed when we're about to start parsing // the content of the map // Prevent against duplicate. @@ -1037,1322 +977,1332 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP4); } -#line 1041 "dhcp4_parser.cc" +#line 981 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 59: // global_object: "Dhcp4" $@18 ":" "{" global_params "}" -#line 427 "dhcp4_parser.yy" - { + case 59: +#line 428 "dhcp4_parser.yy" // lalr1.cc:859 + { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1051 "dhcp4_parser.cc" +#line 991 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 60: // $@19: %empty -#line 435 "dhcp4_parser.yy" - { + case 60: +#line 436 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1061 "dhcp4_parser.cc" +#line 1001 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 61: // sub_dhcp4: "{" $@19 global_params "}" -#line 439 "dhcp4_parser.yy" - { + case 61: +#line 440 "dhcp4_parser.yy" // lalr1.cc:859 + { // No global parameter is required // parsing completed } -#line 1070 "dhcp4_parser.cc" +#line 1010 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 120: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 508 "dhcp4_parser.yy" - { + case 121: +#line 510 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 1080 "dhcp4_parser.cc" +#line 1020 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 121: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 514 "dhcp4_parser.yy" - { + case 122: +#line 516 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("min-valid-lifetime", prf); } -#line 1090 "dhcp4_parser.cc" +#line 1030 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 122: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 520 "dhcp4_parser.yy" - { + case 123: +#line 522 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-valid-lifetime", prf); } -#line 1100 "dhcp4_parser.cc" +#line 1040 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 123: // renew_timer: "renew-timer" ":" "integer" -#line 526 "dhcp4_parser.yy" - { + case 124: +#line 528 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1110 "dhcp4_parser.cc" +#line 1050 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 124: // rebind_timer: "rebind-timer" ":" "integer" -#line 532 "dhcp4_parser.yy" - { + case 125: +#line 534 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1120 "dhcp4_parser.cc" +#line 1060 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 125: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 538 "dhcp4_parser.yy" - { + case 126: +#line 540 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); - ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("calculate-tee-times", ctt); } -#line 1130 "dhcp4_parser.cc" +#line 1070 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 126: // t1_percent: "t1-percent" ":" "floating point" -#line 544 "dhcp4_parser.yy" - { + case 127: +#line 546 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); - ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t1-percent", t1); } -#line 1140 "dhcp4_parser.cc" +#line 1080 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 127: // t2_percent: "t2-percent" ":" "floating point" -#line 550 "dhcp4_parser.yy" - { + case 128: +#line 552 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); - ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t2-percent", t2); } -#line 1150 "dhcp4_parser.cc" +#line 1090 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 128: // cache_threshold: "cache-threshold" ":" "floating point" -#line 556 "dhcp4_parser.yy" - { + case 129: +#line 558 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); - ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr ct(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-threshold", ct); } -#line 1160 "dhcp4_parser.cc" +#line 1100 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 129: // cache_max_age: "cache-max-age" ":" "integer" -#line 562 "dhcp4_parser.yy" - { + case 130: +#line 564 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); - ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr cm(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-max-age", cm); } -#line 1170 "dhcp4_parser.cc" +#line 1110 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 130: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 568 "dhcp4_parser.yy" - { + case 131: +#line 570 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); - ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1180 "dhcp4_parser.cc" +#line 1120 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 131: // $@20: %empty -#line 574 "dhcp4_parser.yy" - { + case 132: +#line 576 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1189 "dhcp4_parser.cc" +#line 1129 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 132: // server_tag: "server-tag" $@20 ":" "constant string" -#line 577 "dhcp4_parser.yy" - { - ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 133: +#line 579 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); ctx.leave(); } -#line 1199 "dhcp4_parser.cc" +#line 1139 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 133: // echo_client_id: "echo-client-id" ":" "boolean" -#line 583 "dhcp4_parser.yy" - { + case 134: +#line 585 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location)); - ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("echo-client-id", echo); } -#line 1209 "dhcp4_parser.cc" +#line 1149 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 134: // match_client_id: "match-client-id" ":" "boolean" -#line 589 "dhcp4_parser.yy" - { + case 135: +#line 591 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location)); - ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("match-client-id", match); } -#line 1219 "dhcp4_parser.cc" +#line 1159 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 135: // authoritative: "authoritative" ":" "boolean" -#line 595 "dhcp4_parser.yy" - { + case 136: +#line 597 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("authoritative", prf); } -#line 1229 "dhcp4_parser.cc" +#line 1169 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 136: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 601 "dhcp4_parser.yy" - { + case 137: +#line 603 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-send-updates", b); } -#line 1239 "dhcp4_parser.cc" +#line 1179 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 137: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 607 "dhcp4_parser.yy" - { + case 138: +#line 609 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-no-update", b); } -#line 1249 "dhcp4_parser.cc" +#line 1189 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 138: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 613 "dhcp4_parser.yy" - { + case 139: +#line 615 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-client-update", b); } -#line 1259 "dhcp4_parser.cc" +#line 1199 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 139: // $@21: %empty -#line 619 "dhcp4_parser.yy" - { + case 140: +#line 621 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.enter(ctx.REPLACE_CLIENT_NAME); ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); } -#line 1268 "dhcp4_parser.cc" +#line 1208 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 140: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value -#line 622 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); + case 141: +#line 624 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1277 "dhcp4_parser.cc" +#line 1217 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 141: // ddns_replace_client_name_value: "when-present" -#line 628 "dhcp4_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); + case 142: +#line 630 "dhcp4_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 1285 "dhcp4_parser.cc" +#line 1225 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 142: // ddns_replace_client_name_value: "never" -#line 631 "dhcp4_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); + case 143: +#line 633 "dhcp4_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 1293 "dhcp4_parser.cc" +#line 1233 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 143: // ddns_replace_client_name_value: "always" -#line 634 "dhcp4_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); + case 144: +#line 636 "dhcp4_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 1301 "dhcp4_parser.cc" +#line 1241 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 144: // ddns_replace_client_name_value: "when-not-present" -#line 637 "dhcp4_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); + case 145: +#line 639 "dhcp4_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 1309 "dhcp4_parser.cc" +#line 1249 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 145: // ddns_replace_client_name_value: "boolean" -#line 640 "dhcp4_parser.yy" - { + case 146: +#line 642 "dhcp4_parser.yy" // lalr1.cc:859 + { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 1318 "dhcp4_parser.cc" +#line 1258 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 146: // $@22: %empty -#line 646 "dhcp4_parser.yy" - { + case 147: +#line 648 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1327 "dhcp4_parser.cc" +#line 1267 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 147: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string" -#line 649 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 148: +#line 651 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); ctx.leave(); } -#line 1337 "dhcp4_parser.cc" +#line 1277 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 148: // $@23: %empty -#line 655 "dhcp4_parser.yy" - { + case 149: +#line 657 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1346 "dhcp4_parser.cc" +#line 1286 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 149: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string" -#line 658 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 150: +#line 660 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); ctx.leave(); } -#line 1356 "dhcp4_parser.cc" +#line 1296 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 150: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 664 "dhcp4_parser.yy" - { + case 151: +#line 666 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-update-on-renew", b); } -#line 1366 "dhcp4_parser.cc" +#line 1306 "dhcp4_parser.cc" // lalr1.cc:859 + break; + + case 152: +#line 672 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("ddns-use-conflict-resolution", b); +} +#line 1316 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 151: // $@24: %empty -#line 670 "dhcp4_parser.yy" - { + case 153: +#line 678 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1375 "dhcp4_parser.cc" +#line 1325 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 152: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string" -#line 673 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 154: +#line 681 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 1385 "dhcp4_parser.cc" +#line 1335 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 153: // $@25: %empty -#line 679 "dhcp4_parser.yy" - { + case 155: +#line 687 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1394 "dhcp4_parser.cc" +#line 1344 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 154: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string" -#line 682 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 156: +#line 690 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 1404 "dhcp4_parser.cc" +#line 1354 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 155: // store_extended_info: "store-extended-info" ":" "boolean" -#line 688 "dhcp4_parser.yy" - { + case 157: +#line 696 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("store-extended-info", b); } -#line 1414 "dhcp4_parser.cc" +#line 1364 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 156: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 694 "dhcp4_parser.yy" - { + case 158: +#line 702 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); - ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr count(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-count", count); } -#line 1424 "dhcp4_parser.cc" +#line 1374 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 157: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 700 "dhcp4_parser.yy" - { + case 159: +#line 708 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); - ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr age(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-age", age); } -#line 1434 "dhcp4_parser.cc" +#line 1384 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 158: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 706 "dhcp4_parser.yy" - { + case 160: +#line 714 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); - ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr unique(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-reservations-unique", unique); } -#line 1444 "dhcp4_parser.cc" +#line 1394 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 159: // $@26: %empty -#line 712 "dhcp4_parser.yy" - { + case 161: +#line 720 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1456 "dhcp4_parser.cc" +#line 1406 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 160: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}" -#line 718 "dhcp4_parser.yy" - { + case 162: +#line 726 "dhcp4_parser.yy" // lalr1.cc:859 + { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1466 "dhcp4_parser.cc" +#line 1416 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 170: // $@27: %empty -#line 737 "dhcp4_parser.yy" - { + case 172: +#line 745 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1476 "dhcp4_parser.cc" +#line 1426 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 171: // sub_interfaces4: "{" $@27 interfaces_config_params "}" -#line 741 "dhcp4_parser.yy" - { + case 173: +#line 749 "dhcp4_parser.yy" // lalr1.cc:859 + { // No interfaces config param is required // parsing completed } -#line 1485 "dhcp4_parser.cc" +#line 1435 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 172: // $@28: %empty -#line 746 "dhcp4_parser.yy" - { + case 174: +#line 754 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1497 "dhcp4_parser.cc" +#line 1447 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 173: // interfaces_list: "interfaces" $@28 ":" list_strings -#line 752 "dhcp4_parser.yy" - { + case 175: +#line 760 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1506 "dhcp4_parser.cc" +#line 1456 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 174: // $@29: %empty -#line 757 "dhcp4_parser.yy" - { + case 176: +#line 765 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DHCP_SOCKET_TYPE); } -#line 1515 "dhcp4_parser.cc" +#line 1465 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 175: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type -#line 760 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ()); + case 177: +#line 768 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1524 "dhcp4_parser.cc" +#line 1474 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 176: // socket_type: "raw" -#line 765 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } -#line 1530 "dhcp4_parser.cc" + case 178: +#line 773 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } +#line 1480 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 177: // socket_type: "udp" -#line 766 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } -#line 1536 "dhcp4_parser.cc" + case 179: +#line 774 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } +#line 1486 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 178: // $@30: %empty -#line 769 "dhcp4_parser.yy" - { + case 180: +#line 777 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.OUTBOUND_INTERFACE); } -#line 1545 "dhcp4_parser.cc" +#line 1495 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 179: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value -#line 772 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ()); + case 181: +#line 780 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1554 "dhcp4_parser.cc" +#line 1504 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 180: // outbound_interface_value: "same-as-inbound" -#line 777 "dhcp4_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); + case 182: +#line 785 "dhcp4_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } -#line 1562 "dhcp4_parser.cc" +#line 1512 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 181: // outbound_interface_value: "use-routing" -#line 779 "dhcp4_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); + case 183: +#line 787 "dhcp4_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } -#line 1570 "dhcp4_parser.cc" +#line 1520 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 182: // re_detect: "re-detect" ":" "boolean" -#line 783 "dhcp4_parser.yy" - { + case 184: +#line 791 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1580 "dhcp4_parser.cc" +#line 1530 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 183: // $@31: %empty -#line 790 "dhcp4_parser.yy" - { + case 185: +#line 798 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-database", i); ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1592 "dhcp4_parser.cc" +#line 1542 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 184: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 796 "dhcp4_parser.yy" - { + case 186: +#line 804 "dhcp4_parser.yy" // lalr1.cc:859 + { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1603 "dhcp4_parser.cc" +#line 1553 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 185: // $@32: %empty -#line 803 "dhcp4_parser.yy" - { + case 187: +#line 811 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sanity-checks", m); ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 1615 "dhcp4_parser.cc" +#line 1565 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 186: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}" -#line 809 "dhcp4_parser.yy" - { + case 188: +#line 817 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1624 "dhcp4_parser.cc" +#line 1574 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 190: // $@33: %empty -#line 819 "dhcp4_parser.yy" - { + case 192: +#line 827 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1633 "dhcp4_parser.cc" +#line 1583 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 191: // lease_checks: "lease-checks" $@33 ":" "constant string" -#line 822 "dhcp4_parser.yy" - { + case 193: +#line 830 "dhcp4_parser.yy" // lalr1.cc:859 + { - if ( (string(yystack_[0].value.as < std::string > ()) == "none") || - (string(yystack_[0].value.as < std::string > ()) == "warn") || - (string(yystack_[0].value.as < std::string > ()) == "fix") || - (string(yystack_[0].value.as < std::string > ()) == "fix-del") || - (string(yystack_[0].value.as < std::string > ()) == "del")) { - ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + if ( (string(yystack_[0].value.as< std::string > ()) == "none") || + (string(yystack_[0].value.as< std::string > ()) == "warn") || + (string(yystack_[0].value.as< std::string > ()) == "fix") || + (string(yystack_[0].value.as< std::string > ()) == "fix-del") || + (string(yystack_[0].value.as< std::string > ()) == "del")) { + ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-checks", user); ctx.leave(); } else { - error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) + + error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) + ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1653 "dhcp4_parser.cc" +#line 1603 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 192: // $@34: %empty -#line 838 "dhcp4_parser.yy" - { + case 194: +#line 846 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-database", i); ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1665 "dhcp4_parser.cc" +#line 1615 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 193: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}" -#line 844 "dhcp4_parser.yy" - { + case 195: +#line 852 "dhcp4_parser.yy" // lalr1.cc:859 + { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1676 "dhcp4_parser.cc" +#line 1626 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 194: // $@35: %empty -#line 851 "dhcp4_parser.yy" - { + case 196: +#line 859 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-databases", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1688 "dhcp4_parser.cc" +#line 1638 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 195: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]" -#line 857 "dhcp4_parser.yy" - { + case 197: +#line 865 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1697 "dhcp4_parser.cc" +#line 1647 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 200: // $@36: %empty -#line 870 "dhcp4_parser.yy" - { + case 202: +#line 878 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1707 "dhcp4_parser.cc" +#line 1657 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 201: // database: "{" $@36 database_map_params "}" -#line 874 "dhcp4_parser.yy" - { + case 203: +#line 882 "dhcp4_parser.yy" // lalr1.cc:859 + { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1717 "dhcp4_parser.cc" +#line 1667 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 225: // $@37: %empty -#line 907 "dhcp4_parser.yy" - { + case 227: +#line 915 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1726 "dhcp4_parser.cc" +#line 1676 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 226: // database_type: "type" $@37 ":" db_type -#line 910 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); + case 228: +#line 918 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1735 "dhcp4_parser.cc" +#line 1685 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 227: // db_type: "memfile" -#line 915 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1741 "dhcp4_parser.cc" + case 229: +#line 923 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } +#line 1691 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 228: // db_type: "mysql" -#line 916 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1747 "dhcp4_parser.cc" + case 230: +#line 924 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } +#line 1697 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 229: // db_type: "postgresql" -#line 917 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1753 "dhcp4_parser.cc" + case 231: +#line 925 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } +#line 1703 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 230: // db_type: "cql" -#line 918 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1759 "dhcp4_parser.cc" + case 232: +#line 926 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } +#line 1709 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 231: // $@38: %empty -#line 921 "dhcp4_parser.yy" - { + case 233: +#line 929 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1768 "dhcp4_parser.cc" +#line 1718 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 232: // user: "user" $@38 ":" "constant string" -#line 924 "dhcp4_parser.yy" - { - ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 234: +#line 932 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1778 "dhcp4_parser.cc" +#line 1728 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 233: // $@39: %empty -#line 930 "dhcp4_parser.yy" - { + case 235: +#line 938 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1787 "dhcp4_parser.cc" +#line 1737 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 234: // password: "password" $@39 ":" "constant string" -#line 933 "dhcp4_parser.yy" - { - ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 236: +#line 941 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1797 "dhcp4_parser.cc" +#line 1747 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 235: // $@40: %empty -#line 939 "dhcp4_parser.yy" - { + case 237: +#line 947 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1806 "dhcp4_parser.cc" +#line 1756 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 236: // host: "host" $@40 ":" "constant string" -#line 942 "dhcp4_parser.yy" - { - ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 238: +#line 950 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1816 "dhcp4_parser.cc" +#line 1766 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 237: // port: "port" ":" "integer" -#line 948 "dhcp4_parser.yy" - { + case 239: +#line 956 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); - ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1826 "dhcp4_parser.cc" +#line 1776 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 238: // $@41: %empty -#line 954 "dhcp4_parser.yy" - { + case 240: +#line 962 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1835 "dhcp4_parser.cc" +#line 1785 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 239: // name: "name" $@41 ":" "constant string" -#line 957 "dhcp4_parser.yy" - { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 241: +#line 965 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1845 "dhcp4_parser.cc" +#line 1795 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 240: // persist: "persist" ":" "boolean" -#line 963 "dhcp4_parser.yy" - { + case 242: +#line 971 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1855 "dhcp4_parser.cc" +#line 1805 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 241: // lfc_interval: "lfc-interval" ":" "integer" -#line 969 "dhcp4_parser.yy" - { + case 243: +#line 977 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1865 "dhcp4_parser.cc" +#line 1815 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 242: // readonly: "readonly" ":" "boolean" -#line 975 "dhcp4_parser.yy" - { + case 244: +#line 983 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1875 "dhcp4_parser.cc" +#line 1825 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 243: // connect_timeout: "connect-timeout" ":" "integer" -#line 981 "dhcp4_parser.yy" - { + case 245: +#line 989 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1885 "dhcp4_parser.cc" +#line 1835 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 244: // request_timeout: "request-timeout" ":" "integer" -#line 987 "dhcp4_parser.yy" - { + case 246: +#line 995 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1895 "dhcp4_parser.cc" +#line 1845 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 245: // tcp_keepalive: "tcp-keepalive" ":" "integer" -#line 993 "dhcp4_parser.yy" - { + case 247: +#line 1001 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 1905 "dhcp4_parser.cc" +#line 1855 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 246: // tcp_nodelay: "tcp-nodelay" ":" "boolean" -#line 999 "dhcp4_parser.yy" - { + case 248: +#line 1007 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 1915 "dhcp4_parser.cc" +#line 1865 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 247: // $@42: %empty -#line 1005 "dhcp4_parser.yy" - { + case 249: +#line 1013 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1924 "dhcp4_parser.cc" +#line 1874 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 248: // contact_points: "contact-points" $@42 ":" "constant string" -#line 1008 "dhcp4_parser.yy" - { - ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 250: +#line 1016 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("contact-points", cp); ctx.leave(); } -#line 1934 "dhcp4_parser.cc" +#line 1884 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 249: // $@43: %empty -#line 1014 "dhcp4_parser.yy" - { + case 251: +#line 1022 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1943 "dhcp4_parser.cc" +#line 1893 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 250: // keyspace: "keyspace" $@43 ":" "constant string" -#line 1017 "dhcp4_parser.yy" - { - ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 252: +#line 1025 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 1953 "dhcp4_parser.cc" +#line 1903 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 251: // $@44: %empty -#line 1023 "dhcp4_parser.yy" - { + case 253: +#line 1031 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1962 "dhcp4_parser.cc" +#line 1912 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 252: // consistency: "consistency" $@44 ":" "constant string" -#line 1026 "dhcp4_parser.yy" - { - ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 254: +#line 1034 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("consistency", c); ctx.leave(); } -#line 1972 "dhcp4_parser.cc" +#line 1922 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 253: // $@45: %empty -#line 1032 "dhcp4_parser.yy" - { + case 255: +#line 1040 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1981 "dhcp4_parser.cc" +#line 1931 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 254: // serial_consistency: "serial-consistency" $@45 ":" "constant string" -#line 1035 "dhcp4_parser.yy" - { - ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 256: +#line 1043 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("serial-consistency", c); ctx.leave(); } -#line 1991 "dhcp4_parser.cc" +#line 1941 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 255: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1041 "dhcp4_parser.yy" - { + case 257: +#line 1049 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 2001 "dhcp4_parser.cc" +#line 1951 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 256: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1047 "dhcp4_parser.yy" - { + case 258: +#line 1055 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 2011 "dhcp4_parser.cc" +#line 1961 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 257: // max_row_errors: "max-row-errors" ":" "integer" -#line 1053 "dhcp4_parser.yy" - { + case 259: +#line 1061 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 2021 "dhcp4_parser.cc" +#line 1971 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 258: // $@46: %empty -#line 1060 "dhcp4_parser.yy" - { + case 260: +#line 1068 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host-reservation-identifiers", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2033 "dhcp4_parser.cc" +#line 1983 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 259: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]" -#line 1066 "dhcp4_parser.yy" - { + case 261: +#line 1074 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2042 "dhcp4_parser.cc" +#line 1992 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 267: // duid_id: "duid" -#line 1082 "dhcp4_parser.yy" - { + case 269: +#line 1090 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2051 "dhcp4_parser.cc" +#line 2001 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 268: // hw_address_id: "hw-address" -#line 1087 "dhcp4_parser.yy" - { + case 270: +#line 1095 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2060 "dhcp4_parser.cc" +#line 2010 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 269: // circuit_id: "circuit-id" -#line 1092 "dhcp4_parser.yy" - { + case 271: +#line 1100 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 2069 "dhcp4_parser.cc" +#line 2019 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 270: // client_id: "client-id" -#line 1097 "dhcp4_parser.yy" - { + case 272: +#line 1105 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 2078 "dhcp4_parser.cc" +#line 2028 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 271: // flex_id: "flex-id" -#line 1102 "dhcp4_parser.yy" - { + case 273: +#line 1110 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2087 "dhcp4_parser.cc" +#line 2037 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 272: // $@47: %empty -#line 1109 "dhcp4_parser.yy" - { + case 274: +#line 1117 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("multi-threading", mt); ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2099 "dhcp4_parser.cc" +#line 2049 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 273: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}" -#line 1115 "dhcp4_parser.yy" - { + case 275: +#line 1123 "dhcp4_parser.yy" // lalr1.cc:859 + { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2110 "dhcp4_parser.cc" +#line 2060 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 282: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1134 "dhcp4_parser.yy" - { + case 284: +#line 1142 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2120 "dhcp4_parser.cc" +#line 2070 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 283: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1140 "dhcp4_parser.yy" - { + case 285: +#line 1148 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2130 "dhcp4_parser.cc" +#line 2080 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 284: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1146 "dhcp4_parser.yy" - { + case 286: +#line 1154 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2140 "dhcp4_parser.cc" +#line 2090 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 285: // $@48: %empty -#line 1152 "dhcp4_parser.yy" - { + case 287: +#line 1160 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hooks-libraries", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2152 "dhcp4_parser.cc" +#line 2102 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 286: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]" -#line 1158 "dhcp4_parser.yy" - { + case 288: +#line 1166 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2161 "dhcp4_parser.cc" +#line 2111 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 291: // $@49: %empty -#line 1171 "dhcp4_parser.yy" - { + case 293: +#line 1179 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2171 "dhcp4_parser.cc" +#line 2121 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 292: // hooks_library: "{" $@49 hooks_params "}" -#line 1175 "dhcp4_parser.yy" - { + case 294: +#line 1183 "dhcp4_parser.yy" // lalr1.cc:859 + { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2181 "dhcp4_parser.cc" +#line 2131 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 293: // $@50: %empty -#line 1181 "dhcp4_parser.yy" - { + case 295: +#line 1189 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2191 "dhcp4_parser.cc" +#line 2141 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 294: // sub_hooks_library: "{" $@50 hooks_params "}" -#line 1185 "dhcp4_parser.yy" - { + case 296: +#line 1193 "dhcp4_parser.yy" // lalr1.cc:859 + { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2201 "dhcp4_parser.cc" +#line 2151 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 300: // $@51: %empty -#line 1200 "dhcp4_parser.yy" - { + case 302: +#line 1208 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2210 "dhcp4_parser.cc" +#line 2160 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 301: // library: "library" $@51 ":" "constant string" -#line 1203 "dhcp4_parser.yy" - { - ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 303: +#line 1211 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2220 "dhcp4_parser.cc" +#line 2170 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 302: // $@52: %empty -#line 1209 "dhcp4_parser.yy" - { + case 304: +#line 1217 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2229 "dhcp4_parser.cc" +#line 2179 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 303: // parameters: "parameters" $@52 ":" map_value -#line 1212 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); + case 305: +#line 1220 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2238 "dhcp4_parser.cc" +#line 2188 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 304: // $@53: %empty -#line 1218 "dhcp4_parser.yy" - { + case 306: +#line 1226 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("expired-leases-processing", m); ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2250 "dhcp4_parser.cc" +#line 2200 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 305: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}" -#line 1224 "dhcp4_parser.yy" - { + case 307: +#line 1232 "dhcp4_parser.yy" // lalr1.cc:859 + { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2260 "dhcp4_parser.cc" +#line 2210 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 314: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1242 "dhcp4_parser.yy" - { + case 316: +#line 1250 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2270 "dhcp4_parser.cc" +#line 2220 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 315: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1248 "dhcp4_parser.yy" - { + case 317: +#line 1256 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2280 "dhcp4_parser.cc" +#line 2230 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 316: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1254 "dhcp4_parser.yy" - { + case 318: +#line 1262 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2290 "dhcp4_parser.cc" +#line 2240 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 317: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1260 "dhcp4_parser.yy" - { + case 319: +#line 1268 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2300 "dhcp4_parser.cc" +#line 2250 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 318: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1266 "dhcp4_parser.yy" - { + case 320: +#line 1274 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2310 "dhcp4_parser.cc" +#line 2260 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 319: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1272 "dhcp4_parser.yy" - { + case 321: +#line 1280 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2320 "dhcp4_parser.cc" +#line 2270 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 320: // $@54: %empty -#line 1281 "dhcp4_parser.yy" - { + case 322: +#line 1289 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet4", l); ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET4); } -#line 2332 "dhcp4_parser.cc" +#line 2282 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 321: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]" -#line 1287 "dhcp4_parser.yy" - { + case 323: +#line 1295 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2341 "dhcp4_parser.cc" +#line 2291 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 326: // $@55: %empty -#line 1307 "dhcp4_parser.yy" - { + case 328: +#line 1315 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2351 "dhcp4_parser.cc" +#line 2301 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 327: // subnet4: "{" $@55 subnet4_params "}" -#line 1311 "dhcp4_parser.yy" - { + case 329: +#line 1319 "dhcp4_parser.yy" // lalr1.cc:859 + { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. // In particular we can do things like this: @@ -2373,624 +2323,624 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2377 "dhcp4_parser.cc" +#line 2327 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 328: // $@56: %empty -#line 1333 "dhcp4_parser.yy" - { + case 330: +#line 1341 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2387 "dhcp4_parser.cc" +#line 2337 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 329: // sub_subnet4: "{" $@56 subnet4_params "}" -#line 1337 "dhcp4_parser.yy" - { + case 331: +#line 1345 "dhcp4_parser.yy" // lalr1.cc:859 + { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2397 "dhcp4_parser.cc" +#line 2347 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 373: // $@57: %empty -#line 1392 "dhcp4_parser.yy" - { + case 376: +#line 1401 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2406 "dhcp4_parser.cc" +#line 2356 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 374: // subnet: "subnet" $@57 ":" "constant string" -#line 1395 "dhcp4_parser.yy" - { - ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 377: +#line 1404 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2416 "dhcp4_parser.cc" +#line 2366 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 375: // $@58: %empty -#line 1401 "dhcp4_parser.yy" - { + case 378: +#line 1410 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2425 "dhcp4_parser.cc" +#line 2375 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 376: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string" -#line 1404 "dhcp4_parser.yy" - { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 379: +#line 1413 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface", iface); ctx.leave(); } -#line 2435 "dhcp4_parser.cc" +#line 2385 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 377: // $@59: %empty -#line 1410 "dhcp4_parser.yy" - { + case 380: +#line 1419 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2444 "dhcp4_parser.cc" +#line 2394 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 378: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string" -#line 1413 "dhcp4_parser.yy" - { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 381: +#line 1422 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface-id", iface); ctx.leave(); } -#line 2454 "dhcp4_parser.cc" +#line 2404 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 379: // $@60: %empty -#line 1419 "dhcp4_parser.yy" - { + case 382: +#line 1428 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2463 "dhcp4_parser.cc" +#line 2413 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 380: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string" -#line 1422 "dhcp4_parser.yy" - { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 383: +#line 1431 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-subnet", iface); ctx.leave(); } -#line 2473 "dhcp4_parser.cc" +#line 2423 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 381: // $@61: %empty -#line 1428 "dhcp4_parser.yy" - { + case 384: +#line 1437 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2482 "dhcp4_parser.cc" +#line 2432 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 382: // interface: "interface" $@61 ":" "constant string" -#line 1431 "dhcp4_parser.yy" - { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 385: +#line 1440 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2492 "dhcp4_parser.cc" +#line 2442 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 383: // $@62: %empty -#line 1437 "dhcp4_parser.yy" - { + case 386: +#line 1446 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2501 "dhcp4_parser.cc" +#line 2451 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 384: // client_class: "client-class" $@62 ":" "constant string" -#line 1440 "dhcp4_parser.yy" - { - ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 387: +#line 1449 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2511 "dhcp4_parser.cc" +#line 2461 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 385: // $@63: %empty -#line 1446 "dhcp4_parser.yy" - { + case 388: +#line 1455 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("require-client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2523 "dhcp4_parser.cc" +#line 2473 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 386: // require_client_classes: "require-client-classes" $@63 ":" list_strings -#line 1452 "dhcp4_parser.yy" - { + case 389: +#line 1461 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2532 "dhcp4_parser.cc" +#line 2482 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 387: // $@64: %empty -#line 1457 "dhcp4_parser.yy" - { + case 390: +#line 1466 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2541 "dhcp4_parser.cc" +#line 2491 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 388: // reservation_mode: "reservation-mode" $@64 ":" hr_mode -#line 1460 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); + case 391: +#line 1469 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2550 "dhcp4_parser.cc" +#line 2500 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 389: // hr_mode: "disabled" -#line 1465 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2556 "dhcp4_parser.cc" + case 392: +#line 1474 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } +#line 2506 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 390: // hr_mode: "out-of-pool" -#line 1466 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2562 "dhcp4_parser.cc" + case 393: +#line 1475 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } +#line 2512 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 391: // hr_mode: "global" -#line 1467 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2568 "dhcp4_parser.cc" + case 394: +#line 1476 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } +#line 2518 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 392: // hr_mode: "all" -#line 1468 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2574 "dhcp4_parser.cc" + case 395: +#line 1477 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } +#line 2524 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 393: // id: "id" ":" "integer" -#line 1471 "dhcp4_parser.yy" - { + case 396: +#line 1480 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); - ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2584 "dhcp4_parser.cc" +#line 2534 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 394: // $@65: %empty -#line 1479 "dhcp4_parser.yy" - { + case 397: +#line 1488 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("shared-networks", l); ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2596 "dhcp4_parser.cc" +#line 2546 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 395: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]" -#line 1485 "dhcp4_parser.yy" - { + case 398: +#line 1494 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2605 "dhcp4_parser.cc" +#line 2555 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 400: // $@66: %empty -#line 1500 "dhcp4_parser.yy" - { + case 403: +#line 1509 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2615 "dhcp4_parser.cc" +#line 2565 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 401: // shared_network: "{" $@66 shared_network_params "}" -#line 1504 "dhcp4_parser.yy" - { + case 404: +#line 1513 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); } -#line 2623 "dhcp4_parser.cc" +#line 2573 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 440: // $@67: %empty -#line 1554 "dhcp4_parser.yy" - { + case 444: +#line 1564 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-def", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2635 "dhcp4_parser.cc" +#line 2585 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 441: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]" -#line 1560 "dhcp4_parser.yy" - { + case 445: +#line 1570 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2644 "dhcp4_parser.cc" +#line 2594 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 442: // $@68: %empty -#line 1568 "dhcp4_parser.yy" - { + case 446: +#line 1578 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2653 "dhcp4_parser.cc" +#line 2603 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 443: // sub_option_def_list: "{" $@68 option_def_list "}" -#line 1571 "dhcp4_parser.yy" - { + case 447: +#line 1581 "dhcp4_parser.yy" // lalr1.cc:859 + { // parsing completed } -#line 2661 "dhcp4_parser.cc" +#line 2611 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 448: // $@69: %empty -#line 1587 "dhcp4_parser.yy" - { + case 452: +#line 1597 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2671 "dhcp4_parser.cc" +#line 2621 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 449: // option_def_entry: "{" $@69 option_def_params "}" -#line 1591 "dhcp4_parser.yy" - { + case 453: +#line 1601 "dhcp4_parser.yy" // lalr1.cc:859 + { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2683 "dhcp4_parser.cc" +#line 2633 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 450: // $@70: %empty -#line 1602 "dhcp4_parser.yy" - { + case 454: +#line 1612 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2693 "dhcp4_parser.cc" +#line 2643 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 451: // sub_option_def: "{" $@70 option_def_params "}" -#line 1606 "dhcp4_parser.yy" - { + case 455: +#line 1616 "dhcp4_parser.yy" // lalr1.cc:859 + { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2705 "dhcp4_parser.cc" +#line 2655 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 467: // code: "code" ":" "integer" -#line 1638 "dhcp4_parser.yy" - { + case 471: +#line 1648 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); - ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 2715 "dhcp4_parser.cc" +#line 2665 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 469: // $@71: %empty -#line 1646 "dhcp4_parser.yy" - { + case 473: +#line 1656 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2724 "dhcp4_parser.cc" +#line 2674 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 470: // option_def_type: "type" $@71 ":" "constant string" -#line 1649 "dhcp4_parser.yy" - { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 474: +#line 1659 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 2734 "dhcp4_parser.cc" +#line 2684 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 471: // $@72: %empty -#line 1655 "dhcp4_parser.yy" - { + case 475: +#line 1665 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2743 "dhcp4_parser.cc" +#line 2693 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 472: // option_def_record_types: "record-types" $@72 ":" "constant string" -#line 1658 "dhcp4_parser.yy" - { - ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 476: +#line 1668 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 2753 "dhcp4_parser.cc" +#line 2703 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 473: // $@73: %empty -#line 1664 "dhcp4_parser.yy" - { + case 477: +#line 1674 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2762 "dhcp4_parser.cc" +#line 2712 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 474: // space: "space" $@73 ":" "constant string" -#line 1667 "dhcp4_parser.yy" - { - ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 478: +#line 1677 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 2772 "dhcp4_parser.cc" +#line 2722 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 476: // $@74: %empty -#line 1675 "dhcp4_parser.yy" - { + case 480: +#line 1685 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2781 "dhcp4_parser.cc" +#line 2731 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 477: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string" -#line 1678 "dhcp4_parser.yy" - { - ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 481: +#line 1688 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 2791 "dhcp4_parser.cc" +#line 2741 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 478: // option_def_array: "array" ":" "boolean" -#line 1684 "dhcp4_parser.yy" - { + case 482: +#line 1694 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); - ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 2801 "dhcp4_parser.cc" +#line 2751 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 479: // $@75: %empty -#line 1694 "dhcp4_parser.yy" - { + case 483: +#line 1704 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-data", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 2813 "dhcp4_parser.cc" +#line 2763 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 480: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]" -#line 1700 "dhcp4_parser.yy" - { + case 484: +#line 1710 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2822 "dhcp4_parser.cc" +#line 2772 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 485: // $@76: %empty -#line 1719 "dhcp4_parser.yy" - { + case 489: +#line 1729 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2832 "dhcp4_parser.cc" +#line 2782 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 486: // option_data_entry: "{" $@76 option_data_params "}" -#line 1723 "dhcp4_parser.yy" - { + case 490: +#line 1733 "dhcp4_parser.yy" // lalr1.cc:859 + { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2841 "dhcp4_parser.cc" +#line 2791 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 487: // $@77: %empty -#line 1731 "dhcp4_parser.yy" - { + case 491: +#line 1741 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2851 "dhcp4_parser.cc" +#line 2801 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 488: // sub_option_data: "{" $@77 option_data_params "}" -#line 1735 "dhcp4_parser.yy" - { + case 492: +#line 1745 "dhcp4_parser.yy" // lalr1.cc:859 + { /// @todo: the code or name parameters are required. // parsing completed } -#line 2860 "dhcp4_parser.cc" +#line 2810 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 503: // $@78: %empty -#line 1768 "dhcp4_parser.yy" - { + case 507: +#line 1778 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2869 "dhcp4_parser.cc" +#line 2819 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 504: // option_data_data: "data" $@78 ":" "constant string" -#line 1771 "dhcp4_parser.yy" - { - ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 508: +#line 1781 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 2879 "dhcp4_parser.cc" +#line 2829 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 507: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1781 "dhcp4_parser.yy" - { + case 511: +#line 1791 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); - ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 2889 "dhcp4_parser.cc" +#line 2839 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 508: // option_data_always_send: "always-send" ":" "boolean" -#line 1787 "dhcp4_parser.yy" - { + case 512: +#line 1797 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); - ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 2899 "dhcp4_parser.cc" +#line 2849 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 509: // $@79: %empty -#line 1796 "dhcp4_parser.yy" - { + case 513: +#line 1806 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pools", l); ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 2911 "dhcp4_parser.cc" +#line 2861 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 510: // pools_list: "pools" $@79 ":" "[" pools_list_content "]" -#line 1802 "dhcp4_parser.yy" - { + case 514: +#line 1812 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2920 "dhcp4_parser.cc" +#line 2870 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 515: // $@80: %empty -#line 1817 "dhcp4_parser.yy" - { + case 519: +#line 1827 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2930 "dhcp4_parser.cc" +#line 2880 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 516: // pool_list_entry: "{" $@80 pool_params "}" -#line 1821 "dhcp4_parser.yy" - { + case 520: +#line 1831 "dhcp4_parser.yy" // lalr1.cc:859 + { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2940 "dhcp4_parser.cc" +#line 2890 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 517: // $@81: %empty -#line 1827 "dhcp4_parser.yy" - { + case 521: +#line 1837 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2950 "dhcp4_parser.cc" +#line 2900 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 518: // sub_pool4: "{" $@81 pool_params "}" -#line 1831 "dhcp4_parser.yy" - { + case 522: +#line 1841 "dhcp4_parser.yy" // lalr1.cc:859 + { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2960 "dhcp4_parser.cc" +#line 2910 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 528: // $@82: %empty -#line 1850 "dhcp4_parser.yy" - { + case 532: +#line 1860 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2969 "dhcp4_parser.cc" +#line 2919 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 529: // pool_entry: "pool" $@82 ":" "constant string" -#line 1853 "dhcp4_parser.yy" - { - ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 533: +#line 1863 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 2979 "dhcp4_parser.cc" +#line 2929 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 530: // $@83: %empty -#line 1859 "dhcp4_parser.yy" - { + case 534: +#line 1869 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.enter(ctx.NO_KEYWORD); } -#line 2987 "dhcp4_parser.cc" +#line 2937 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 531: // user_context: "user-context" $@83 ":" map_value -#line 1861 "dhcp4_parser.yy" - { + case 535: +#line 1871 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr parent = ctx.stack_.back(); - ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); + ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); ConstElementPtr old = parent->get("user-context"); // Handle already existing user context @@ -3010,23 +2960,23 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3014 "dhcp4_parser.cc" +#line 2964 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 532: // $@84: %empty -#line 1884 "dhcp4_parser.yy" - { + case 536: +#line 1894 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.enter(ctx.NO_KEYWORD); } -#line 3022 "dhcp4_parser.cc" +#line 2972 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 533: // comment: "comment" $@84 ":" "constant string" -#line 1886 "dhcp4_parser.yy" - { + case 537: +#line 1896 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); - ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); user_context->set("comment", comment); // Handle already existing user context @@ -3047,1096 +2997,1092 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3051 "dhcp4_parser.cc" +#line 3001 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 534: // $@85: %empty -#line 1914 "dhcp4_parser.yy" - { + case 538: +#line 1924 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations", l); ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3063 "dhcp4_parser.cc" +#line 3013 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 535: // reservations: "reservations" $@85 ":" "[" reservations_list "]" -#line 1920 "dhcp4_parser.yy" - { + case 539: +#line 1930 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3072 "dhcp4_parser.cc" +#line 3022 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 540: // $@86: %empty -#line 1933 "dhcp4_parser.yy" - { + case 544: +#line 1943 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3082 "dhcp4_parser.cc" +#line 3032 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 541: // reservation: "{" $@86 reservation_params "}" -#line 1937 "dhcp4_parser.yy" - { + case 545: +#line 1947 "dhcp4_parser.yy" // lalr1.cc:859 + { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3091 "dhcp4_parser.cc" +#line 3041 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 542: // $@87: %empty -#line 1942 "dhcp4_parser.yy" - { + case 546: +#line 1952 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3101 "dhcp4_parser.cc" +#line 3051 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 543: // sub_reservation: "{" $@87 reservation_params "}" -#line 1946 "dhcp4_parser.yy" - { + case 547: +#line 1956 "dhcp4_parser.yy" // lalr1.cc:859 + { /// @todo: an identifier parameter is required. // parsing completed } -#line 3110 "dhcp4_parser.cc" +#line 3060 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 563: // $@88: %empty -#line 1977 "dhcp4_parser.yy" - { + case 567: +#line 1987 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("next-server", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3119 "dhcp4_parser.cc" +#line 3069 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 564: // next_server: "next-server" $@88 ":" "constant string" -#line 1980 "dhcp4_parser.yy" - { - ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 568: +#line 1990 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("next-server", next_server); ctx.leave(); } -#line 3129 "dhcp4_parser.cc" +#line 3079 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 565: // $@89: %empty -#line 1986 "dhcp4_parser.yy" - { + case 569: +#line 1996 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3138 "dhcp4_parser.cc" +#line 3088 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 566: // server_hostname: "server-hostname" $@89 ":" "constant string" -#line 1989 "dhcp4_parser.yy" - { - ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 570: +#line 1999 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-hostname", srv); ctx.leave(); } -#line 3148 "dhcp4_parser.cc" +#line 3098 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 567: // $@90: %empty -#line 1995 "dhcp4_parser.yy" - { + case 571: +#line 2005 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3157 "dhcp4_parser.cc" +#line 3107 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 568: // boot_file_name: "boot-file-name" $@90 ":" "constant string" -#line 1998 "dhcp4_parser.yy" - { - ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 572: +#line 2008 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-file-name", bootfile); ctx.leave(); } -#line 3167 "dhcp4_parser.cc" +#line 3117 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 569: // $@91: %empty -#line 2004 "dhcp4_parser.yy" - { + case 573: +#line 2014 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3176 "dhcp4_parser.cc" +#line 3126 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 570: // ip_address: "ip-address" $@91 ":" "constant string" -#line 2007 "dhcp4_parser.yy" - { - ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 574: +#line 2017 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3186 "dhcp4_parser.cc" +#line 3136 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 571: // $@92: %empty -#line 2013 "dhcp4_parser.yy" - { + case 575: +#line 2023 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-addresses", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3198 "dhcp4_parser.cc" +#line 3148 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 572: // ip_addresses: "ip-addresses" $@92 ":" list_strings -#line 2019 "dhcp4_parser.yy" - { + case 576: +#line 2029 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3207 "dhcp4_parser.cc" +#line 3157 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 573: // $@93: %empty -#line 2024 "dhcp4_parser.yy" - { + case 577: +#line 2034 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3216 "dhcp4_parser.cc" +#line 3166 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 574: // duid: "duid" $@93 ":" "constant string" -#line 2027 "dhcp4_parser.yy" - { - ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 578: +#line 2037 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3226 "dhcp4_parser.cc" +#line 3176 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 575: // $@94: %empty -#line 2033 "dhcp4_parser.yy" - { + case 579: +#line 2043 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3235 "dhcp4_parser.cc" +#line 3185 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 576: // hw_address: "hw-address" $@94 ":" "constant string" -#line 2036 "dhcp4_parser.yy" - { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 580: +#line 2046 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3245 "dhcp4_parser.cc" +#line 3195 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 577: // $@95: %empty -#line 2042 "dhcp4_parser.yy" - { + case 581: +#line 2052 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("client-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3254 "dhcp4_parser.cc" +#line 3204 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 578: // client_id_value: "client-id" $@95 ":" "constant string" -#line 2045 "dhcp4_parser.yy" - { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 582: +#line 2055 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-id", hw); ctx.leave(); } -#line 3264 "dhcp4_parser.cc" +#line 3214 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 579: // $@96: %empty -#line 2051 "dhcp4_parser.yy" - { + case 583: +#line 2061 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3273 "dhcp4_parser.cc" +#line 3223 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 580: // circuit_id_value: "circuit-id" $@96 ":" "constant string" -#line 2054 "dhcp4_parser.yy" - { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 584: +#line 2064 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("circuit-id", hw); ctx.leave(); } -#line 3283 "dhcp4_parser.cc" +#line 3233 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 581: // $@97: %empty -#line 2060 "dhcp4_parser.yy" - { + case 585: +#line 2070 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3292 "dhcp4_parser.cc" +#line 3242 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 582: // flex_id_value: "flex-id" $@97 ":" "constant string" -#line 2063 "dhcp4_parser.yy" - { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 586: +#line 2073 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3302 "dhcp4_parser.cc" +#line 3252 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 583: // $@98: %empty -#line 2069 "dhcp4_parser.yy" - { + case 587: +#line 2079 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3311 "dhcp4_parser.cc" +#line 3261 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 584: // hostname: "hostname" $@98 ":" "constant string" -#line 2072 "dhcp4_parser.yy" - { - ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 588: +#line 2082 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3321 "dhcp4_parser.cc" +#line 3271 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 585: // $@99: %empty -#line 2078 "dhcp4_parser.yy" - { + case 589: +#line 2088 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3333 "dhcp4_parser.cc" +#line 3283 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 586: // reservation_client_classes: "client-classes" $@99 ":" list_strings -#line 2084 "dhcp4_parser.yy" - { + case 590: +#line 2094 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3342 "dhcp4_parser.cc" +#line 3292 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 587: // $@100: %empty -#line 2092 "dhcp4_parser.yy" - { + case 591: +#line 2102 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay", m); ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3354 "dhcp4_parser.cc" +#line 3304 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 588: // relay: "relay" $@100 ":" "{" relay_map "}" -#line 2098 "dhcp4_parser.yy" - { + case 592: +#line 2108 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3363 "dhcp4_parser.cc" +#line 3313 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 591: // $@101: %empty -#line 2110 "dhcp4_parser.yy" - { + case 595: +#line 2120 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", l); ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3375 "dhcp4_parser.cc" +#line 3325 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 592: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]" -#line 2116 "dhcp4_parser.yy" - { + case 596: +#line 2126 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3384 "dhcp4_parser.cc" +#line 3334 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 595: // $@102: %empty -#line 2125 "dhcp4_parser.yy" - { + case 599: +#line 2135 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3394 "dhcp4_parser.cc" +#line 3344 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 596: // client_class_entry: "{" $@102 client_class_params "}" -#line 2129 "dhcp4_parser.yy" - { + case 600: +#line 2139 "dhcp4_parser.yy" // lalr1.cc:859 + { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3404 "dhcp4_parser.cc" +#line 3354 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 613: // $@103: %empty -#line 2158 "dhcp4_parser.yy" - { + case 617: +#line 2168 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3413 "dhcp4_parser.cc" +#line 3363 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 614: // client_class_test: "test" $@103 ":" "constant string" -#line 2161 "dhcp4_parser.yy" - { - ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 618: +#line 2171 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3423 "dhcp4_parser.cc" +#line 3373 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 615: // only_if_required: "only-if-required" ":" "boolean" -#line 2167 "dhcp4_parser.yy" - { + case 619: +#line 2177 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3433 "dhcp4_parser.cc" +#line 3383 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 616: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2175 "dhcp4_parser.yy" - { + case 620: +#line 2185 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3443 "dhcp4_parser.cc" +#line 3393 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 617: // $@104: %empty -#line 2183 "dhcp4_parser.yy" - { + case 621: +#line 2193 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("control-socket", m); ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3455 "dhcp4_parser.cc" +#line 3405 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 618: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}" -#line 2189 "dhcp4_parser.yy" - { + case 622: +#line 2199 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3464 "dhcp4_parser.cc" +#line 3414 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 626: // $@105: %empty -#line 2205 "dhcp4_parser.yy" - { + case 630: +#line 2215 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3473 "dhcp4_parser.cc" +#line 3423 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 627: // control_socket_type: "socket-type" $@105 ":" "constant string" -#line 2208 "dhcp4_parser.yy" - { - ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 631: +#line 2218 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3483 "dhcp4_parser.cc" +#line 3433 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 628: // $@106: %empty -#line 2214 "dhcp4_parser.yy" - { + case 632: +#line 2224 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3492 "dhcp4_parser.cc" +#line 3442 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 629: // control_socket_name: "socket-name" $@106 ":" "constant string" -#line 2217 "dhcp4_parser.yy" - { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 633: +#line 2227 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 3502 "dhcp4_parser.cc" +#line 3452 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 630: // $@107: %empty -#line 2226 "dhcp4_parser.yy" - { + case 634: +#line 2236 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-queue-control", qc); ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 3514 "dhcp4_parser.cc" +#line 3464 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 631: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}" -#line 2232 "dhcp4_parser.yy" - { + case 635: +#line 2242 "dhcp4_parser.yy" // lalr1.cc:859 + { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3525 "dhcp4_parser.cc" +#line 3475 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 640: // enable_queue: "enable-queue" ":" "boolean" -#line 2251 "dhcp4_parser.yy" - { + case 644: +#line 2261 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 3535 "dhcp4_parser.cc" +#line 3485 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 641: // $@108: %empty -#line 2257 "dhcp4_parser.yy" - { + case 645: +#line 2267 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3544 "dhcp4_parser.cc" +#line 3494 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 642: // queue_type: "queue-type" $@108 ":" "constant string" -#line 2260 "dhcp4_parser.yy" - { - ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 646: +#line 2270 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr qt(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 3554 "dhcp4_parser.cc" +#line 3504 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 643: // capacity: "capacity" ":" "integer" -#line 2266 "dhcp4_parser.yy" - { + case 647: +#line 2276 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); - ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr c(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 3564 "dhcp4_parser.cc" +#line 3514 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 644: // $@109: %empty -#line 2272 "dhcp4_parser.yy" - { - ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); + case 648: +#line 2282 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.unique(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3573 "dhcp4_parser.cc" +#line 3523 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 645: // arbitrary_map_entry: "constant string" $@109 ":" value -#line 2275 "dhcp4_parser.yy" - { - ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + case 649: +#line 2285 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set(yystack_[3].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3582 "dhcp4_parser.cc" +#line 3532 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 646: // $@110: %empty -#line 2282 "dhcp4_parser.yy" - { + case 650: +#line 2292 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 3594 "dhcp4_parser.cc" +#line 3544 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 647: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}" -#line 2288 "dhcp4_parser.yy" - { + case 651: +#line 2298 "dhcp4_parser.yy" // lalr1.cc:859 + { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3605 "dhcp4_parser.cc" +#line 3555 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 648: // $@111: %empty -#line 2295 "dhcp4_parser.yy" - { + case 652: +#line 2305 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3615 "dhcp4_parser.cc" +#line 3565 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 649: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}" -#line 2299 "dhcp4_parser.yy" - { + case 653: +#line 2309 "dhcp4_parser.yy" // lalr1.cc:859 + { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3625 "dhcp4_parser.cc" +#line 3575 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 670: // enable_updates: "enable-updates" ":" "boolean" -#line 2329 "dhcp4_parser.yy" - { + case 674: +#line 2339 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 3635 "dhcp4_parser.cc" +#line 3585 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 671: // $@112: %empty -#line 2335 "dhcp4_parser.yy" - { + case 675: +#line 2345 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3644 "dhcp4_parser.cc" +#line 3594 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 672: // server_ip: "server-ip" $@112 ":" "constant string" -#line 2338 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 676: +#line 2348 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 3654 "dhcp4_parser.cc" +#line 3604 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 673: // server_port: "server-port" ":" "integer" -#line 2344 "dhcp4_parser.yy" - { + case 677: +#line 2354 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 3664 "dhcp4_parser.cc" +#line 3614 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 674: // $@113: %empty -#line 2350 "dhcp4_parser.yy" - { + case 678: +#line 2360 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3673 "dhcp4_parser.cc" +#line 3623 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 675: // sender_ip: "sender-ip" $@113 ":" "constant string" -#line 2353 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 679: +#line 2363 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 3683 "dhcp4_parser.cc" +#line 3633 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 676: // sender_port: "sender-port" ":" "integer" -#line 2359 "dhcp4_parser.yy" - { + case 680: +#line 2369 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 3693 "dhcp4_parser.cc" +#line 3643 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 677: // max_queue_size: "max-queue-size" ":" "integer" -#line 2365 "dhcp4_parser.yy" - { + case 681: +#line 2375 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 3703 "dhcp4_parser.cc" +#line 3653 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 678: // $@114: %empty -#line 2371 "dhcp4_parser.yy" - { + case 682: +#line 2381 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 3712 "dhcp4_parser.cc" +#line 3662 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 679: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value -#line 2374 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); + case 683: +#line 2384 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3721 "dhcp4_parser.cc" +#line 3671 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 680: // ncr_protocol_value: "udp" -#line 2380 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 3727 "dhcp4_parser.cc" + case 684: +#line 2390 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } +#line 3677 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 681: // ncr_protocol_value: "tcp" -#line 2381 "dhcp4_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 3733 "dhcp4_parser.cc" + case 685: +#line 2391 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } +#line 3683 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 682: // $@115: %empty -#line 2384 "dhcp4_parser.yy" - { + case 686: +#line 2394 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 3742 "dhcp4_parser.cc" +#line 3692 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 683: // ncr_format: "ncr-format" $@115 ":" "JSON" -#line 2387 "dhcp4_parser.yy" - { + case 687: +#line 2397 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 3752 "dhcp4_parser.cc" +#line 3702 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 684: // $@116: %empty -#line 2394 "dhcp4_parser.yy" - { + case 688: +#line 2404 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3761 "dhcp4_parser.cc" +#line 3711 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 685: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string" -#line 2397 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 689: +#line 2407 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 3771 "dhcp4_parser.cc" +#line 3721 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 686: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2404 "dhcp4_parser.yy" - { + case 690: +#line 2414 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 3781 "dhcp4_parser.cc" +#line 3731 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 687: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2411 "dhcp4_parser.yy" - { + case 691: +#line 2421 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 3791 "dhcp4_parser.cc" +#line 3741 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 688: // $@117: %empty -#line 2418 "dhcp4_parser.yy" - { + case 692: +#line 2428 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3800 "dhcp4_parser.cc" +#line 3750 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 689: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value -#line 2421 "dhcp4_parser.yy" - { - ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); + case 693: +#line 2431 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3809 "dhcp4_parser.cc" +#line 3759 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 690: // $@118: %empty -#line 2427 "dhcp4_parser.yy" - { + case 694: +#line 2437 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3818 "dhcp4_parser.cc" +#line 3768 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 691: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string" -#line 2430 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 695: +#line 2440 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 3828 "dhcp4_parser.cc" +#line 3778 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 692: // $@119: %empty -#line 2437 "dhcp4_parser.yy" - { + case 696: +#line 2447 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3837 "dhcp4_parser.cc" +#line 3787 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 693: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string" -#line 2440 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 697: +#line 2450 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 3847 "dhcp4_parser.cc" +#line 3797 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 694: // $@120: %empty -#line 2447 "dhcp4_parser.yy" - { + case 698: +#line 2457 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3856 "dhcp4_parser.cc" +#line 3806 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 695: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string" -#line 2450 "dhcp4_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 699: +#line 2460 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 3866 "dhcp4_parser.cc" +#line 3816 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 696: // $@121: %empty -#line 2459 "dhcp4_parser.yy" - { + case 700: +#line 2469 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-control", i); ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 3878 "dhcp4_parser.cc" +#line 3828 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 697: // config_control: "config-control" $@121 ":" "{" config_control_params "}" -#line 2465 "dhcp4_parser.yy" - { + case 701: +#line 2475 "dhcp4_parser.yy" // lalr1.cc:859 + { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 3888 "dhcp4_parser.cc" +#line 3838 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 698: // $@122: %empty -#line 2471 "dhcp4_parser.yy" - { + case 702: +#line 2481 "dhcp4_parser.yy" // lalr1.cc:859 + { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3898 "dhcp4_parser.cc" +#line 3848 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 699: // sub_config_control: "{" $@122 config_control_params "}" -#line 2475 "dhcp4_parser.yy" - { + case 703: +#line 2485 "dhcp4_parser.yy" // lalr1.cc:859 + { // No config_control params are required // parsing completed } -#line 3907 "dhcp4_parser.cc" +#line 3857 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 704: // $@123: %empty -#line 2490 "dhcp4_parser.yy" - { + case 708: +#line 2500 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-databases", l); ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 3919 "dhcp4_parser.cc" +#line 3869 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 705: // config_databases: "config-databases" $@123 ":" "[" database_list "]" -#line 2496 "dhcp4_parser.yy" - { + case 709: +#line 2506 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3928 "dhcp4_parser.cc" +#line 3878 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 706: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2501 "dhcp4_parser.yy" - { + case 710: +#line 2511 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 3938 "dhcp4_parser.cc" +#line 3888 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 707: // $@124: %empty -#line 2509 "dhcp4_parser.yy" - { + case 711: +#line 2519 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 3950 "dhcp4_parser.cc" +#line 3900 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 708: // loggers: "loggers" $@124 ":" "[" loggers_entries "]" -#line 2515 "dhcp4_parser.yy" - { + case 712: +#line 2525 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3959 "dhcp4_parser.cc" +#line 3909 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 711: // $@125: %empty -#line 2527 "dhcp4_parser.yy" - { + case 715: +#line 2537 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 3969 "dhcp4_parser.cc" +#line 3919 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 712: // logger_entry: "{" $@125 logger_params "}" -#line 2531 "dhcp4_parser.yy" - { + case 716: +#line 2541 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); } -#line 3977 "dhcp4_parser.cc" +#line 3927 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 722: // debuglevel: "debuglevel" ":" "integer" -#line 2548 "dhcp4_parser.yy" - { + case 726: +#line 2558 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); - ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 3987 "dhcp4_parser.cc" +#line 3937 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 723: // $@126: %empty -#line 2554 "dhcp4_parser.yy" - { + case 727: +#line 2564 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3996 "dhcp4_parser.cc" +#line 3946 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 724: // severity: "severity" $@126 ":" "constant string" -#line 2557 "dhcp4_parser.yy" - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 728: +#line 2567 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4006 "dhcp4_parser.cc" +#line 3956 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 725: // $@127: %empty -#line 2563 "dhcp4_parser.yy" - { + case 729: +#line 2573 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4018 "dhcp4_parser.cc" +#line 3968 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 726: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]" -#line 2569 "dhcp4_parser.yy" - { + case 730: +#line 2579 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 4027 "dhcp4_parser.cc" +#line 3977 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 729: // $@128: %empty -#line 2578 "dhcp4_parser.yy" - { + case 733: +#line 2588 "dhcp4_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4037 "dhcp4_parser.cc" +#line 3987 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 730: // output_entry: "{" $@128 output_params_list "}" -#line 2582 "dhcp4_parser.yy" - { + case 734: +#line 2592 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); } -#line 4045 "dhcp4_parser.cc" +#line 3995 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 738: // $@129: %empty -#line 2597 "dhcp4_parser.yy" - { + case 742: +#line 2607 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4054 "dhcp4_parser.cc" +#line 4004 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 739: // output: "output" $@129 ":" "constant string" -#line 2600 "dhcp4_parser.yy" - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 743: +#line 2610 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4064 "dhcp4_parser.cc" +#line 4014 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 740: // flush: "flush" ":" "boolean" -#line 2606 "dhcp4_parser.yy" - { + case 744: +#line 2616 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); - ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4074 "dhcp4_parser.cc" +#line 4024 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 741: // maxsize: "maxsize" ":" "integer" -#line 2612 "dhcp4_parser.yy" - { + case 745: +#line 2622 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); - ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4084 "dhcp4_parser.cc" +#line 4034 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 742: // maxver: "maxver" ":" "integer" -#line 2618 "dhcp4_parser.yy" - { + case 746: +#line 2628 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); - ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4094 "dhcp4_parser.cc" +#line 4044 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 743: // $@130: %empty -#line 2624 "dhcp4_parser.yy" - { + case 747: +#line 2634 "dhcp4_parser.yy" // lalr1.cc:859 + { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4103 "dhcp4_parser.cc" +#line 4053 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 744: // pattern: "pattern" $@130 ":" "constant string" -#line 2627 "dhcp4_parser.yy" - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 748: +#line 2637 "dhcp4_parser.yy" // lalr1.cc:859 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4113 "dhcp4_parser.cc" +#line 4063 "dhcp4_parser.cc" // lalr1.cc:859 break; -#line 4117 "dhcp4_parser.cc" - +#line 4067 "dhcp4_parser.cc" // lalr1.cc:859 default: break; } } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); YYERROR; } -#endif // YY_EXCEPTIONS YY_SYMBOL_PRINT ("-> $$ =", yylhs); yypop_ (yylen); yylen = 0; + YY_STACK_PRINT (); // Shift the result of the reduction. - yypush_ (YY_NULLPTR, YY_MOVE (yylhs)); + yypush_ (YY_NULLPTR, yylhs); } goto yynewstate; - /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ @@ -4145,9 +4091,7 @@ namespace isc { namespace dhcp { if (!yyerrstatus_) { ++yynerrs_; - context yyctx (*this, yyla); - std::string msg = yysyntax_error_ (yyctx); - error (yyla.location, YY_MOVE (msg)); + error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla)); } @@ -4158,7 +4102,7 @@ namespace isc { namespace dhcp { error, discard it. */ // Return failure if at end of input. - if (yyla.kind () == symbol_kind::S_YYEOF) + if (yyla.type_get () == yyeof_) YYABORT; else if (!yyla.empty ()) { @@ -4175,81 +4119,69 @@ namespace isc { namespace dhcp { | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and - the label yyerrorlab therefore never appears in user code. */ - if (false) - YYERROR; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (false) + goto yyerrorlab; + yyerror_range[1].location = yystack_[yylen - 1].location; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); yylen = 0; - YY_STACK_PRINT (); goto yyerrlab1; - /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus_ = 3; // Each real token shifted decrements this. - // Pop stack until we find a state that shifts the error token. - for (;;) - { - yyn = yypact_[+yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += symbol_kind::S_YYerror; - if (0 <= yyn && yyn <= yylast_ - && yycheck_[yyn] == symbol_kind::S_YYerror) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - // Pop the current state because it cannot handle the error token. - if (yystack_.size () == 1) - YYABORT; - - yyerror_range[1].location = yystack_[0].location; - yy_destroy_ ("Error: popping", yystack_[0]); - yypop_ (); - YY_STACK_PRINT (); - } { stack_symbol_type error_token; + for (;;) + { + yyn = yypact_[yystack_[0].state]; + if (!yy_pact_value_is_default_ (yyn)) + { + yyn += yyterror_; + if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) + { + yyn = yytable_[yyn]; + if (0 < yyn) + break; + } + } + + // Pop the current state because it cannot handle the error token. + if (yystack_.size () == 1) + YYABORT; + + yyerror_range[1].location = yystack_[0].location; + yy_destroy_ ("Error: popping", yystack_[0]); + yypop_ (); + YY_STACK_PRINT (); + } yyerror_range[2].location = yyla.location; YYLLOC_DEFAULT (error_token.location, yyerror_range, 2); // Shift the error token. - error_token.state = state_type (yyn); - yypush_ ("Shifting", YY_MOVE (error_token)); + error_token.state = yyn; + yypush_ ("Shifting", error_token); } goto yynewstate; - - /*-------------------------------------. - | yyacceptlab -- YYACCEPT comes here. | - `-------------------------------------*/ + // Accept. yyacceptlab: yyresult = 0; goto yyreturn; - - /*-----------------------------------. - | yyabortlab -- YYABORT comes here. | - `-----------------------------------*/ + // Abort. yyabortlab: yyresult = 1; goto yyreturn; - - /*-----------------------------------------------------. - | yyreturn -- parsing is finished, return the result. | - `-----------------------------------------------------*/ yyreturn: if (!yyla.empty ()) yy_destroy_ ("Cleanup: discarding lookahead", yyla); @@ -4257,7 +4189,6 @@ namespace isc { namespace dhcp { /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ yypop_ (yylen); - YY_STACK_PRINT (); while (1 < yystack_.size ()) { yy_destroy_ ("Cleanup: popping", yystack_[0]); @@ -4266,12 +4197,12 @@ namespace isc { namespace dhcp { return yyresult; } -#if YY_EXCEPTIONS catch (...) { - YYCDEBUG << "Exception caught: cleaning lookahead and stack\n"; + YYCDEBUG << "Exception caught: cleaning lookahead and stack" + << std::endl; // Do not try to display the values of the reclaimed symbols, - // as their printers might throw an exception. + // as their printer might throw an exception. if (!yyla.empty ()) yy_destroy_ (YY_NULLPTR, yyla); @@ -4282,109 +4213,26 @@ namespace isc { namespace dhcp { } throw; } -#endif // YY_EXCEPTIONS } void Dhcp4Parser::error (const syntax_error& yyexc) { - error (yyexc.location, yyexc.what ()); - } - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - std::string - Dhcp4Parser::yytnamerr_ (const char *yystr) - { - if (*yystr == '"') - { - std::string yyr; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - yyr += *yyp; - break; - - case '"': - return yyr; - } - do_not_strip_quotes: ; - } - - return yystr; + error (yyexc.location, yyexc.what()); } + // Generate an error message. std::string - Dhcp4Parser::symbol_name (symbol_kind_type yysymbol) - { - return yytnamerr_ (yytname_[yysymbol]); - } - - - - // Dhcp4Parser::context. - Dhcp4Parser::context::context (const Dhcp4Parser& yyparser, const symbol_type& yyla) - : yyparser_ (yyparser) - , yyla_ (yyla) - {} - - int - Dhcp4Parser::context::expected_tokens (symbol_kind_type yyarg[], int yyargn) const + Dhcp4Parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const { - // Actual number of expected tokens - int yycount = 0; - - int yyn = yypact_[+yyparser_.yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - // Stay within bounds of both yycheck and yytname. - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror - && !yy_table_value_is_error_ (yytable_[yyx + yyn])) - { - if (!yyarg) - ++yycount; - else if (yycount == yyargn) - return 0; - else - yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx); - } - } - - if (yyarg && yycount == 0 && 0 < yyargn) - yyarg[0] = symbol_kind::S_YYEMPTY; - return yycount; - } - - + // Number of reported tokens (one for the "unexpected", one per + // "expected"). + size_t yycount = 0; + // Its maximum. + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + // Arguments of yyformat. + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int - Dhcp4Parser::yy_syntax_error_arguments_ (const context& yyctx, - symbol_kind_type yyarg[], int yyargn) const - { /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action @@ -4403,32 +4251,41 @@ namespace isc { namespace dhcp { - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. + scanner and before detecting a syntax error. Thus, state + merging (from LALR or IELR) and default reductions corrupt the + expected token list. However, the list is correct for + canonical LR with one exception: it will still contain any + token that will not be accepted due to an error action in a + later state. */ - - if (!yyctx.lookahead ().empty ()) + if (!yyla.empty ()) { - if (yyarg) - yyarg[0] = yyctx.token (); - int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1); - return yyn + 1; + int yytoken = yyla.type_get (); + yyarg[yycount++] = yytname_[yytoken]; + int yyn = yypact_[yystate]; + if (!yy_pact_value_is_default_ (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + // Stay within bounds of both yycheck and yytname. + int yychecklim = yylast_ - yyn + 1; + int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; + for (int yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ + && !yy_table_value_is_error_ (yytable_[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + break; + } + else + yyarg[yycount++] = yytname_[yyx]; + } + } } - return 0; - } - - // Generate an error message. - std::string - Dhcp4Parser::yysyntax_error_ (const context& yyctx) const - { - // Its maximum. - enum { YYARGS_MAX = 5 }; - // Arguments of yyformat. - symbol_kind_type yyarg[YYARGS_MAX]; - int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX); char const* yyformat = YY_NULLPTR; switch (yycount) @@ -4437,23 +4294,22 @@ namespace isc { namespace dhcp { case N: \ yyformat = S; \ break - default: // Avoid compiler warnings. - YYCASE_ (0, YY_("syntax error")); - YYCASE_ (1, YY_("syntax error, unexpected %s")); - YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } std::string yyres; // Argument number. - std::ptrdiff_t yyi = 0; + size_t yyi = 0; for (char const* yyp = yyformat; *yyp; ++yyp) if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) { - yyres += symbol_name (yyarg[yyi++]); + yyres += yytnamerr_ (yyarg[yyi++]); ++yyp; } else @@ -4462,806 +4318,808 @@ namespace isc { namespace dhcp { } - const short Dhcp4Parser::yypact_ninf_ = -910; + const short int Dhcp4Parser::yypact_ninf_ = -924; const signed char Dhcp4Parser::yytable_ninf_ = -1; - const short + const short int Dhcp4Parser::yypact_[] = { - 529, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, 33, 41, 36, 49, 54, 59, - 66, 82, 86, 121, 131, 133, 145, 215, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, 41, -143, 101, 104, 88, 224, - -45, 231, 67, 56, 177, -94, 403, 42, -910, 178, - 204, 239, 211, 244, -910, 247, -910, -910, -910, 254, - 273, 276, -910, -910, -910, -910, -910, -910, 289, 299, - 316, 330, 336, 347, 349, 364, 366, 376, 377, -910, - 396, 397, 399, 400, 401, -910, -910, -910, 404, 408, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, 409, -910, -910, -910, -910, -910, -910, 411, - -910, 412, -910, 69, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, 413, -910, 78, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, 415, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, 84, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, 94, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, 323, 390, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, 387, -910, -910, 419, -910, -910, -910, 420, - -910, -910, 423, 434, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, 436, 438, -910, - -910, -910, -910, 435, 441, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, 118, -910, -910, - -910, 443, -910, -910, 449, -910, 450, 452, -910, -910, - 453, 454, -910, -910, -910, -910, -910, -910, -910, 143, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, 455, 188, -910, - -910, -910, -910, 41, 41, -910, 217, 457, -910, 459, - 460, 463, 275, 277, 282, 465, 473, 475, 477, 478, - 479, 294, 297, 298, 302, 305, 304, 312, 314, 315, - 317, 318, 486, 321, 328, 322, 329, 334, 510, 544, - 558, 370, 371, 561, 562, 563, 566, 567, 568, 569, - 570, 571, 573, 574, 575, 393, 576, 577, 578, 582, - 583, 584, 398, 586, -910, 104, -910, 588, 590, 591, - 405, 88, -910, 592, 595, 596, 598, 599, 600, 414, - 602, 603, 604, 224, -910, 605, -45, -910, 606, 612, - 613, 614, 617, 619, 620, 621, -910, 231, -910, 622, - 623, 437, 625, 626, 627, 439, -910, 56, 629, 446, - 447, -910, 177, 630, 648, -50, -910, 461, 649, 651, - 474, 662, 476, 480, 664, 668, 481, 487, 669, 675, - 680, 682, 403, -910, 684, 498, 42, -910, -910, -910, - 686, 685, 688, 689, 691, -910, -910, -910, 501, 503, - 509, 693, 694, 697, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, 513, -910, -910, -910, -910, - -910, -4, 514, 530, -910, -910, 714, 716, 717, 718, - 719, 534, 208, 720, 722, 723, 724, 725, -910, 726, - 727, 728, 729, 540, 541, -910, 732, -910, 733, 192, - 205, -910, -910, 549, 550, 551, 737, 553, 554, -910, - 733, 555, 739, -910, 557, -910, 733, 559, 564, 565, - 572, 579, 580, 581, -910, 587, 589, -910, 593, 594, - 597, -910, -910, 601, -910, -910, -910, 607, 719, -910, - -910, 608, 609, -910, 610, -910, -910, 31, 429, -910, - -910, -4, 611, 615, 616, -910, 743, -910, -910, 41, - 104, 42, 88, 734, -910, -910, -910, 491, 491, 745, - -910, -910, -910, -910, -910, -910, -910, -910, -910, 746, - 749, 750, 752, -910, -910, -910, -910, -910, -910, -910, - -910, 260, 753, 754, 756, 230, 58, 117, 212, 403, - -910, -910, 757, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, 758, -910, -910, -910, -910, 107, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, 745, -910, - 189, 196, 197, -910, 200, -910, -910, -910, -910, -910, - -910, 762, 763, 764, 768, 769, -910, -910, -910, -910, - 770, 772, 774, 776, 777, 778, -910, 210, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, 213, - -910, 779, 783, -910, -910, 782, 786, -910, -910, 784, - 789, -910, -910, 787, 791, -910, -910, 790, 792, -910, - -910, -910, -910, -910, -910, 34, -910, -910, -910, -910, - -910, -910, -910, 102, -910, -910, 796, 800, -910, -910, - 798, 804, -910, 805, 806, 807, 808, 809, 810, 232, - -910, -910, -910, -910, -910, -910, -910, 811, 812, 813, - -910, 233, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, 236, -910, -910, -910, 814, -910, 815, - -910, -910, -910, 265, -910, -910, -910, -910, -910, 324, - -910, 119, -910, 618, -910, 816, 817, -910, -910, -910, - -910, 818, 819, -910, -910, -910, 820, 734, -910, 823, - 824, 825, 826, 632, 628, 640, 639, 642, 830, 831, - 832, 833, 647, 650, 652, 653, 646, 654, 491, -910, - -910, 491, -910, 745, 224, -910, 746, 56, -910, 749, - 177, -910, 750, 585, -910, 752, 260, -910, 288, 753, - -910, 231, -910, 754, -94, -910, 756, 655, 656, 657, - 658, 659, 660, 230, -910, 661, 665, 667, 58, -910, - 836, 838, 117, -910, 666, 848, 670, 849, 212, -910, - -910, 194, 757, -910, -910, 856, 852, -45, -910, 758, - 861, -910, -910, 690, -910, 391, 695, 707, 711, -910, - -910, -910, -910, -910, 712, 731, 738, 747, -910, -910, - -910, -910, -910, -910, -910, 327, -910, 335, -910, 864, - -910, 873, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, 361, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, 910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, 907, 915, -910, -910, -910, -910, - -910, 921, -910, 375, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, 795, 797, -910, -910, - 799, -910, 41, -910, -910, 932, -910, -910, -910, -910, - -910, 379, -910, -910, -910, -910, -910, -910, 801, 388, - -910, 733, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, 585, - -910, 935, 802, -910, 288, -910, -910, -910, -910, -910, - -910, 978, 803, 986, 194, -910, -910, -910, -910, -910, - 821, -910, -910, 987, -910, 822, -910, -910, 989, -910, - -910, 136, -910, -91, 989, -910, -910, 993, 994, 995, - -910, 389, -910, -910, -910, -910, -910, -910, -910, 996, - 827, 828, 834, 997, -91, -910, 837, -910, -910, -910, - 839, -910, -910, -910 + 168, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, 31, 41, 36, 54, 57, 70, + 72, 74, 89, 104, 111, 121, 128, 135, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, 41, -158, 27, 122, 67, 306, + 59, 185, -37, 482, 230, -86, 573, 162, -924, 101, + 161, 49, 152, 164, -924, 163, -924, -924, -924, 172, + 215, 222, -924, -924, -924, -924, -924, -924, 225, 233, + 241, 249, 255, 261, 265, 278, 291, 295, 302, -924, + 308, 310, 311, 337, 369, -924, -924, -924, 370, 371, + 382, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, 389, -924, -924, -924, -924, -924, -924, + 396, -924, 407, -924, 84, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, 414, -924, 94, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, 419, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, 100, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, 107, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, 208, 260, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, 331, -924, -924, 421, -924, + -924, -924, 424, -924, -924, 422, 394, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + 427, 428, -924, -924, -924, -924, 425, 438, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + 118, -924, -924, -924, 431, -924, -924, 440, -924, 442, + 443, -924, -924, 444, 447, -924, -924, -924, -924, -924, + -924, -924, 129, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + 453, 131, -924, -924, -924, -924, 41, 41, -924, -140, + 454, -924, 456, 457, 458, 269, 271, 273, 464, 467, + 470, 475, 477, 478, 293, 294, 297, 300, 301, 289, + 307, 312, 315, 309, 318, 483, 320, 321, 317, 325, + 329, 490, 500, 514, 332, 336, 340, 525, 527, 534, + 535, 536, 537, 562, 563, 565, 568, 569, 574, 385, + 575, 578, 579, 580, 581, 582, 397, 583, -924, 122, + -924, 588, 589, 591, 400, 67, -924, 592, 593, 594, + 595, 596, 597, 411, 600, 601, 603, 306, -924, 604, + 59, -924, 605, 606, 607, 608, 609, 610, 611, 617, + -924, 185, -924, 618, 619, 434, 624, 625, 626, 437, + -924, 482, 628, 439, 441, -924, 230, 630, 632, -70, + -924, 445, 633, 634, 452, 641, 465, 466, 655, 656, + 480, 484, 673, 675, 680, 681, 573, -924, 682, 495, + 162, -924, -924, -924, 686, 685, 688, 689, 690, -924, + -924, -924, 507, 508, 510, 695, 697, 700, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, 515, + -924, -924, -924, -924, -924, -90, 516, 517, -924, -924, + -924, 704, 705, 707, 708, 709, 523, 174, 710, 712, + 713, 714, 726, -924, 727, 728, 729, 730, 547, 550, + -924, 737, -924, 738, 234, 272, -924, -924, 553, 554, + 555, 742, 557, 558, -924, 738, 559, 744, -924, 561, + -924, 738, 564, 567, 570, 571, 572, 576, 577, -924, + 584, 585, -924, 586, 587, 598, -924, -924, 599, -924, + -924, -924, 602, 709, -924, -924, 612, 613, -924, 614, + -924, -924, 10, 621, -924, -924, -90, 615, 616, 620, + -924, 748, -924, -924, 41, 122, 162, 67, 735, -924, + -924, -924, 503, 503, 747, -924, -924, -924, -924, -924, + -924, -924, -924, -924, 753, 758, 759, 762, -924, -924, + -924, -924, -924, -924, -924, -924, 157, 763, 764, 765, + 432, 149, 63, -14, 573, -924, -924, 766, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, 767, + -924, -924, -924, -924, 186, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, 747, -924, 160, 170, 219, -924, 220, + -924, -924, -924, -924, -924, -924, 775, 776, 779, 780, + 781, -924, -924, -924, -924, 782, 783, 784, 787, 788, + 790, -924, 235, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, 236, -924, 789, 793, -924, -924, + 791, 795, -924, -924, 794, 796, -924, -924, 802, 798, + -924, -924, 803, 799, -924, -924, -924, -924, -924, -924, + 46, -924, -924, -924, -924, -924, -924, -924, 87, -924, + -924, 804, 809, -924, -924, 807, 811, -924, 812, 813, + 814, 815, 816, 817, 252, -924, -924, -924, -924, -924, + -924, -924, 818, 819, 820, -924, 259, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, 263, -924, + -924, -924, 821, -924, 822, -924, -924, -924, 319, -924, + -924, -924, -924, -924, 322, -924, 119, -924, 636, -924, + 823, 825, -924, -924, -924, -924, 824, 827, -924, -924, + -924, 826, 735, -924, 830, 831, 832, 833, 623, 637, + 646, 645, 648, 837, 838, 839, 840, 653, 654, 657, + 658, 659, 660, 503, -924, -924, 503, -924, 747, 306, + -924, 753, 482, -924, 758, 230, -924, 759, 590, -924, + 762, 157, -924, 212, 763, -924, 185, -924, 764, -86, + -924, 765, 662, 663, 664, 665, 666, 667, 432, -924, + 669, 668, 672, 149, -924, 843, 844, 63, -924, 676, + 847, 674, 857, -14, -924, -924, -32, 766, -924, -924, + 861, 874, 59, -924, 767, 881, -924, -924, 699, -924, + 324, 711, 715, 716, -924, -924, -924, -924, -924, 732, + 743, 750, 751, -924, -924, -924, -924, -924, -924, -924, + 323, -924, 334, -924, 878, -924, 911, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, 335, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + 916, -924, -924, -924, -924, -924, -924, -924, -924, -924, + 918, 930, -924, -924, -924, -924, -924, 936, -924, 387, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, 801, 806, -924, -924, 808, -924, 41, -924, + -924, 986, -924, -924, -924, -924, -924, 391, -924, -924, + -924, -924, -924, -924, 810, 393, -924, 738, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, 590, -924, 990, 828, -924, + 212, -924, -924, -924, -924, -924, -924, 991, 829, 994, + -32, -924, -924, -924, -924, -924, 834, -924, -924, 995, + -924, 835, -924, -924, 996, -924, -924, 140, -924, 34, + 996, -924, -924, 998, 1000, 1001, -924, 409, -924, -924, + -924, -924, -924, -924, -924, 1002, 836, 841, 842, 1003, + 34, -924, 845, -924, -924, -924, 846, -924, -924, -924 }; - const short + const unsigned short int Dhcp4Parser::yydefact_[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 43, 36, 32, 31, 28, 29, 30, 35, 3, 33, 34, - 56, 5, 60, 7, 170, 9, 328, 11, 517, 13, - 542, 15, 442, 17, 450, 19, 487, 21, 293, 23, - 648, 25, 698, 27, 45, 39, 0, 0, 0, 0, - 0, 544, 0, 452, 489, 0, 0, 0, 47, 0, - 46, 0, 0, 40, 58, 0, 696, 159, 185, 0, - 0, 0, 563, 565, 567, 183, 192, 194, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, - 0, 0, 0, 0, 0, 139, 146, 148, 0, 0, - 320, 440, 479, 394, 530, 532, 387, 258, 591, 534, - 285, 304, 0, 272, 617, 630, 646, 151, 153, 0, - 707, 0, 119, 0, 62, 64, 65, 66, 67, 68, - 99, 100, 101, 102, 103, 69, 97, 86, 87, 88, - 107, 108, 109, 110, 111, 112, 113, 105, 106, 114, - 115, 116, 118, 72, 73, 94, 74, 75, 76, 117, - 80, 81, 70, 98, 71, 78, 79, 92, 93, 95, - 89, 90, 91, 77, 82, 83, 84, 85, 96, 104, - 172, 174, 178, 0, 169, 0, 161, 163, 164, 165, - 166, 167, 168, 375, 377, 379, 509, 373, 381, 0, - 385, 383, 587, 372, 332, 333, 334, 335, 336, 357, - 358, 359, 360, 361, 347, 348, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 0, 330, 339, 352, - 353, 354, 340, 342, 343, 345, 341, 337, 338, 355, - 356, 344, 349, 350, 351, 346, 528, 527, 523, 524, - 522, 0, 519, 521, 525, 526, 585, 573, 575, 579, - 577, 583, 581, 569, 562, 556, 560, 561, 0, 545, - 546, 557, 558, 559, 553, 548, 554, 550, 551, 552, - 555, 549, 0, 469, 238, 0, 473, 471, 476, 0, - 465, 466, 0, 453, 454, 456, 468, 457, 458, 459, - 475, 460, 461, 462, 463, 464, 503, 0, 0, 501, - 502, 505, 506, 0, 490, 491, 493, 494, 495, 496, - 497, 498, 499, 500, 300, 302, 297, 0, 295, 298, - 299, 0, 684, 671, 0, 674, 0, 0, 678, 682, - 0, 0, 688, 690, 692, 694, 669, 667, 668, 0, - 650, 652, 653, 654, 655, 656, 657, 658, 659, 664, - 660, 661, 662, 663, 665, 666, 704, 0, 0, 700, - 702, 703, 44, 0, 0, 37, 0, 0, 57, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 5, 60, 7, 172, 9, 330, 11, 521, 13, + 546, 15, 446, 17, 454, 19, 491, 21, 295, 23, + 652, 25, 702, 27, 45, 39, 0, 0, 0, 0, + 0, 548, 0, 456, 493, 0, 0, 0, 47, 0, + 46, 0, 0, 40, 58, 0, 700, 161, 187, 0, + 0, 0, 567, 569, 571, 185, 194, 196, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, + 0, 0, 0, 0, 0, 140, 147, 149, 0, 0, + 0, 322, 444, 483, 397, 534, 536, 390, 260, 595, + 538, 287, 306, 0, 274, 621, 634, 650, 153, 155, + 0, 711, 0, 120, 0, 62, 64, 65, 66, 67, + 68, 99, 100, 101, 102, 103, 69, 97, 86, 87, + 88, 107, 108, 109, 110, 111, 112, 113, 114, 105, + 106, 115, 116, 117, 119, 72, 73, 94, 74, 75, + 76, 118, 80, 81, 70, 98, 71, 78, 79, 92, + 93, 95, 89, 90, 91, 77, 82, 83, 84, 85, + 96, 104, 174, 176, 180, 0, 171, 0, 163, 165, + 166, 167, 168, 169, 170, 378, 380, 382, 513, 376, + 384, 0, 388, 386, 591, 375, 334, 335, 336, 337, + 338, 359, 360, 361, 362, 363, 349, 350, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 0, + 332, 341, 354, 355, 356, 342, 344, 345, 347, 343, + 339, 340, 357, 358, 346, 351, 352, 353, 348, 532, + 531, 527, 528, 526, 0, 523, 525, 529, 530, 589, + 577, 579, 583, 581, 587, 585, 573, 566, 560, 564, + 565, 0, 549, 550, 561, 562, 563, 557, 552, 558, + 554, 555, 556, 559, 553, 0, 473, 240, 0, 477, + 475, 480, 0, 469, 470, 0, 457, 458, 460, 472, + 461, 462, 463, 479, 464, 465, 466, 467, 468, 507, + 0, 0, 505, 506, 509, 510, 0, 494, 495, 497, + 498, 499, 500, 501, 502, 503, 504, 302, 304, 299, + 0, 297, 300, 301, 0, 688, 675, 0, 678, 0, + 0, 682, 686, 0, 0, 692, 694, 696, 698, 673, + 671, 672, 0, 654, 656, 657, 658, 659, 660, 661, + 662, 663, 668, 664, 665, 666, 667, 669, 670, 708, + 0, 0, 704, 706, 707, 44, 0, 0, 37, 0, + 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 61, 0, 0, 0, - 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 329, 0, 0, 518, 0, 0, - 0, 0, 0, 0, 0, 0, 543, 0, 443, 0, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 0, - 0, 488, 0, 0, 0, 0, 294, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, + 61, 0, 0, 0, 0, 0, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, + 547, 0, 447, 0, 0, 0, 0, 0, 0, 0, + 455, 0, 0, 0, 0, 492, 0, 0, 0, 0, + 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 653, 0, 0, + 0, 703, 48, 41, 0, 0, 0, 0, 0, 134, + 135, 136, 0, 0, 0, 0, 0, 0, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, + 158, 159, 137, 138, 139, 0, 0, 0, 151, 152, + 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 620, 0, 0, 0, 0, 0, 0, + 160, 0, 63, 0, 0, 0, 184, 164, 0, 0, + 0, 0, 0, 0, 396, 0, 0, 0, 333, 0, + 524, 0, 0, 0, 0, 0, 0, 0, 0, 551, + 0, 0, 471, 0, 0, 0, 482, 459, 0, 511, + 512, 496, 0, 0, 298, 674, 0, 0, 677, 0, + 680, 681, 0, 0, 690, 691, 0, 0, 0, 0, + 655, 0, 710, 705, 0, 0, 0, 0, 0, 568, + 570, 572, 0, 0, 198, 133, 142, 143, 144, 145, + 146, 141, 148, 150, 324, 448, 485, 399, 38, 535, + 537, 392, 393, 394, 395, 391, 0, 0, 540, 289, + 0, 0, 0, 0, 0, 154, 156, 0, 49, 175, + 178, 179, 177, 182, 183, 181, 379, 381, 383, 515, + 377, 385, 389, 387, 0, 533, 590, 578, 580, 584, + 582, 588, 586, 574, 474, 241, 478, 476, 481, 508, + 303, 305, 689, 676, 679, 684, 685, 683, 687, 693, + 695, 697, 699, 198, 42, 0, 0, 0, 192, 0, + 189, 191, 227, 233, 235, 237, 0, 0, 0, 0, + 0, 249, 251, 253, 255, 0, 0, 0, 0, 0, + 0, 226, 0, 204, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 219, 220, 221, 216, 222, 223, + 224, 217, 218, 225, 0, 202, 0, 199, 200, 328, + 0, 325, 326, 452, 0, 449, 450, 489, 0, 486, + 487, 403, 0, 400, 401, 269, 270, 271, 272, 273, + 0, 262, 264, 265, 266, 267, 268, 599, 0, 597, + 544, 0, 541, 542, 293, 0, 290, 291, 0, 0, + 0, 0, 0, 0, 0, 308, 310, 311, 312, 313, + 314, 315, 0, 0, 0, 283, 0, 276, 278, 279, + 280, 281, 282, 630, 632, 629, 627, 628, 0, 623, + 625, 626, 0, 645, 0, 648, 641, 642, 0, 636, + 638, 639, 640, 643, 0, 715, 0, 713, 51, 519, + 0, 516, 517, 575, 593, 594, 0, 0, 59, 701, + 162, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 649, 0, 0, 0, 699, 48, 41, - 0, 0, 0, 0, 0, 133, 134, 135, 0, 0, - 0, 0, 0, 0, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 0, 156, 157, 136, 137, - 138, 0, 0, 0, 150, 155, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 616, 0, - 0, 0, 0, 0, 0, 158, 0, 63, 0, 0, - 0, 182, 162, 0, 0, 0, 0, 0, 0, 393, - 0, 0, 0, 331, 0, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 547, 0, 0, 467, 0, 0, - 0, 478, 455, 0, 507, 508, 492, 0, 0, 296, - 670, 0, 0, 673, 0, 676, 677, 0, 0, 686, - 687, 0, 0, 0, 0, 651, 0, 706, 701, 0, - 0, 0, 0, 0, 564, 566, 568, 0, 0, 196, - 132, 141, 142, 143, 144, 145, 140, 147, 149, 322, - 444, 481, 396, 38, 531, 533, 389, 390, 391, 392, - 388, 0, 0, 536, 287, 0, 0, 0, 0, 0, - 152, 154, 0, 49, 173, 176, 177, 175, 180, 181, - 179, 376, 378, 380, 511, 374, 382, 386, 384, 0, - 529, 586, 574, 576, 580, 578, 584, 582, 570, 470, - 239, 474, 472, 477, 504, 301, 303, 685, 672, 675, - 680, 681, 679, 683, 689, 691, 693, 695, 196, 42, - 0, 0, 0, 190, 0, 187, 189, 225, 231, 233, - 235, 0, 0, 0, 0, 0, 247, 249, 251, 253, - 0, 0, 0, 0, 0, 0, 224, 0, 202, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 217, - 218, 219, 214, 220, 221, 222, 215, 216, 223, 0, - 200, 0, 197, 198, 326, 0, 323, 324, 448, 0, - 445, 446, 485, 0, 482, 483, 400, 0, 397, 398, - 267, 268, 269, 270, 271, 0, 260, 262, 263, 264, - 265, 266, 595, 0, 593, 540, 0, 537, 538, 291, - 0, 288, 289, 0, 0, 0, 0, 0, 0, 0, - 306, 308, 309, 310, 311, 312, 313, 0, 0, 0, - 281, 0, 274, 276, 277, 278, 279, 280, 626, 628, - 625, 623, 624, 0, 619, 621, 622, 0, 641, 0, - 644, 637, 638, 0, 632, 634, 635, 636, 639, 0, - 711, 0, 709, 51, 515, 0, 512, 513, 571, 589, - 590, 0, 0, 59, 697, 160, 0, 0, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, - 193, 0, 195, 0, 0, 321, 0, 452, 441, 0, - 489, 480, 0, 0, 395, 0, 0, 259, 597, 0, - 592, 544, 535, 0, 0, 286, 0, 0, 0, 0, - 0, 0, 0, 0, 305, 0, 0, 0, 0, 273, - 0, 0, 0, 618, 0, 0, 0, 0, 0, 631, - 647, 0, 0, 708, 53, 0, 52, 0, 510, 0, - 0, 588, 705, 0, 188, 0, 0, 0, 0, 237, - 240, 241, 242, 243, 0, 0, 0, 0, 255, 256, - 244, 245, 246, 257, 203, 0, 199, 0, 325, 0, - 447, 0, 484, 439, 419, 420, 421, 407, 408, 424, - 425, 426, 427, 428, 410, 411, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 404, 405, 406, 417, - 418, 416, 0, 402, 409, 422, 423, 412, 413, 414, - 415, 399, 261, 613, 0, 611, 612, 604, 605, 609, - 610, 606, 607, 608, 0, 598, 599, 601, 602, 603, - 594, 0, 539, 0, 290, 314, 315, 316, 317, 318, - 319, 307, 282, 283, 284, 275, 0, 0, 620, 640, - 0, 643, 0, 633, 725, 0, 723, 721, 715, 719, - 720, 0, 713, 717, 718, 716, 710, 50, 0, 0, - 514, 0, 191, 227, 228, 229, 230, 226, 232, 234, - 236, 248, 250, 252, 254, 201, 327, 449, 486, 0, - 401, 0, 0, 596, 0, 541, 292, 627, 629, 642, - 645, 0, 0, 0, 0, 712, 54, 516, 572, 403, - 0, 615, 600, 0, 722, 0, 714, 614, 0, 724, - 729, 0, 727, 0, 0, 726, 738, 0, 0, 0, - 743, 0, 731, 733, 734, 735, 736, 737, 728, 0, - 0, 0, 0, 0, 0, 730, 0, 740, 741, 742, - 0, 732, 739, 744 + 0, 0, 0, 0, 186, 195, 0, 197, 0, 0, + 323, 0, 456, 445, 0, 493, 484, 0, 0, 398, + 0, 0, 261, 601, 0, 596, 548, 539, 0, 0, + 288, 0, 0, 0, 0, 0, 0, 0, 0, 307, + 0, 0, 0, 0, 275, 0, 0, 0, 622, 0, + 0, 0, 0, 0, 635, 651, 0, 0, 712, 53, + 0, 52, 0, 514, 0, 0, 592, 709, 0, 190, + 0, 0, 0, 0, 239, 242, 243, 244, 245, 0, + 0, 0, 0, 257, 258, 246, 247, 248, 259, 205, + 0, 201, 0, 327, 0, 451, 0, 488, 443, 422, + 423, 424, 410, 411, 427, 428, 429, 430, 431, 413, + 414, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 407, 408, 409, 420, 421, 419, 0, 405, + 412, 425, 426, 415, 416, 417, 418, 402, 263, 617, + 0, 615, 616, 608, 609, 613, 614, 610, 611, 612, + 0, 602, 603, 605, 606, 607, 598, 0, 543, 0, + 292, 316, 317, 318, 319, 320, 321, 309, 284, 285, + 286, 277, 0, 0, 624, 644, 0, 647, 0, 637, + 729, 0, 727, 725, 719, 723, 724, 0, 717, 721, + 722, 720, 714, 50, 0, 0, 518, 0, 193, 229, + 230, 231, 232, 228, 234, 236, 238, 250, 252, 254, + 256, 203, 329, 453, 490, 0, 404, 0, 0, 600, + 0, 545, 294, 631, 633, 646, 649, 0, 0, 0, + 0, 716, 54, 520, 576, 406, 0, 619, 604, 0, + 726, 0, 718, 618, 0, 728, 733, 0, 731, 0, + 0, 730, 742, 0, 0, 0, 747, 0, 735, 737, + 738, 739, 740, 741, 732, 0, 0, 0, 0, 0, + 0, 734, 0, 744, 745, 746, 0, 736, 743, 748 }; - const short + const short int Dhcp4Parser::yypgoto_[] = { - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -52, -910, -528, -910, 365, - -910, -910, -910, -910, -910, -910, -585, -910, -910, -910, - -67, -910, -910, -910, -910, -910, -910, 352, 548, -40, - -28, -24, -1, 1, 11, 19, 22, 25, 26, -910, - -910, -910, -910, 29, 30, 32, 37, 40, 43, -910, - 363, 44, -910, 45, -910, 47, 48, -910, 50, -910, - 51, -910, -910, -910, -910, -910, 353, 545, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, 110, -910, -910, -910, -910, -910, - -910, 270, -910, 87, -910, -645, 91, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -63, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - 77, -910, -910, -910, -910, -910, -910, -910, -910, 57, - -910, -910, -910, -910, -910, -910, -910, 68, -910, -910, - -910, 72, 512, -910, -910, -910, -910, -910, -910, -910, - 65, -910, -910, -910, -910, -910, -910, -909, -910, -910, - -910, 95, -910, -910, -910, 98, 560, -910, -910, -910, - -910, -910, -910, -910, -910, -906, -910, -65, -910, 53, - -910, 55, -910, -910, -910, -910, -910, -910, -910, 89, - -910, -910, -106, -46, -910, -910, -910, -910, -910, 97, - -910, -910, -910, 105, -910, 531, -910, -42, -910, -910, - -910, -910, -910, -36, -910, -910, -910, -910, -910, -35, - -910, -910, -910, 99, -910, -910, -910, 106, -910, 532, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, 60, -910, -910, -910, 61, 624, -910, -910, -51, - -910, -11, -910, -25, -910, -910, -910, 92, -910, -910, - -910, 96, -910, 556, -55, -910, 0, -910, 7, -910, - 332, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -905, -910, - -910, -910, -910, -910, 103, -910, -910, -910, -90, -910, - -910, -910, -910, -910, -910, -910, -910, 83, -910, -910, - -910, -910, -910, -910, -910, 79, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, 357, 526, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, -910, -910, -910, - -910, -910, -910, -910, -910, -910, -910, 402, 523, -910, - -910, -910, -910, -910, -910, 80, -910, -910, -93, -910, - -910, -910, -910, -910, -910, -114, -910, -910, -130, -910, - -910, -910, -910, -910, -910, -910 + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -52, -924, -533, -924, 375, + -924, -924, -924, -924, -924, -924, -581, -924, -924, -924, + -67, -924, -924, -924, -924, -924, -924, 354, 551, -40, + -28, -24, -1, 1, 11, 19, 22, 25, 26, -924, + -924, -924, -924, 29, 30, 32, 37, 40, 43, -924, + 365, 44, -924, 45, -924, 47, 48, 50, -924, 51, + -924, 55, -924, -924, -924, -924, -924, 355, 548, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, 112, -924, -924, -924, -924, + -924, -924, 274, -924, 88, -924, -650, 92, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -63, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, 77, -924, -924, -924, -924, -924, -924, -924, -924, + 56, -924, -924, -924, -924, -924, -924, -924, 69, -924, + -924, -924, 75, 518, -924, -924, -924, -924, -924, -924, + -924, 65, -924, -924, -924, -924, -924, -924, -923, -924, + -924, -924, 97, -924, -924, -924, 102, 552, -924, -924, + -924, -924, -924, -924, -924, -924, -917, -924, -65, -924, + 53, -924, 58, -924, -924, -924, -924, -924, -924, -924, + 98, -924, -924, -103, -46, -924, -924, -924, -924, -924, + 105, -924, -924, -924, 108, -924, 540, -924, -42, -924, + -924, -924, -924, -924, -36, -924, -924, -924, -924, -924, + -35, -924, -924, -924, 106, -924, -924, -924, 109, -924, + 539, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, 64, -924, -924, -924, 60, 622, -924, -924, + -51, -924, -11, -924, -25, -924, -924, -924, 99, -924, + -924, -924, 103, -924, 560, -55, -924, 0, -924, 7, + -924, 338, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -911, + -924, -924, -924, -924, -924, 110, -924, -924, -924, -87, + -924, -924, -924, -924, -924, -924, -924, -924, 83, -924, + -924, -924, -924, -924, -924, -924, 82, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, 362, 531, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, -924, -924, + -924, -924, -924, -924, -924, -924, -924, -924, 402, 529, + -924, -924, -924, -924, -924, -924, 85, -924, -924, -89, + -924, -924, -924, -924, -924, -924, -110, -924, -924, -127, + -924, -924, -924, -924, -924, -924, -924 }; - const short + const short int Dhcp4Parser::yydefgoto_[] = { -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 36, 37, 38, 65, 674, - 82, 83, 39, 64, 79, 80, 694, 883, 975, 976, - 766, 41, 66, 85, 397, 43, 67, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 422, 157, 158, 159, 160, 161, 162, 163, 428, - 666, 164, 429, 165, 430, 166, 167, 450, 168, 451, - 169, 170, 171, 172, 173, 400, 205, 206, 45, 68, - 207, 457, 208, 458, 697, 209, 459, 700, 210, 174, - 408, 175, 401, 744, 745, 746, 896, 176, 409, 177, - 410, 791, 792, 793, 921, 767, 768, 769, 899, 1117, - 770, 900, 771, 901, 772, 902, 773, 774, 490, 775, - 776, 777, 778, 779, 780, 781, 782, 908, 783, 909, - 784, 910, 785, 911, 786, 787, 788, 178, 440, 815, - 816, 817, 818, 819, 820, 821, 179, 446, 851, 852, - 853, 854, 855, 180, 443, 830, 831, 832, 944, 59, - 75, 347, 348, 349, 503, 350, 504, 181, 444, 839, - 840, 841, 842, 843, 844, 845, 846, 182, 433, 795, - 796, 797, 924, 47, 69, 246, 247, 248, 467, 249, - 463, 250, 464, 251, 465, 252, 468, 253, 471, 254, - 470, 183, 439, 680, 256, 184, 436, 807, 808, 809, - 933, 1042, 1043, 185, 434, 53, 72, 799, 800, 801, - 927, 55, 73, 312, 313, 314, 315, 316, 317, 318, - 489, 319, 493, 320, 492, 321, 322, 494, 323, 186, - 435, 803, 804, 805, 930, 57, 74, 333, 334, 335, - 336, 337, 498, 338, 339, 340, 341, 258, 466, 885, - 886, 887, 977, 49, 70, 271, 272, 273, 475, 187, - 437, 188, 438, 189, 442, 826, 827, 828, 941, 51, - 71, 288, 289, 290, 190, 405, 191, 406, 192, 407, - 294, 485, 890, 980, 295, 479, 296, 480, 297, 482, - 298, 481, 299, 484, 300, 483, 301, 478, 265, 472, - 891, 193, 441, 823, 824, 938, 1064, 1065, 1066, 1067, - 1068, 1131, 1069, 194, 195, 447, 863, 864, 865, 960, - 866, 961, 196, 448, 873, 874, 875, 876, 965, 877, - 878, 967, 197, 449, 61, 76, 369, 370, 371, 372, - 509, 373, 374, 511, 375, 376, 377, 514, 732, 378, - 515, 379, 508, 380, 381, 382, 518, 383, 519, 384, - 520, 385, 521, 198, 399, 63, 77, 388, 389, 390, - 524, 391, 199, 453, 881, 882, 971, 1101, 1102, 1103, - 1104, 1143, 1105, 1141, 1161, 1162, 1163, 1171, 1172, 1173, - 1179, 1174, 1175, 1176, 1177, 1183 + 23, 24, 25, 26, 27, 36, 37, 38, 65, 679, + 82, 83, 39, 64, 79, 80, 699, 888, 980, 981, + 771, 41, 66, 85, 400, 43, 67, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 425, 158, 159, 160, 161, 162, 163, 164, 431, + 671, 165, 432, 166, 433, 167, 168, 169, 454, 170, + 455, 171, 172, 173, 174, 175, 403, 207, 208, 45, + 68, 209, 461, 210, 462, 702, 211, 463, 705, 212, + 176, 411, 177, 404, 749, 750, 751, 901, 178, 412, + 179, 413, 796, 797, 798, 926, 772, 773, 774, 904, + 1123, 775, 905, 776, 906, 777, 907, 778, 779, 494, + 780, 781, 782, 783, 784, 785, 786, 787, 913, 788, + 914, 789, 915, 790, 916, 791, 792, 793, 180, 444, + 820, 821, 822, 823, 824, 825, 826, 181, 450, 856, + 857, 858, 859, 860, 182, 447, 835, 836, 837, 949, + 59, 75, 350, 351, 352, 507, 353, 508, 183, 448, + 844, 845, 846, 847, 848, 849, 850, 851, 184, 437, + 800, 801, 802, 929, 47, 69, 249, 250, 251, 471, + 252, 467, 253, 468, 254, 469, 255, 472, 256, 475, + 257, 474, 185, 443, 685, 259, 186, 440, 812, 813, + 814, 938, 1048, 1049, 187, 438, 53, 72, 804, 805, + 806, 932, 55, 73, 315, 316, 317, 318, 319, 320, + 321, 493, 322, 497, 323, 496, 324, 325, 498, 326, + 188, 439, 808, 809, 810, 935, 57, 74, 336, 337, + 338, 339, 340, 502, 341, 342, 343, 344, 261, 470, + 890, 891, 892, 982, 49, 70, 274, 275, 276, 479, + 189, 441, 190, 442, 191, 446, 831, 832, 833, 946, + 51, 71, 291, 292, 293, 192, 408, 193, 409, 194, + 410, 297, 489, 895, 985, 298, 483, 299, 484, 300, + 486, 301, 485, 302, 488, 303, 487, 304, 482, 268, + 476, 896, 195, 445, 828, 829, 943, 1070, 1071, 1072, + 1073, 1074, 1137, 1075, 196, 197, 451, 868, 869, 870, + 965, 871, 966, 198, 452, 878, 879, 880, 881, 970, + 882, 883, 972, 199, 453, 61, 76, 372, 373, 374, + 375, 513, 376, 377, 515, 378, 379, 380, 518, 737, + 381, 519, 382, 512, 383, 384, 385, 522, 386, 523, + 387, 524, 388, 525, 200, 402, 63, 77, 391, 392, + 393, 528, 394, 201, 457, 886, 887, 976, 1107, 1108, + 1109, 1110, 1149, 1111, 1147, 1167, 1168, 1169, 1177, 1178, + 1179, 1185, 1180, 1181, 1182, 1183, 1189 }; - const short + const unsigned short int Dhcp4Parser::yytable_[] = { - 142, 204, 223, 267, 284, 268, 310, 329, 346, 366, - 311, 330, 78, 789, 262, 707, 291, 211, 259, 274, - 286, 711, 324, 342, 1037, 367, 302, 1038, 1050, 224, - 344, 345, 331, 28, 257, 270, 285, 936, 332, 122, - 937, 225, 673, 40, 261, 226, 29, 81, 30, 730, - 31, 266, 124, 125, 386, 387, 42, 212, 260, 275, - 287, 44, 325, 343, 220, 368, 46, 221, 227, 263, - 228, 292, 455, 48, 344, 345, 264, 456, 293, 1166, - 229, 461, 1167, 1168, 1169, 1170, 462, 473, 230, 50, - 303, 231, 474, 52, 232, 233, 141, 476, 234, 235, - 673, 236, 477, 200, 201, 939, 237, 202, 940, 238, - 203, 84, 239, 240, 241, 86, 242, 243, 87, 244, - 245, 505, 972, 269, 255, 973, 506, 88, 54, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 56, 1164, - 58, 304, 1165, 305, 306, 141, 522, 307, 308, 309, - 121, 523, 60, 124, 125, 124, 125, 661, 662, 663, - 664, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 392, 124, 125, 121, 122, 665, - 731, 526, 455, 847, 848, 849, 527, 893, 123, 526, - 461, 124, 125, 897, 894, 895, 126, 393, 898, 695, - 696, 127, 128, 918, 124, 125, 918, 129, 919, 395, - 1037, 920, 62, 1038, 1050, 698, 699, 130, 283, 888, - 131, 32, 33, 34, 35, 953, 958, 132, 133, 962, - 954, 959, 134, 394, 963, 135, 141, 396, 141, 136, - 90, 91, 92, 93, 94, 398, 858, 859, 402, 92, - 93, 94, 304, 326, 305, 306, 327, 328, 968, 137, - 138, 139, 140, 969, 124, 125, 1005, 403, 141, 304, - 404, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 124, 125, 411, 141, 112, 113, 114, 115, 116, - 117, 118, 119, 412, 213, 214, 215, 141, 122, 124, - 125, 676, 677, 678, 679, 122, 92, 93, 94, 216, - 413, 124, 125, 217, 218, 219, 126, 522, 124, 125, - 918, 486, 970, 220, 414, 1125, 221, 129, 473, 276, - 415, 528, 529, 1126, 222, 277, 278, 279, 280, 281, - 282, 416, 283, 417, 867, 868, 869, 833, 834, 835, - 836, 837, 838, 1094, 1129, 1095, 1096, 141, 418, 1130, - 419, 121, 122, 304, 810, 811, 812, 813, 505, 814, - 420, 421, 1144, 1136, 141, 124, 125, 1145, 142, 137, - 138, 476, 1184, 487, 204, 488, 1147, 1185, 1053, 1054, - 423, 424, 870, 425, 426, 427, 223, 530, 431, 267, - 211, 268, 432, 445, 141, 452, 454, 460, 262, 469, - 284, 141, 259, 491, 495, 274, 1113, 1114, 1115, 1116, - 310, 496, 291, 224, 311, 329, 286, 497, 257, 330, - 499, 270, 500, 501, 502, 225, 324, 507, 261, 226, - 212, 342, 285, 510, 512, 366, 513, 516, 517, 525, - 331, 531, 260, 532, 533, 275, 332, 534, 535, 538, - 536, 367, 227, 263, 228, 537, 287, 539, 141, 540, - 264, 541, 542, 543, 229, 544, 325, 292, 545, 546, - 555, 343, 230, 547, 293, 231, 548, 549, 232, 233, - 124, 125, 234, 235, 550, 236, 551, 552, 553, 554, - 237, 368, 556, 238, 561, 558, 239, 240, 241, 557, - 242, 243, 559, 244, 245, 747, 1148, 560, 255, 269, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 562, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 563, 564, 565, 566, 567, 568, 364, 365, - 569, 570, 571, 572, 573, 574, 304, 575, 576, 577, - 579, 580, 581, 142, 578, 204, 582, 583, 584, 733, - 586, 585, 588, 141, 589, 590, 593, 739, 591, 594, - 595, 211, 596, 597, 598, 599, 600, 601, 602, 604, - 606, 90, 91, 92, 93, 94, 607, 608, 609, 850, - 860, 610, 366, 611, 612, 613, 615, 616, 617, 618, - 619, 620, 621, 623, 627, 856, 861, 871, 367, 624, - 625, 212, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 628, 631, 630, 632, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 633, 634, 635, 637, 122, - 304, 636, 638, 641, 639, 857, 862, 872, 368, 642, - 640, 141, 124, 125, 643, 218, 644, 126, 646, 647, - 649, 654, 650, 655, 220, 651, 652, 221, 653, 656, - 657, 658, 659, 660, 667, 222, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 669, - 668, 670, 671, 672, 675, 681, 30, 682, 683, 684, - 690, 691, 685, 686, 687, 688, 689, 692, 693, 701, - 702, 703, 704, 705, 706, 708, 709, 710, 738, 712, - 137, 138, 790, 794, 713, 714, 798, 802, 743, 806, - 822, 825, 715, 829, 880, 884, 903, 904, 905, 716, - 717, 718, 906, 907, 912, 141, 913, 719, 914, 720, - 915, 916, 917, 721, 722, 922, 923, 723, 925, 926, - 928, 724, 929, 931, 932, 935, 934, 725, 727, 728, - 729, 735, 942, 943, 945, 736, 737, 946, 974, 947, - 948, 949, 950, 951, 952, 955, 956, 957, 964, 966, - 979, 990, 978, 989, 983, 982, 981, 985, 986, 987, - 988, 991, 992, 993, 994, 995, 996, 997, 998, 1002, - 1086, 999, 1087, 1000, 1001, 1003, 1075, 1076, 1077, 1078, - 1079, 1080, 1090, 1092, 1082, 1108, 1083, 223, 1084, 1089, - 310, 1091, 1107, 329, 311, 1111, 1013, 330, 1039, 262, - 1036, 1055, 1127, 259, 284, 1056, 324, 346, 1047, 342, - 1112, 1128, 1045, 1061, 224, 1118, 291, 1059, 331, 257, - 286, 850, 1057, 1014, 332, 860, 225, 1119, 1044, 261, - 226, 1120, 1121, 1058, 1097, 1015, 285, 856, 1098, 1016, - 267, 861, 268, 260, 1132, 1133, 325, 871, 1134, 343, - 1099, 1122, 1046, 227, 263, 228, 274, 1060, 1123, 1135, - 287, 264, 1017, 1048, 1018, 229, 1142, 1124, 1062, 1150, - 1049, 292, 270, 230, 1019, 1063, 231, 857, 293, 232, - 233, 862, 1020, 234, 235, 1021, 236, 872, 1022, 1023, - 1100, 237, 1024, 1025, 238, 1026, 275, 239, 240, 241, - 1027, 242, 243, 1028, 244, 245, 1029, 1030, 1031, 255, - 1032, 1033, 1153, 1034, 1035, 1137, 1040, 1138, 1041, 1139, - 1155, 1146, 1158, 726, 1154, 1151, 1160, 1180, 1181, 1182, - 1186, 1190, 740, 587, 734, 742, 592, 984, 892, 1004, - 1006, 1157, 1159, 1052, 1074, 1085, 1073, 629, 1081, 1188, - 1187, 1008, 1007, 1149, 1051, 1189, 1010, 1192, 622, 1193, - 269, 1012, 1009, 603, 626, 1072, 1011, 1071, 1109, 1110, - 1140, 889, 1070, 614, 1152, 1088, 879, 1093, 645, 648, - 1178, 1156, 1106, 741, 1191, 0, 0, 0, 0, 0, - 0, 0, 1013, 0, 1039, 0, 1036, 1055, 0, 0, - 0, 1056, 0, 0, 1047, 0, 0, 1097, 1045, 1061, - 0, 1098, 0, 1059, 0, 0, 0, 0, 1057, 1014, - 0, 0, 0, 1099, 1044, 0, 0, 0, 0, 1058, - 605, 1015, 0, 0, 0, 1016, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1046, 0, - 0, 0, 0, 1060, 0, 0, 0, 0, 1017, 1048, - 1018, 0, 0, 1100, 1062, 0, 1049, 0, 0, 0, - 1019, 1063, 0, 0, 0, 0, 0, 0, 1020, 0, - 0, 1021, 0, 0, 1022, 1023, 0, 0, 1024, 1025, - 0, 1026, 0, 0, 0, 0, 1027, 0, 0, 1028, - 0, 0, 1029, 1030, 1031, 0, 1032, 1033, 0, 1034, - 1035, 0, 1040, 0, 1041 + 143, 206, 225, 270, 287, 271, 313, 332, 349, 369, + 314, 333, 78, 794, 265, 1043, 294, 213, 262, 277, + 289, 1044, 327, 345, 712, 370, 305, 1056, 735, 226, + 716, 28, 334, 81, 260, 273, 288, 84, 335, 347, + 348, 227, 678, 40, 264, 228, 29, 122, 30, 941, + 31, 534, 942, 397, 307, 347, 348, 214, 263, 278, + 290, 42, 328, 346, 44, 371, 125, 126, 229, 266, + 230, 295, 666, 667, 668, 669, 267, 46, 296, 48, + 231, 50, 202, 203, 125, 126, 204, 459, 232, 205, + 944, 233, 460, 945, 234, 235, 52, 465, 236, 237, + 678, 238, 466, 477, 670, 142, 239, 395, 478, 240, + 480, 54, 241, 242, 243, 481, 244, 245, 56, 246, + 247, 509, 977, 272, 248, 978, 510, 258, 58, 872, + 873, 874, 526, 86, 530, 60, 87, 527, 1100, 531, + 1101, 1102, 62, 1170, 123, 88, 1171, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 269, 125, 126, 142, + 398, 125, 126, 459, 396, 125, 126, 399, 898, 222, + 736, 401, 223, 530, 389, 390, 405, 875, 899, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 863, 864, 1172, 122, 123, 1173, 1174, + 1175, 1176, 1043, 92, 93, 94, 490, 124, 1044, 406, + 125, 126, 465, 902, 1056, 127, 407, 900, 903, 414, + 128, 129, 32, 33, 34, 35, 130, 415, 923, 923, + 92, 93, 94, 924, 925, 416, 131, 125, 126, 132, + 142, 700, 701, 417, 142, 958, 133, 134, 142, 418, + 959, 135, 963, 491, 136, 419, 967, 964, 137, 420, + 123, 968, 815, 816, 817, 818, 1010, 819, 681, 682, + 683, 684, 421, 125, 126, 852, 853, 854, 138, 139, + 140, 141, 703, 704, 279, 422, 122, 123, 307, 423, + 280, 281, 282, 283, 284, 285, 424, 286, 286, 893, + 125, 126, 426, 142, 427, 428, 307, 329, 308, 309, + 330, 331, 973, 1059, 1060, 526, 923, 974, 125, 126, + 975, 1131, 90, 91, 92, 93, 94, 477, 1135, 492, + 142, 429, 1132, 1136, 532, 533, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 1119, + 1120, 1121, 1122, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 430, 434, 435, 142, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 436, 215, 216, 217, + 509, 123, 143, 449, 1150, 1142, 480, 501, 206, 1151, + 456, 1153, 218, 142, 125, 126, 219, 220, 221, 127, + 225, 458, 1190, 270, 213, 271, 222, 1191, 464, 223, + 130, 142, 265, 473, 287, 495, 262, 224, 499, 277, + 500, 503, 504, 505, 313, 511, 294, 226, 314, 332, + 289, 506, 260, 333, 514, 273, 516, 517, 520, 227, + 327, 521, 264, 228, 214, 345, 288, 529, 535, 369, + 536, 537, 538, 539, 334, 540, 263, 541, 542, 278, + 335, 543, 138, 139, 544, 370, 229, 266, 230, 545, + 290, 546, 547, 553, 267, 548, 549, 559, 231, 550, + 328, 295, 551, 552, 565, 346, 232, 142, 296, 233, + 554, 557, 234, 235, 566, 555, 236, 237, 556, 238, + 558, 562, 560, 561, 239, 371, 306, 240, 567, 563, + 241, 242, 243, 564, 244, 245, 568, 246, 247, 571, + 569, 572, 248, 272, 570, 258, 1154, 752, 573, 574, + 575, 576, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 838, 839, 840, 841, 842, 843, 577, 578, 307, 579, + 308, 309, 580, 581, 310, 311, 312, 583, 582, 584, + 125, 126, 585, 586, 587, 588, 589, 591, 143, 307, + 206, 590, 593, 594, 596, 595, 598, 599, 600, 601, + 602, 603, 744, 604, 605, 606, 213, 607, 609, 611, + 612, 613, 614, 615, 616, 617, 90, 91, 92, 93, + 94, 618, 620, 621, 855, 865, 622, 369, 623, 624, + 625, 626, 628, 629, 632, 630, 633, 636, 637, 635, + 861, 866, 876, 370, 638, 639, 214, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 640, 641, 642, + 643, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 125, 126, 142, 644, 123, 307, 646, 645, 647, + 862, 867, 877, 371, 648, 649, 651, 652, 125, 126, + 654, 220, 655, 127, 142, 656, 657, 658, 659, 660, + 222, 661, 662, 223, 663, 664, 665, 672, 673, 674, + 675, 224, 676, 677, 680, 686, 30, 687, 688, 689, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 690, 691, 692, 693, 694, 695, 367, + 368, 696, 697, 698, 706, 707, 708, 709, 710, 711, + 713, 714, 715, 743, 795, 717, 138, 139, 718, 748, + 799, 719, 720, 721, 142, 803, 807, 722, 723, 811, + 827, 830, 834, 885, 889, 724, 725, 726, 727, 908, + 909, 142, 738, 910, 911, 912, 917, 918, 919, 728, + 729, 920, 921, 730, 922, 927, 928, 930, 931, 934, + 933, 937, 940, 732, 733, 734, 740, 741, 936, 939, + 947, 742, 948, 950, 951, 994, 952, 953, 954, 955, + 956, 957, 960, 961, 962, 969, 971, 979, 984, 983, + 988, 995, 986, 987, 990, 991, 992, 993, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1092, 1093, 1005, + 1006, 1096, 1008, 1007, 1081, 1082, 1083, 1084, 1085, 1086, + 1089, 1098, 225, 1088, 1090, 313, 1097, 1113, 332, 314, + 1095, 1018, 333, 1045, 265, 1042, 1061, 1114, 262, 287, + 1062, 327, 349, 1053, 345, 1117, 1133, 1051, 1067, 226, + 1118, 294, 1065, 334, 260, 289, 855, 1063, 1019, 335, + 865, 227, 1124, 1050, 264, 228, 1125, 1126, 1064, 1103, + 1020, 288, 861, 1104, 1021, 270, 866, 271, 263, 1134, + 1138, 328, 876, 1127, 346, 1105, 1139, 1052, 229, 266, + 230, 277, 1066, 1140, 1128, 290, 267, 1022, 1054, 1023, + 231, 1129, 1130, 1068, 1141, 1055, 295, 273, 232, 1024, + 1069, 233, 862, 296, 234, 235, 867, 1025, 236, 237, + 1026, 238, 877, 1027, 1028, 1106, 239, 1029, 1030, 240, + 1031, 278, 241, 242, 243, 1032, 244, 245, 1033, 246, + 247, 1034, 1035, 1036, 248, 1037, 1038, 258, 1039, 1040, + 1148, 1046, 1143, 1041, 1156, 1159, 1047, 1144, 1161, 1145, + 1164, 1152, 1186, 1166, 1187, 1188, 1192, 1196, 731, 745, + 592, 739, 747, 597, 989, 1009, 1011, 897, 1058, 1091, + 1080, 1160, 1157, 1087, 1079, 1163, 1165, 634, 1013, 608, + 1193, 1012, 1155, 1194, 1195, 272, 1198, 1199, 1057, 1015, + 1014, 627, 1115, 1017, 1016, 631, 1146, 1078, 1116, 1077, + 1094, 619, 894, 1158, 1076, 1099, 884, 650, 746, 653, + 1184, 1162, 1112, 1197, 0, 0, 0, 0, 1018, 0, + 1045, 0, 1042, 1061, 0, 0, 0, 1062, 0, 0, + 1053, 0, 0, 1103, 1051, 1067, 0, 1104, 0, 1065, + 0, 0, 0, 0, 1063, 1019, 0, 0, 0, 1105, + 1050, 0, 610, 0, 0, 1064, 0, 1020, 0, 0, + 0, 1021, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1052, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 1022, 1054, 1023, 0, 0, 1106, + 1068, 0, 1055, 0, 0, 0, 1024, 1069, 0, 0, + 0, 0, 0, 0, 1025, 0, 0, 1026, 0, 0, + 1027, 1028, 0, 0, 1029, 1030, 0, 1031, 0, 0, + 0, 0, 1032, 0, 0, 1033, 0, 0, 1034, 1035, + 1036, 0, 1037, 1038, 0, 1039, 1040, 0, 1046, 0, + 1041, 0, 0, 1047 }; - const short + const short int Dhcp4Parser::yycheck_[] = { 67, 68, 69, 70, 71, 70, 73, 74, 75, 76, - 73, 74, 64, 658, 69, 600, 71, 68, 69, 70, - 71, 606, 73, 74, 933, 76, 72, 933, 933, 69, - 124, 125, 74, 0, 69, 70, 71, 3, 74, 84, - 6, 69, 570, 7, 69, 69, 5, 190, 7, 18, - 9, 96, 97, 98, 12, 13, 7, 68, 69, 70, - 71, 7, 73, 74, 109, 76, 7, 112, 69, 69, - 69, 71, 3, 7, 124, 125, 69, 8, 71, 170, - 69, 3, 173, 174, 175, 176, 8, 3, 69, 7, - 34, 69, 8, 7, 69, 69, 190, 3, 69, 69, - 628, 69, 8, 15, 16, 3, 69, 19, 6, 69, - 22, 10, 69, 69, 69, 11, 69, 69, 14, 69, - 69, 3, 3, 70, 69, 6, 8, 23, 7, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 7, 3, - 7, 85, 6, 87, 88, 190, 3, 91, 92, 93, - 83, 8, 7, 97, 98, 97, 98, 161, 162, 163, - 164, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 6, 97, 98, 83, 84, 193, - 159, 3, 3, 135, 136, 137, 8, 8, 94, 3, - 3, 97, 98, 3, 8, 8, 102, 3, 8, 17, - 18, 107, 108, 3, 97, 98, 3, 113, 8, 8, - 1129, 8, 7, 1129, 1129, 20, 21, 123, 121, 122, - 126, 190, 191, 192, 193, 3, 3, 133, 134, 3, - 8, 8, 138, 4, 8, 141, 190, 3, 190, 145, - 26, 27, 28, 29, 30, 8, 139, 140, 4, 28, - 29, 30, 85, 86, 87, 88, 89, 90, 3, 165, - 166, 167, 168, 8, 97, 98, 921, 4, 190, 85, - 4, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 97, 98, 4, 190, 71, 72, 73, 74, 75, - 76, 77, 78, 4, 80, 81, 82, 190, 84, 97, - 98, 103, 104, 105, 106, 84, 28, 29, 30, 95, - 4, 97, 98, 99, 100, 101, 102, 3, 97, 98, - 3, 8, 8, 109, 4, 8, 112, 113, 3, 108, - 4, 393, 394, 8, 120, 114, 115, 116, 117, 118, - 119, 4, 121, 4, 142, 143, 144, 127, 128, 129, - 130, 131, 132, 169, 3, 171, 172, 190, 4, 8, - 4, 83, 84, 85, 114, 115, 116, 117, 3, 119, - 4, 4, 3, 8, 190, 97, 98, 8, 455, 165, - 166, 3, 3, 3, 461, 8, 8, 8, 110, 111, - 4, 4, 190, 4, 4, 4, 473, 190, 4, 476, - 461, 476, 4, 4, 190, 4, 4, 4, 473, 4, - 487, 190, 473, 4, 4, 476, 35, 36, 37, 38, - 497, 8, 487, 473, 497, 502, 487, 3, 473, 502, - 4, 476, 4, 8, 3, 473, 497, 4, 473, 473, - 461, 502, 487, 4, 4, 522, 4, 4, 4, 4, - 502, 4, 473, 4, 4, 476, 502, 4, 193, 4, - 193, 522, 473, 473, 473, 193, 487, 4, 190, 4, - 473, 4, 4, 4, 473, 191, 497, 487, 191, 191, - 4, 502, 473, 191, 487, 473, 191, 193, 473, 473, - 97, 98, 473, 473, 192, 473, 192, 192, 191, 191, - 473, 522, 191, 473, 4, 193, 473, 473, 473, 191, - 473, 473, 193, 473, 473, 34, 1111, 193, 473, 476, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 4, 146, + 73, 74, 64, 663, 69, 938, 71, 68, 69, 70, + 71, 938, 73, 74, 605, 76, 72, 938, 18, 69, + 611, 0, 74, 191, 69, 70, 71, 10, 74, 125, + 126, 69, 575, 7, 69, 69, 5, 84, 7, 3, + 9, 191, 6, 4, 86, 125, 126, 68, 69, 70, + 71, 7, 73, 74, 7, 76, 98, 99, 69, 69, + 69, 71, 162, 163, 164, 165, 69, 7, 71, 7, + 69, 7, 15, 16, 98, 99, 19, 3, 69, 22, + 3, 69, 8, 6, 69, 69, 7, 3, 69, 69, + 633, 69, 8, 3, 194, 191, 69, 6, 8, 69, + 3, 7, 69, 69, 69, 8, 69, 69, 7, 69, + 69, 3, 3, 70, 69, 6, 8, 69, 7, 143, + 144, 145, 3, 11, 3, 7, 14, 8, 170, 8, + 172, 173, 7, 3, 85, 23, 6, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 97, 98, 99, 191, + 8, 98, 99, 3, 3, 98, 99, 3, 8, 110, + 160, 8, 113, 3, 12, 13, 4, 191, 8, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 140, 141, 171, 84, 85, 174, 175, + 176, 177, 1135, 28, 29, 30, 8, 95, 1135, 4, + 98, 99, 3, 3, 1135, 103, 4, 8, 8, 4, + 108, 109, 191, 192, 193, 194, 114, 4, 3, 3, + 28, 29, 30, 8, 8, 4, 124, 98, 99, 127, + 191, 17, 18, 4, 191, 3, 134, 135, 191, 4, + 8, 139, 3, 3, 142, 4, 3, 8, 146, 4, + 85, 8, 115, 116, 117, 118, 926, 120, 104, 105, + 106, 107, 4, 98, 99, 136, 137, 138, 166, 167, + 168, 169, 20, 21, 109, 4, 84, 85, 86, 4, + 115, 116, 117, 118, 119, 120, 4, 122, 122, 123, + 98, 99, 4, 191, 4, 4, 86, 87, 88, 89, + 90, 91, 3, 111, 112, 3, 3, 8, 98, 99, + 8, 8, 26, 27, 28, 29, 30, 3, 3, 8, + 191, 4, 8, 8, 396, 397, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 35, + 36, 37, 38, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 4, 4, 4, 191, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 4, 81, 82, 83, + 3, 85, 459, 4, 3, 8, 3, 3, 465, 8, + 4, 8, 96, 191, 98, 99, 100, 101, 102, 103, + 477, 4, 3, 480, 465, 480, 110, 8, 4, 113, + 114, 191, 477, 4, 491, 4, 477, 121, 4, 480, + 8, 4, 4, 8, 501, 4, 491, 477, 501, 506, + 491, 3, 477, 506, 4, 480, 4, 4, 4, 477, + 501, 4, 477, 477, 465, 506, 491, 4, 4, 526, + 4, 4, 4, 194, 506, 194, 477, 194, 4, 480, + 506, 4, 166, 167, 4, 526, 477, 477, 477, 4, + 491, 4, 4, 194, 477, 192, 192, 4, 477, 192, + 501, 491, 192, 192, 4, 506, 477, 191, 491, 477, + 193, 192, 477, 477, 4, 193, 477, 477, 193, 477, + 192, 194, 192, 192, 477, 526, 34, 477, 4, 194, + 477, 477, 477, 194, 477, 477, 194, 477, 477, 4, + 194, 4, 477, 480, 194, 477, 1117, 34, 4, 4, + 4, 4, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 128, 129, 130, 131, 132, 133, 4, 4, 86, 4, + 88, 89, 4, 4, 92, 93, 94, 192, 4, 4, + 98, 99, 4, 4, 4, 4, 4, 4, 655, 86, + 657, 194, 4, 4, 194, 4, 4, 4, 4, 4, + 4, 4, 654, 192, 4, 4, 657, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 26, 27, 28, 29, + 30, 4, 4, 4, 691, 692, 192, 694, 4, 4, + 4, 194, 4, 194, 4, 194, 4, 4, 4, 194, + 691, 692, 693, 694, 192, 4, 657, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 192, 192, 4, + 4, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 98, 99, 191, 194, 85, 86, 4, 194, 4, + 691, 692, 693, 694, 4, 4, 4, 192, 98, 99, + 4, 101, 7, 103, 191, 7, 7, 7, 191, 191, + 110, 191, 7, 113, 7, 5, 191, 191, 191, 5, + 5, 121, 5, 5, 191, 5, 7, 5, 5, 5, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 4, 193, 193, 4, 4, 4, 165, 166, - 4, 4, 4, 4, 4, 4, 85, 4, 4, 4, - 4, 4, 4, 650, 191, 652, 4, 4, 4, 160, - 4, 193, 4, 190, 4, 4, 4, 649, 193, 4, - 4, 652, 4, 4, 4, 191, 4, 4, 4, 4, - 4, 26, 27, 28, 29, 30, 4, 4, 4, 686, - 687, 4, 689, 4, 4, 4, 4, 4, 191, 4, - 4, 4, 193, 4, 4, 686, 687, 688, 689, 193, - 193, 652, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 4, 4, 193, 4, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 191, 4, 191, 4, 84, - 85, 191, 4, 4, 193, 686, 687, 688, 689, 4, - 193, 190, 97, 98, 4, 100, 4, 102, 4, 191, - 4, 190, 7, 190, 109, 7, 7, 112, 7, 190, - 7, 7, 5, 190, 190, 120, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 5, - 190, 5, 5, 5, 190, 5, 7, 5, 5, 5, - 190, 190, 7, 7, 7, 7, 7, 5, 5, 190, - 190, 190, 5, 190, 190, 190, 7, 190, 5, 190, - 165, 166, 7, 7, 190, 190, 7, 7, 24, 7, - 7, 7, 190, 7, 7, 7, 4, 4, 4, 190, - 190, 190, 4, 4, 4, 190, 4, 190, 4, 190, - 4, 4, 4, 190, 190, 6, 3, 190, 6, 3, - 6, 190, 3, 6, 3, 3, 6, 190, 190, 190, - 190, 190, 6, 3, 6, 190, 190, 3, 190, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 3, 193, 6, 191, 4, 6, 8, 4, 4, 4, - 4, 191, 193, 191, 4, 4, 4, 4, 191, 193, - 4, 191, 4, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 4, 4, 193, 3, 191, 924, 191, 193, - 927, 191, 6, 930, 927, 4, 933, 930, 933, 924, - 933, 938, 8, 924, 941, 938, 927, 944, 933, 930, - 190, 8, 933, 938, 924, 190, 941, 938, 930, 924, - 941, 958, 938, 933, 930, 962, 924, 190, 933, 924, - 924, 190, 190, 938, 971, 933, 941, 958, 971, 933, - 977, 962, 977, 924, 4, 8, 927, 968, 3, 930, - 971, 190, 933, 924, 924, 924, 977, 938, 190, 8, - 941, 924, 933, 933, 933, 924, 4, 190, 938, 4, - 933, 941, 977, 924, 933, 938, 924, 958, 941, 924, - 924, 962, 933, 924, 924, 933, 924, 968, 933, 933, - 971, 924, 933, 933, 924, 933, 977, 924, 924, 924, - 933, 924, 924, 933, 924, 924, 933, 933, 933, 924, - 933, 933, 4, 933, 933, 190, 933, 190, 933, 190, - 4, 190, 5, 628, 191, 193, 7, 4, 4, 4, - 4, 4, 650, 455, 641, 652, 461, 897, 738, 918, - 923, 190, 190, 936, 946, 958, 944, 505, 953, 191, - 193, 926, 924, 1129, 935, 191, 929, 190, 497, 190, - 977, 932, 927, 473, 502, 943, 930, 941, 977, 979, - 1092, 709, 939, 487, 1134, 962, 689, 968, 522, 526, - 1164, 1144, 972, 651, 1184, -1, -1, -1, -1, -1, - -1, -1, 1129, -1, 1129, -1, 1129, 1134, -1, -1, - -1, 1134, -1, -1, 1129, -1, -1, 1144, 1129, 1134, - -1, 1144, -1, 1134, -1, -1, -1, -1, 1134, 1129, - -1, -1, -1, 1144, 1129, -1, -1, -1, -1, 1134, - 476, 1129, -1, -1, -1, 1129, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1129, -1, - -1, -1, -1, 1134, -1, -1, -1, -1, 1129, 1129, - 1129, -1, -1, 1144, 1134, -1, 1129, -1, -1, -1, - 1129, 1134, -1, -1, -1, -1, -1, -1, 1129, -1, - -1, 1129, -1, -1, 1129, 1129, -1, -1, 1129, 1129, - -1, 1129, -1, -1, -1, -1, 1129, -1, -1, 1129, - -1, -1, 1129, 1129, 1129, -1, 1129, 1129, -1, 1129, - 1129, -1, 1129, -1, 1129 + 157, 158, 159, 7, 7, 7, 7, 7, 191, 166, + 167, 191, 5, 5, 191, 191, 191, 5, 191, 191, + 191, 7, 191, 5, 7, 191, 166, 167, 191, 24, + 7, 191, 191, 191, 191, 7, 7, 191, 191, 7, + 7, 7, 7, 7, 7, 191, 191, 191, 191, 4, + 4, 191, 161, 4, 4, 4, 4, 4, 4, 191, + 191, 4, 4, 191, 4, 6, 3, 6, 3, 3, + 6, 3, 3, 191, 191, 191, 191, 191, 6, 6, + 6, 191, 3, 6, 3, 192, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 191, 3, 6, + 4, 194, 8, 6, 4, 4, 4, 4, 192, 194, + 192, 4, 4, 4, 4, 192, 192, 4, 4, 192, + 192, 4, 192, 194, 192, 192, 192, 192, 192, 192, + 192, 4, 929, 194, 192, 932, 192, 6, 935, 932, + 194, 938, 935, 938, 929, 938, 943, 3, 929, 946, + 943, 932, 949, 938, 935, 4, 8, 938, 943, 929, + 191, 946, 943, 935, 929, 946, 963, 943, 938, 935, + 967, 929, 191, 938, 929, 929, 191, 191, 943, 976, + 938, 946, 963, 976, 938, 982, 967, 982, 929, 8, + 4, 932, 973, 191, 935, 976, 8, 938, 929, 929, + 929, 982, 943, 3, 191, 946, 929, 938, 938, 938, + 929, 191, 191, 943, 8, 938, 946, 982, 929, 938, + 943, 929, 963, 946, 929, 929, 967, 938, 929, 929, + 938, 929, 973, 938, 938, 976, 929, 938, 938, 929, + 938, 982, 929, 929, 929, 938, 929, 929, 938, 929, + 929, 938, 938, 938, 929, 938, 938, 929, 938, 938, + 4, 938, 191, 938, 4, 4, 938, 191, 4, 191, + 5, 191, 4, 7, 4, 4, 4, 4, 633, 655, + 459, 646, 657, 465, 902, 923, 928, 743, 941, 963, + 951, 192, 194, 958, 949, 191, 191, 509, 931, 477, + 194, 929, 1135, 192, 192, 982, 191, 191, 940, 934, + 932, 501, 982, 937, 935, 506, 1098, 948, 984, 946, + 967, 491, 714, 1140, 944, 973, 694, 526, 656, 530, + 1170, 1150, 977, 1190, -1, -1, -1, -1, 1135, -1, + 1135, -1, 1135, 1140, -1, -1, -1, 1140, -1, -1, + 1135, -1, -1, 1150, 1135, 1140, -1, 1150, -1, 1140, + -1, -1, -1, -1, 1140, 1135, -1, -1, -1, 1150, + 1135, -1, 480, -1, -1, 1140, -1, 1135, -1, -1, + -1, 1135, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1135, -1, -1, -1, -1, 1140, + -1, -1, -1, -1, 1135, 1135, 1135, -1, -1, 1150, + 1140, -1, 1135, -1, -1, -1, 1135, 1140, -1, -1, + -1, -1, -1, -1, 1135, -1, -1, 1135, -1, -1, + 1135, 1135, -1, -1, 1135, 1135, -1, 1135, -1, -1, + -1, -1, 1135, -1, -1, 1135, -1, -1, 1135, 1135, + 1135, -1, 1135, 1135, -1, 1135, 1135, -1, 1135, -1, + 1135, -1, -1, 1135 }; - const short + const unsigned short int Dhcp4Parser::yystos_[] = { - 0, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 0, 5, - 7, 9, 190, 191, 192, 193, 209, 210, 211, 216, - 7, 225, 7, 229, 7, 272, 7, 377, 7, 457, - 7, 473, 7, 409, 7, 415, 7, 439, 7, 353, - 7, 538, 7, 569, 217, 212, 226, 230, 273, 378, - 458, 474, 410, 416, 440, 354, 539, 570, 209, 218, - 219, 190, 214, 215, 10, 227, 11, 14, 23, 25, + 0, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 0, 5, + 7, 9, 191, 192, 193, 194, 210, 211, 212, 217, + 7, 226, 7, 230, 7, 274, 7, 379, 7, 459, + 7, 475, 7, 411, 7, 417, 7, 441, 7, 355, + 7, 540, 7, 571, 218, 213, 227, 231, 275, 380, + 460, 476, 412, 418, 442, 356, 541, 572, 210, 219, + 220, 191, 215, 216, 10, 228, 11, 14, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 83, 84, 94, 97, 98, 102, 107, 108, 113, - 123, 126, 133, 134, 138, 141, 145, 165, 166, 167, - 168, 190, 224, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 246, 247, 248, - 249, 250, 251, 252, 255, 257, 259, 260, 262, 264, - 265, 266, 267, 268, 283, 285, 291, 293, 331, 340, - 347, 361, 371, 395, 399, 407, 433, 463, 465, 467, - 478, 480, 482, 505, 517, 518, 526, 536, 567, 576, - 15, 16, 19, 22, 224, 270, 271, 274, 276, 279, - 282, 463, 465, 80, 81, 82, 95, 99, 100, 101, - 109, 112, 120, 224, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 247, 248, 249, 250, 251, 252, - 255, 257, 259, 260, 262, 264, 379, 380, 381, 383, - 385, 387, 389, 391, 393, 395, 398, 433, 451, 463, - 465, 467, 478, 480, 482, 502, 96, 224, 391, 393, - 433, 459, 460, 461, 463, 465, 108, 114, 115, 116, - 117, 118, 119, 121, 224, 433, 463, 465, 475, 476, - 477, 478, 480, 482, 484, 488, 490, 492, 494, 496, - 498, 500, 407, 34, 85, 87, 88, 91, 92, 93, - 224, 311, 417, 418, 419, 420, 421, 422, 423, 425, - 427, 429, 430, 432, 463, 465, 86, 89, 90, 224, - 311, 421, 427, 441, 442, 443, 444, 445, 447, 448, - 449, 450, 463, 465, 124, 125, 224, 355, 356, 357, - 359, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 165, 166, 224, 463, 465, 540, - 541, 542, 543, 545, 546, 548, 549, 550, 553, 555, - 557, 558, 559, 561, 563, 565, 12, 13, 571, 572, - 573, 575, 6, 3, 4, 8, 3, 228, 8, 568, - 269, 286, 4, 4, 4, 479, 481, 483, 284, 292, - 294, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 245, 4, 4, 4, 4, 4, 253, 256, - 258, 4, 4, 372, 408, 434, 400, 464, 466, 396, - 332, 506, 468, 348, 362, 4, 341, 519, 527, 537, - 261, 263, 4, 577, 4, 3, 8, 275, 277, 280, - 4, 3, 8, 384, 386, 388, 452, 382, 390, 4, - 394, 392, 503, 3, 8, 462, 3, 8, 501, 489, - 491, 495, 493, 499, 497, 485, 8, 3, 8, 424, - 312, 4, 428, 426, 431, 4, 8, 3, 446, 4, - 4, 8, 3, 358, 360, 3, 8, 4, 556, 544, - 4, 547, 4, 4, 551, 554, 4, 4, 560, 562, - 564, 566, 3, 8, 574, 4, 3, 8, 209, 209, - 190, 4, 4, 4, 4, 193, 193, 193, 4, 4, - 4, 4, 4, 4, 191, 191, 191, 191, 191, 193, - 192, 192, 192, 191, 191, 4, 191, 191, 193, 193, - 193, 4, 4, 4, 193, 193, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 191, 4, - 4, 4, 4, 4, 4, 193, 4, 232, 4, 4, - 4, 193, 271, 4, 4, 4, 4, 4, 4, 191, - 4, 4, 4, 380, 4, 460, 4, 4, 4, 4, - 4, 4, 4, 4, 477, 4, 4, 191, 4, 4, - 4, 193, 419, 4, 193, 193, 443, 4, 4, 356, - 193, 4, 4, 191, 4, 191, 191, 4, 4, 193, - 193, 4, 4, 4, 4, 541, 4, 191, 572, 4, - 7, 7, 7, 7, 190, 190, 190, 7, 7, 5, - 190, 161, 162, 163, 164, 193, 254, 190, 190, 5, - 5, 5, 5, 211, 213, 190, 103, 104, 105, 106, - 397, 5, 5, 5, 5, 7, 7, 7, 7, 7, - 190, 190, 5, 5, 220, 17, 18, 278, 20, 21, - 281, 190, 190, 190, 5, 190, 190, 220, 190, 7, - 190, 220, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 213, 190, 190, 190, - 18, 159, 552, 160, 254, 190, 190, 190, 5, 209, - 231, 571, 270, 24, 287, 288, 289, 34, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 224, 299, 300, 301, - 304, 306, 308, 310, 311, 313, 314, 315, 316, 317, - 318, 319, 320, 322, 324, 326, 328, 329, 330, 299, - 7, 295, 296, 297, 7, 373, 374, 375, 7, 411, - 412, 413, 7, 435, 436, 437, 7, 401, 402, 403, - 114, 115, 116, 117, 119, 333, 334, 335, 336, 337, - 338, 339, 7, 507, 508, 7, 469, 470, 471, 7, - 349, 350, 351, 127, 128, 129, 130, 131, 132, 363, - 364, 365, 366, 367, 368, 369, 370, 135, 136, 137, - 224, 342, 343, 344, 345, 346, 463, 465, 139, 140, - 224, 463, 465, 520, 521, 522, 524, 142, 143, 144, - 190, 463, 465, 528, 529, 530, 531, 533, 534, 540, - 7, 578, 579, 221, 7, 453, 454, 455, 122, 484, - 486, 504, 295, 8, 8, 8, 290, 3, 8, 302, - 305, 307, 309, 4, 4, 4, 4, 4, 321, 323, - 325, 327, 4, 4, 4, 4, 4, 4, 3, 8, - 8, 298, 6, 3, 376, 6, 3, 414, 6, 3, - 438, 6, 3, 404, 6, 3, 3, 6, 509, 3, - 6, 472, 6, 3, 352, 6, 3, 4, 4, 4, - 4, 4, 4, 3, 8, 4, 4, 4, 3, 8, - 523, 525, 3, 8, 4, 532, 4, 535, 3, 8, - 8, 580, 3, 6, 190, 222, 223, 456, 6, 3, - 487, 8, 6, 4, 288, 4, 4, 4, 4, 191, - 193, 191, 193, 191, 4, 4, 4, 4, 191, 191, - 191, 191, 193, 191, 300, 299, 297, 379, 375, 417, - 413, 441, 437, 224, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 247, 248, 249, 250, 251, 252, - 255, 257, 259, 260, 262, 264, 311, 371, 389, 391, - 393, 395, 405, 406, 433, 463, 465, 478, 480, 482, - 502, 403, 334, 110, 111, 224, 311, 407, 433, 463, - 465, 478, 480, 482, 510, 511, 512, 513, 514, 516, - 508, 475, 471, 355, 351, 191, 191, 191, 191, 191, - 191, 364, 193, 191, 191, 343, 4, 4, 521, 193, - 4, 191, 4, 529, 169, 171, 172, 224, 311, 463, - 465, 581, 582, 583, 584, 586, 579, 6, 3, 459, - 455, 4, 190, 35, 36, 37, 38, 303, 190, 190, - 190, 190, 190, 190, 190, 8, 8, 8, 8, 3, - 8, 515, 4, 8, 3, 8, 8, 190, 190, 190, - 209, 587, 4, 585, 3, 8, 190, 8, 220, 406, - 4, 193, 512, 4, 191, 4, 582, 190, 5, 190, - 7, 588, 589, 590, 3, 6, 170, 173, 174, 175, - 176, 591, 592, 593, 595, 596, 597, 598, 589, 594, - 4, 4, 4, 599, 3, 8, 4, 193, 191, 191, - 4, 592, 190, 190 + 79, 80, 84, 85, 95, 98, 99, 103, 108, 109, + 114, 124, 127, 134, 135, 139, 142, 146, 166, 167, + 168, 169, 191, 225, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 247, 248, + 249, 250, 251, 252, 253, 256, 258, 260, 261, 262, + 264, 266, 267, 268, 269, 270, 285, 287, 293, 295, + 333, 342, 349, 363, 373, 397, 401, 409, 435, 465, + 467, 469, 480, 482, 484, 507, 519, 520, 528, 538, + 569, 578, 15, 16, 19, 22, 225, 272, 273, 276, + 278, 281, 284, 465, 467, 81, 82, 83, 96, 100, + 101, 102, 110, 113, 121, 225, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 248, 249, 250, 251, + 252, 253, 256, 258, 260, 261, 262, 264, 266, 381, + 382, 383, 385, 387, 389, 391, 393, 395, 397, 400, + 435, 453, 465, 467, 469, 480, 482, 484, 504, 97, + 225, 393, 395, 435, 461, 462, 463, 465, 467, 109, + 115, 116, 117, 118, 119, 120, 122, 225, 435, 465, + 467, 477, 478, 479, 480, 482, 484, 486, 490, 492, + 494, 496, 498, 500, 502, 409, 34, 86, 88, 89, + 92, 93, 94, 225, 313, 419, 420, 421, 422, 423, + 424, 425, 427, 429, 431, 432, 434, 465, 467, 87, + 90, 91, 225, 313, 423, 429, 443, 444, 445, 446, + 447, 449, 450, 451, 452, 465, 467, 125, 126, 225, + 357, 358, 359, 361, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 166, 167, 225, + 465, 467, 542, 543, 544, 545, 547, 548, 550, 551, + 552, 555, 557, 559, 560, 561, 563, 565, 567, 12, + 13, 573, 574, 575, 577, 6, 3, 4, 8, 3, + 229, 8, 570, 271, 288, 4, 4, 4, 481, 483, + 485, 286, 294, 296, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 246, 4, 4, 4, 4, + 4, 254, 257, 259, 4, 4, 4, 374, 410, 436, + 402, 466, 468, 398, 334, 508, 470, 350, 364, 4, + 343, 521, 529, 539, 263, 265, 4, 579, 4, 3, + 8, 277, 279, 282, 4, 3, 8, 386, 388, 390, + 454, 384, 392, 4, 396, 394, 505, 3, 8, 464, + 3, 8, 503, 491, 493, 497, 495, 501, 499, 487, + 8, 3, 8, 426, 314, 4, 430, 428, 433, 4, + 8, 3, 448, 4, 4, 8, 3, 360, 362, 3, + 8, 4, 558, 546, 4, 549, 4, 4, 553, 556, + 4, 4, 562, 564, 566, 568, 3, 8, 576, 4, + 3, 8, 210, 210, 191, 4, 4, 4, 4, 194, + 194, 194, 4, 4, 4, 4, 4, 4, 192, 192, + 192, 192, 192, 194, 193, 193, 193, 192, 192, 4, + 192, 192, 194, 194, 194, 4, 4, 4, 194, 194, + 194, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 192, 4, 4, 4, 4, 4, 4, + 194, 4, 233, 4, 4, 4, 194, 273, 4, 4, + 4, 4, 4, 4, 192, 4, 4, 4, 382, 4, + 462, 4, 4, 4, 4, 4, 4, 4, 4, 479, + 4, 4, 192, 4, 4, 4, 194, 421, 4, 194, + 194, 445, 4, 4, 358, 194, 4, 4, 192, 4, + 192, 192, 4, 4, 194, 194, 4, 4, 4, 4, + 543, 4, 192, 574, 4, 7, 7, 7, 7, 191, + 191, 191, 7, 7, 5, 191, 162, 163, 164, 165, + 194, 255, 191, 191, 5, 5, 5, 5, 212, 214, + 191, 104, 105, 106, 107, 399, 5, 5, 5, 5, + 7, 7, 7, 7, 7, 191, 191, 5, 5, 221, + 17, 18, 280, 20, 21, 283, 191, 191, 191, 5, + 191, 191, 221, 191, 7, 191, 221, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 214, 191, 191, 191, 18, 160, 554, 161, 255, + 191, 191, 191, 5, 210, 232, 573, 272, 24, 289, + 290, 291, 34, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 225, 301, 302, 303, 306, 308, 310, 312, 313, + 315, 316, 317, 318, 319, 320, 321, 322, 324, 326, + 328, 330, 331, 332, 301, 7, 297, 298, 299, 7, + 375, 376, 377, 7, 413, 414, 415, 7, 437, 438, + 439, 7, 403, 404, 405, 115, 116, 117, 118, 120, + 335, 336, 337, 338, 339, 340, 341, 7, 509, 510, + 7, 471, 472, 473, 7, 351, 352, 353, 128, 129, + 130, 131, 132, 133, 365, 366, 367, 368, 369, 370, + 371, 372, 136, 137, 138, 225, 344, 345, 346, 347, + 348, 465, 467, 140, 141, 225, 465, 467, 522, 523, + 524, 526, 143, 144, 145, 191, 465, 467, 530, 531, + 532, 533, 535, 536, 542, 7, 580, 581, 222, 7, + 455, 456, 457, 123, 486, 488, 506, 297, 8, 8, + 8, 292, 3, 8, 304, 307, 309, 311, 4, 4, + 4, 4, 4, 323, 325, 327, 329, 4, 4, 4, + 4, 4, 4, 3, 8, 8, 300, 6, 3, 378, + 6, 3, 416, 6, 3, 440, 6, 3, 406, 6, + 3, 3, 6, 511, 3, 6, 474, 6, 3, 354, + 6, 3, 4, 4, 4, 4, 4, 4, 3, 8, + 4, 4, 4, 3, 8, 525, 527, 3, 8, 4, + 534, 4, 537, 3, 8, 8, 582, 3, 6, 191, + 223, 224, 458, 6, 3, 489, 8, 6, 4, 290, + 4, 4, 4, 4, 192, 194, 192, 194, 192, 4, + 4, 4, 4, 192, 192, 192, 192, 194, 192, 302, + 301, 299, 381, 377, 419, 415, 443, 439, 225, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 248, + 249, 250, 251, 252, 253, 256, 258, 260, 261, 262, + 264, 266, 313, 373, 391, 393, 395, 397, 407, 408, + 435, 465, 467, 480, 482, 484, 504, 405, 336, 111, + 112, 225, 313, 409, 435, 465, 467, 480, 482, 484, + 512, 513, 514, 515, 516, 518, 510, 477, 473, 357, + 353, 192, 192, 192, 192, 192, 192, 366, 194, 192, + 192, 345, 4, 4, 523, 194, 4, 192, 4, 531, + 170, 172, 173, 225, 313, 465, 467, 583, 584, 585, + 586, 588, 581, 6, 3, 461, 457, 4, 191, 35, + 36, 37, 38, 305, 191, 191, 191, 191, 191, 191, + 191, 8, 8, 8, 8, 3, 8, 517, 4, 8, + 3, 8, 8, 191, 191, 191, 210, 589, 4, 587, + 3, 8, 191, 8, 221, 408, 4, 194, 514, 4, + 192, 4, 584, 191, 5, 191, 7, 590, 591, 592, + 3, 6, 171, 174, 175, 176, 177, 593, 594, 595, + 597, 598, 599, 600, 591, 596, 4, 4, 4, 601, + 3, 8, 4, 194, 192, 192, 4, 594, 191, 191 }; - const short + const unsigned short int Dhcp4Parser::yyr1_[] = { - 0, 194, 196, 195, 197, 195, 198, 195, 199, 195, - 200, 195, 201, 195, 202, 195, 203, 195, 204, 195, - 205, 195, 206, 195, 207, 195, 208, 195, 209, 209, - 209, 209, 209, 209, 209, 210, 212, 211, 213, 214, - 214, 215, 215, 217, 216, 218, 218, 219, 219, 221, - 220, 222, 222, 223, 223, 224, 226, 225, 228, 227, - 230, 229, 231, 231, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 0, 195, 197, 196, 198, 196, 199, 196, 200, 196, + 201, 196, 202, 196, 203, 196, 204, 196, 205, 196, + 206, 196, 207, 196, 208, 196, 209, 196, 210, 210, + 210, 210, 210, 210, 210, 211, 213, 212, 214, 215, + 215, 216, 216, 218, 217, 219, 219, 220, 220, 222, + 221, 223, 223, 224, 224, 225, 227, 226, 229, 228, + 231, 230, 232, 232, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 245, 244, 246, 247, 248, 249, 250, 251, 253, - 252, 254, 254, 254, 254, 254, 256, 255, 258, 257, - 259, 261, 260, 263, 262, 264, 265, 266, 267, 269, - 268, 270, 270, 271, 271, 271, 271, 271, 271, 271, - 273, 272, 275, 274, 277, 276, 278, 278, 280, 279, - 281, 281, 282, 284, 283, 286, 285, 287, 287, 288, - 290, 289, 292, 291, 294, 293, 295, 295, 296, 296, - 298, 297, 299, 299, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 302, 301, 303, 303, 303, - 303, 305, 304, 307, 306, 309, 308, 310, 312, 311, - 313, 314, 315, 316, 317, 318, 319, 321, 320, 323, - 322, 325, 324, 327, 326, 328, 329, 330, 332, 331, - 333, 333, 334, 334, 334, 334, 334, 335, 336, 337, - 338, 339, 341, 340, 342, 342, 343, 343, 343, 343, - 343, 343, 344, 345, 346, 348, 347, 349, 349, 350, - 350, 352, 351, 354, 353, 355, 355, 355, 356, 356, - 358, 357, 360, 359, 362, 361, 363, 363, 364, 364, - 364, 364, 364, 364, 365, 366, 367, 368, 369, 370, - 372, 371, 373, 373, 374, 374, 376, 375, 378, 377, - 379, 379, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 382, 381, 384, 383, 386, 385, 388, - 387, 390, 389, 392, 391, 394, 393, 396, 395, 397, - 397, 397, 397, 398, 400, 399, 401, 401, 402, 402, - 404, 403, 405, 405, 406, 406, 406, 406, 406, 406, - 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - 408, 407, 410, 409, 411, 411, 412, 412, 414, 413, - 416, 415, 417, 417, 418, 418, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 420, 421, 422, 424, - 423, 426, 425, 428, 427, 429, 431, 430, 432, 434, - 433, 435, 435, 436, 436, 438, 437, 440, 439, 441, - 441, 442, 442, 443, 443, 443, 443, 443, 443, 443, - 443, 443, 444, 446, 445, 447, 448, 449, 450, 452, - 451, 453, 453, 454, 454, 456, 455, 458, 457, 459, - 459, 460, 460, 460, 460, 460, 460, 460, 462, 461, - 464, 463, 466, 465, 468, 467, 469, 469, 470, 470, - 472, 471, 474, 473, 475, 475, 476, 476, 477, 477, - 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, - 477, 477, 477, 479, 478, 481, 480, 483, 482, 485, - 484, 487, 486, 489, 488, 491, 490, 493, 492, 495, - 494, 497, 496, 499, 498, 501, 500, 503, 502, 504, - 504, 506, 505, 507, 507, 509, 508, 510, 510, 511, - 511, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 513, 515, 514, 516, 517, 519, 518, 520, - 520, 521, 521, 521, 521, 521, 523, 522, 525, 524, - 527, 526, 528, 528, 529, 529, 529, 529, 529, 529, - 530, 532, 531, 533, 535, 534, 537, 536, 539, 538, - 540, 540, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 542, 544, 543, 545, 547, 546, 548, 549, 551, 550, - 552, 552, 554, 553, 556, 555, 557, 558, 560, 559, - 562, 561, 564, 563, 566, 565, 568, 567, 570, 569, - 571, 571, 572, 572, 574, 573, 575, 577, 576, 578, - 578, 580, 579, 581, 581, 582, 582, 582, 582, 582, - 582, 582, 583, 585, 584, 587, 586, 588, 588, 590, - 589, 591, 591, 592, 592, 592, 592, 592, 594, 593, - 595, 596, 597, 599, 598 + 243, 244, 246, 245, 247, 248, 249, 250, 251, 252, + 254, 253, 255, 255, 255, 255, 255, 257, 256, 259, + 258, 260, 261, 263, 262, 265, 264, 266, 267, 268, + 269, 271, 270, 272, 272, 273, 273, 273, 273, 273, + 273, 273, 275, 274, 277, 276, 279, 278, 280, 280, + 282, 281, 283, 283, 284, 286, 285, 288, 287, 289, + 289, 290, 292, 291, 294, 293, 296, 295, 297, 297, + 298, 298, 300, 299, 301, 301, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 304, 303, 305, + 305, 305, 305, 307, 306, 309, 308, 311, 310, 312, + 314, 313, 315, 316, 317, 318, 319, 320, 321, 323, + 322, 325, 324, 327, 326, 329, 328, 330, 331, 332, + 334, 333, 335, 335, 336, 336, 336, 336, 336, 337, + 338, 339, 340, 341, 343, 342, 344, 344, 345, 345, + 345, 345, 345, 345, 346, 347, 348, 350, 349, 351, + 351, 352, 352, 354, 353, 356, 355, 357, 357, 357, + 358, 358, 360, 359, 362, 361, 364, 363, 365, 365, + 366, 366, 366, 366, 366, 366, 367, 368, 369, 370, + 371, 372, 374, 373, 375, 375, 376, 376, 378, 377, + 380, 379, 381, 381, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 384, 383, 386, 385, + 388, 387, 390, 389, 392, 391, 394, 393, 396, 395, + 398, 397, 399, 399, 399, 399, 400, 402, 401, 403, + 403, 404, 404, 406, 405, 407, 407, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 410, 409, 412, 411, 413, 413, + 414, 414, 416, 415, 418, 417, 419, 419, 420, 420, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 422, 423, 424, 426, 425, 428, 427, 430, 429, 431, + 433, 432, 434, 436, 435, 437, 437, 438, 438, 440, + 439, 442, 441, 443, 443, 444, 444, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 446, 448, 447, 449, + 450, 451, 452, 454, 453, 455, 455, 456, 456, 458, + 457, 460, 459, 461, 461, 462, 462, 462, 462, 462, + 462, 462, 464, 463, 466, 465, 468, 467, 470, 469, + 471, 471, 472, 472, 474, 473, 476, 475, 477, 477, + 478, 478, 479, 479, 479, 479, 479, 479, 479, 479, + 479, 479, 479, 479, 479, 479, 479, 481, 480, 483, + 482, 485, 484, 487, 486, 489, 488, 491, 490, 493, + 492, 495, 494, 497, 496, 499, 498, 501, 500, 503, + 502, 505, 504, 506, 506, 508, 507, 509, 509, 511, + 510, 512, 512, 513, 513, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 515, 517, 516, 518, + 519, 521, 520, 522, 522, 523, 523, 523, 523, 523, + 525, 524, 527, 526, 529, 528, 530, 530, 531, 531, + 531, 531, 531, 531, 532, 534, 533, 535, 537, 536, + 539, 538, 541, 540, 542, 542, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 543, 543, 543, 544, 546, 545, 547, 549, 548, + 550, 551, 553, 552, 554, 554, 556, 555, 558, 557, + 559, 560, 562, 561, 564, 563, 566, 565, 568, 567, + 570, 569, 572, 571, 573, 573, 574, 574, 576, 575, + 577, 579, 578, 580, 580, 582, 581, 583, 583, 584, + 584, 584, 584, 584, 584, 584, 585, 587, 586, 589, + 588, 590, 590, 592, 591, 593, 593, 594, 594, 594, + 594, 594, 596, 595, 597, 598, 599, 601, 600 }; - const signed char + const unsigned char Dhcp4Parser::yyr2_[] = { 0, 2, 0, 3, 0, 3, 0, 3, 0, 3, @@ -5276,107 +5134,107 @@ namespace isc { namespace dhcp { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 0, 4, 3, 3, 3, 3, 3, 3, 0, - 4, 1, 1, 1, 1, 1, 0, 4, 0, 4, - 3, 0, 4, 0, 4, 3, 3, 3, 3, 0, - 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 0, 4, 0, 4, 0, 4, 1, 1, 0, 4, - 1, 1, 3, 0, 6, 0, 6, 1, 3, 1, - 0, 4, 0, 6, 0, 6, 0, 1, 1, 3, - 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 0, 4, 3, 3, 3, 3, 3, 3, + 0, 4, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 3, 3, 0, 4, 0, 4, 3, 3, 3, + 3, 0, 6, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 0, 4, 0, 4, 1, 1, + 0, 4, 1, 1, 3, 0, 6, 0, 6, 1, + 3, 1, 0, 4, 0, 6, 0, 6, 0, 1, + 1, 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 4, 1, 1, 1, - 1, 0, 4, 0, 4, 0, 4, 3, 0, 4, - 3, 3, 3, 3, 3, 3, 3, 0, 4, 0, - 4, 0, 4, 0, 4, 3, 3, 3, 0, 6, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 6, 1, 3, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 0, 6, 0, 1, 1, - 3, 0, 4, 0, 4, 1, 3, 1, 1, 1, - 0, 4, 0, 4, 0, 6, 1, 3, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 0, 6, 0, 1, 1, 3, 0, 4, 0, 4, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, + 1, 1, 1, 0, 4, 0, 4, 0, 4, 3, + 0, 4, 3, 3, 3, 3, 3, 3, 3, 0, + 4, 0, 4, 0, 4, 0, 4, 3, 3, 3, + 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 6, 1, 3, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 0, 6, 0, + 1, 1, 3, 0, 4, 0, 4, 1, 3, 1, + 1, 1, 0, 4, 0, 4, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 0, 6, 0, 1, 1, 3, 0, 4, + 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 4, 1, - 1, 1, 1, 3, 0, 6, 0, 1, 1, 3, - 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 1, 1, 1, 1, 3, 0, 6, 0, + 1, 1, 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 6, 0, 4, 0, 1, 1, 3, 0, 4, - 0, 4, 0, 1, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 0, - 4, 0, 4, 0, 4, 1, 0, 4, 3, 0, - 6, 0, 1, 1, 3, 0, 4, 0, 4, 0, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 1, 1, 3, 3, 0, - 6, 0, 1, 1, 3, 0, 4, 0, 4, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 0, 4, 0, 4, 0, 6, 0, 1, 1, 3, - 0, 4, 0, 4, 0, 1, 1, 3, 1, 1, + 1, 1, 1, 1, 0, 6, 0, 4, 0, 1, + 1, 3, 0, 4, 0, 4, 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 6, 1, - 1, 0, 6, 1, 3, 0, 4, 0, 1, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 3, 3, 0, 6, 1, - 3, 1, 1, 1, 1, 1, 0, 4, 0, 4, - 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, - 3, 0, 4, 3, 0, 4, 0, 6, 0, 4, + 1, 3, 1, 0, 4, 0, 4, 0, 4, 1, + 0, 4, 3, 0, 6, 0, 1, 1, 3, 0, + 4, 0, 4, 0, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, + 1, 3, 3, 0, 6, 0, 1, 1, 3, 0, + 4, 0, 4, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 0, 4, 0, 4, 0, 6, + 0, 1, 1, 3, 0, 4, 0, 4, 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 6, 1, 1, 0, 6, 1, 3, 0, + 4, 0, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 3, + 3, 0, 6, 1, 3, 1, 1, 1, 1, 1, + 0, 4, 0, 4, 0, 6, 1, 3, 1, 1, + 1, 1, 1, 1, 3, 0, 4, 3, 0, 4, + 0, 6, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 0, 4, 3, 0, 4, 3, 3, 0, 4, - 1, 1, 0, 4, 0, 4, 3, 3, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 6, 0, 4, - 1, 3, 1, 1, 0, 6, 3, 0, 6, 1, - 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 4, 0, 6, 1, 3, 0, - 4, 1, 3, 1, 1, 1, 1, 1, 0, 4, - 3, 3, 3, 0, 4 + 1, 1, 1, 1, 3, 0, 4, 3, 0, 4, + 3, 3, 0, 4, 1, 1, 0, 4, 0, 4, + 3, 3, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 6, 0, 4, 1, 3, 1, 1, 0, 6, + 3, 0, 6, 1, 3, 0, 4, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 3, 0, 4, 0, + 6, 1, 3, 0, 4, 1, 3, 1, 1, 1, + 1, 1, 0, 4, 3, 3, 3, 0, 4 }; -#if PARSER4_DEBUG || 1 + // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - // First, the terminals, then, starting at \a YYNTOKENS, nonterminals. + // First, the terminals, then, starting at \a yyntokens_, nonterminals. const char* const Dhcp4Parser::yytname_[] = { - "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"", - "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp4\"", - "\"config-control\"", "\"config-databases\"", - "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"", - "\"dhcp-socket-type\"", "\"raw\"", "\"udp\"", "\"outbound-interface\"", - "\"same-as-inbound\"", "\"use-routing\"", "\"re-detect\"", - "\"sanity-checks\"", "\"lease-checks\"", "\"echo-client-id\"", - "\"match-client-id\"", "\"authoritative\"", "\"next-server\"", - "\"server-hostname\"", "\"boot-file-name\"", "\"lease-database\"", - "\"hosts-database\"", "\"hosts-databases\"", "\"type\"", "\"memfile\"", - "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", - "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"", - "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"", - "\"keyspace\"", "\"consistency\"", "\"serial-consistency\"", - "\"max-reconnect-tries\"", "\"reconnect-wait-time\"", - "\"request-timeout\"", "\"tcp-keepalive\"", "\"tcp-nodelay\"", - "\"max-row-errors\"", "\"valid-lifetime\"", "\"min-valid-lifetime\"", - "\"max-valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"", - "\"calculate-tee-times\"", "\"t1-percent\"", "\"t2-percent\"", - "\"cache-threshold\"", "\"cache-max-age\"", + "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"", + "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp4\"", "\"config-control\"", + "\"config-databases\"", "\"config-fetch-wait-time\"", + "\"interfaces-config\"", "\"interfaces\"", "\"dhcp-socket-type\"", + "\"raw\"", "\"udp\"", "\"outbound-interface\"", "\"same-as-inbound\"", + "\"use-routing\"", "\"re-detect\"", "\"sanity-checks\"", + "\"lease-checks\"", "\"echo-client-id\"", "\"match-client-id\"", + "\"authoritative\"", "\"next-server\"", "\"server-hostname\"", + "\"boot-file-name\"", "\"lease-database\"", "\"hosts-database\"", + "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"", + "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"", + "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"", + "\"connect-timeout\"", "\"contact-points\"", "\"keyspace\"", + "\"consistency\"", "\"serial-consistency\"", "\"max-reconnect-tries\"", + "\"reconnect-wait-time\"", "\"request-timeout\"", "\"tcp-keepalive\"", + "\"tcp-nodelay\"", "\"max-row-errors\"", "\"valid-lifetime\"", + "\"min-valid-lifetime\"", "\"max-valid-lifetime\"", "\"renew-timer\"", + "\"rebind-timer\"", "\"calculate-tee-times\"", "\"t1-percent\"", + "\"t2-percent\"", "\"cache-threshold\"", "\"cache-max-age\"", "\"decline-probation-period\"", "\"server-tag\"", "\"statistic-default-sample-count\"", "\"statistic-default-sample-age\"", "\"ddns-send-updates\"", "\"ddns-override-no-update\"", "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"", "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"", - "\"ddns-update-on-renew\"", "\"store-extended-info\"", "\"subnet4\"", - "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"", - "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", - "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"", + "\"ddns-update-on-renew\"", "\"ddns-use-conflict-resolution\"", + "\"store-extended-info\"", "\"subnet4\"", "\"4o6-interface\"", + "\"4o6-interface-id\"", "\"4o6-subnet\"", "\"option-def\"", + "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"", + "\"csv-format\"", "\"always-send\"", "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"", "\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"", "\"id\"", "\"reservation-mode\"", "\"disabled\"", @@ -5424,22 +5282,22 @@ namespace isc { namespace dhcp { "ddns_override_client_update", "ddns_replace_client_name", "$@21", "ddns_replace_client_name_value", "ddns_generated_prefix", "$@22", "ddns_qualifying_suffix", "$@23", "ddns_update_on_renew", - "hostname_char_set", "$@24", "hostname_char_replacement", "$@25", - "store_extended_info", "statistic_default_sample_count", - "statistic_default_sample_age", "ip_reservations_unique", - "interfaces_config", "$@26", "interfaces_config_params", - "interfaces_config_param", "sub_interfaces4", "$@27", "interfaces_list", - "$@28", "dhcp_socket_type", "$@29", "socket_type", "outbound_interface", - "$@30", "outbound_interface_value", "re_detect", "lease_database", - "$@31", "sanity_checks", "$@32", "sanity_checks_params", - "sanity_checks_param", "lease_checks", "$@33", "hosts_database", "$@34", - "hosts_databases", "$@35", "database_list", "not_empty_database_list", - "database", "$@36", "database_map_params", "database_map_param", - "database_type", "$@37", "db_type", "user", "$@38", "password", "$@39", - "host", "$@40", "port", "name", "$@41", "persist", "lfc_interval", - "readonly", "connect_timeout", "request_timeout", "tcp_keepalive", - "tcp_nodelay", "contact_points", "$@42", "keyspace", "$@43", - "consistency", "$@44", "serial_consistency", "$@45", + "ddns_use_conflict_resolution", "hostname_char_set", "$@24", + "hostname_char_replacement", "$@25", "store_extended_info", + "statistic_default_sample_count", "statistic_default_sample_age", + "ip_reservations_unique", "interfaces_config", "$@26", + "interfaces_config_params", "interfaces_config_param", "sub_interfaces4", + "$@27", "interfaces_list", "$@28", "dhcp_socket_type", "$@29", + "socket_type", "outbound_interface", "$@30", "outbound_interface_value", + "re_detect", "lease_database", "$@31", "sanity_checks", "$@32", + "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@33", + "hosts_database", "$@34", "hosts_databases", "$@35", "database_list", + "not_empty_database_list", "database", "$@36", "database_map_params", + "database_map_param", "database_type", "$@37", "db_type", "user", "$@38", + "password", "$@39", "host", "$@40", "port", "name", "$@41", "persist", + "lfc_interval", "readonly", "connect_timeout", "request_timeout", + "tcp_keepalive", "tcp_nodelay", "contact_points", "$@42", "keyspace", + "$@43", "consistency", "$@44", "serial_consistency", "$@45", "max_reconnect_tries", "reconnect_wait_time", "max_row_errors", "host_reservation_identifiers", "$@46", "host_reservation_identifiers_list", "host_reservation_identifier", @@ -5510,110 +5368,110 @@ namespace isc { namespace dhcp { "output_params_list", "output_params", "output", "$@129", "flush", "maxsize", "maxver", "pattern", "$@130", YY_NULLPTR }; -#endif - #if PARSER4_DEBUG - const short + const unsigned short int Dhcp4Parser::yyrline_[] = { - 0, 281, 281, 281, 282, 282, 283, 283, 284, 284, - 285, 285, 286, 286, 287, 287, 288, 288, 289, 289, - 290, 290, 291, 291, 292, 292, 293, 293, 301, 302, - 303, 304, 305, 306, 307, 310, 315, 315, 326, 329, - 330, 333, 338, 346, 346, 353, 354, 357, 361, 368, - 368, 375, 376, 379, 383, 394, 403, 403, 418, 418, - 435, 435, 444, 445, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, - 568, 574, 574, 583, 589, 595, 601, 607, 613, 619, - 619, 628, 631, 634, 637, 640, 646, 646, 655, 655, - 664, 670, 670, 679, 679, 688, 694, 700, 706, 712, - 712, 724, 725, 728, 729, 730, 731, 732, 733, 734, - 737, 737, 746, 746, 757, 757, 765, 766, 769, 769, - 777, 779, 783, 790, 790, 803, 803, 814, 815, 817, - 819, 819, 838, 838, 851, 851, 862, 863, 866, 867, - 870, 870, 880, 881, 884, 885, 886, 887, 888, 889, - 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, - 900, 901, 902, 903, 904, 907, 907, 915, 916, 917, - 918, 921, 921, 930, 930, 939, 939, 948, 954, 954, - 963, 969, 975, 981, 987, 993, 999, 1005, 1005, 1014, - 1014, 1023, 1023, 1032, 1032, 1041, 1047, 1053, 1060, 1060, - 1071, 1072, 1075, 1076, 1077, 1078, 1079, 1082, 1087, 1092, - 1097, 1102, 1109, 1109, 1122, 1123, 1126, 1127, 1128, 1129, - 1130, 1131, 1134, 1140, 1146, 1152, 1152, 1163, 1164, 1167, - 1168, 1171, 1171, 1181, 1181, 1191, 1192, 1193, 1196, 1197, - 1200, 1200, 1209, 1209, 1218, 1218, 1230, 1231, 1234, 1235, - 1236, 1237, 1238, 1239, 1242, 1248, 1254, 1260, 1266, 1272, - 1281, 1281, 1295, 1296, 1299, 1300, 1307, 1307, 1333, 1333, - 1344, 1345, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, - 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, - 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, - 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, - 1387, 1388, 1389, 1392, 1392, 1401, 1401, 1410, 1410, 1419, - 1419, 1428, 1428, 1437, 1437, 1446, 1446, 1457, 1457, 1465, - 1466, 1467, 1468, 1471, 1479, 1479, 1491, 1492, 1496, 1497, - 1500, 1500, 1508, 1509, 1512, 1513, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, - 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, - 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, - 1554, 1554, 1568, 1568, 1577, 1578, 1581, 1582, 1587, 1587, - 1602, 1602, 1616, 1617, 1620, 1621, 1624, 1625, 1626, 1627, - 1628, 1629, 1630, 1631, 1632, 1633, 1636, 1638, 1644, 1646, - 1646, 1655, 1655, 1664, 1664, 1673, 1675, 1675, 1684, 1694, - 1694, 1707, 1708, 1713, 1714, 1719, 1719, 1731, 1731, 1743, - 1744, 1749, 1750, 1755, 1756, 1757, 1758, 1759, 1760, 1761, - 1762, 1763, 1766, 1768, 1768, 1777, 1779, 1781, 1787, 1796, - 1796, 1809, 1810, 1813, 1814, 1817, 1817, 1827, 1827, 1837, - 1838, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1850, 1850, - 1859, 1859, 1884, 1884, 1914, 1914, 1925, 1926, 1929, 1930, - 1933, 1933, 1942, 1942, 1951, 1952, 1955, 1956, 1960, 1961, - 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, - 1972, 1973, 1974, 1977, 1977, 1986, 1986, 1995, 1995, 2004, - 2004, 2013, 2013, 2024, 2024, 2033, 2033, 2042, 2042, 2051, - 2051, 2060, 2060, 2069, 2069, 2078, 2078, 2092, 2092, 2103, - 2104, 2110, 2110, 2121, 2122, 2125, 2125, 2135, 2136, 2139, - 2140, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, - 2152, 2153, 2156, 2158, 2158, 2167, 2175, 2183, 2183, 2194, - 2195, 2198, 2199, 2200, 2201, 2202, 2205, 2205, 2214, 2214, - 2226, 2226, 2239, 2240, 2243, 2244, 2245, 2246, 2247, 2248, - 2251, 2257, 2257, 2266, 2272, 2272, 2282, 2282, 2295, 2295, - 2305, 2306, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, - 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, - 2329, 2335, 2335, 2344, 2350, 2350, 2359, 2365, 2371, 2371, - 2380, 2381, 2384, 2384, 2394, 2394, 2404, 2411, 2418, 2418, - 2427, 2427, 2437, 2437, 2447, 2447, 2459, 2459, 2471, 2471, - 2481, 2482, 2486, 2487, 2490, 2490, 2501, 2509, 2509, 2522, - 2523, 2527, 2527, 2535, 2536, 2539, 2540, 2541, 2542, 2543, - 2544, 2545, 2548, 2554, 2554, 2563, 2563, 2574, 2575, 2578, - 2578, 2586, 2587, 2590, 2591, 2592, 2593, 2594, 2597, 2597, - 2606, 2612, 2618, 2624, 2624 + 0, 282, 282, 282, 283, 283, 284, 284, 285, 285, + 286, 286, 287, 287, 288, 288, 289, 289, 290, 290, + 291, 291, 292, 292, 293, 293, 294, 294, 302, 303, + 304, 305, 306, 307, 308, 311, 316, 316, 327, 330, + 331, 334, 339, 347, 347, 354, 355, 358, 362, 369, + 369, 376, 377, 380, 384, 395, 404, 404, 419, 419, + 436, 436, 445, 446, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 510, 516, 522, 528, 534, 540, 546, 552, 558, + 564, 570, 576, 576, 585, 591, 597, 603, 609, 615, + 621, 621, 630, 633, 636, 639, 642, 648, 648, 657, + 657, 666, 672, 678, 678, 687, 687, 696, 702, 708, + 714, 720, 720, 732, 733, 736, 737, 738, 739, 740, + 741, 742, 745, 745, 754, 754, 765, 765, 773, 774, + 777, 777, 785, 787, 791, 798, 798, 811, 811, 822, + 823, 825, 827, 827, 846, 846, 859, 859, 870, 871, + 874, 875, 878, 878, 888, 889, 892, 893, 894, 895, + 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 915, 915, 923, + 924, 925, 926, 929, 929, 938, 938, 947, 947, 956, + 962, 962, 971, 977, 983, 989, 995, 1001, 1007, 1013, + 1013, 1022, 1022, 1031, 1031, 1040, 1040, 1049, 1055, 1061, + 1068, 1068, 1079, 1080, 1083, 1084, 1085, 1086, 1087, 1090, + 1095, 1100, 1105, 1110, 1117, 1117, 1130, 1131, 1134, 1135, + 1136, 1137, 1138, 1139, 1142, 1148, 1154, 1160, 1160, 1171, + 1172, 1175, 1176, 1179, 1179, 1189, 1189, 1199, 1200, 1201, + 1204, 1205, 1208, 1208, 1217, 1217, 1226, 1226, 1238, 1239, + 1242, 1243, 1244, 1245, 1246, 1247, 1250, 1256, 1262, 1268, + 1274, 1280, 1289, 1289, 1303, 1304, 1307, 1308, 1315, 1315, + 1341, 1341, 1352, 1353, 1357, 1358, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, + 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, + 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 1398, 1401, 1401, 1410, 1410, + 1419, 1419, 1428, 1428, 1437, 1437, 1446, 1446, 1455, 1455, + 1466, 1466, 1474, 1475, 1476, 1477, 1480, 1488, 1488, 1500, + 1501, 1505, 1506, 1509, 1509, 1517, 1518, 1521, 1522, 1523, + 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, + 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, + 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, + 1554, 1555, 1556, 1557, 1564, 1564, 1578, 1578, 1587, 1588, + 1591, 1592, 1597, 1597, 1612, 1612, 1626, 1627, 1630, 1631, + 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, + 1646, 1648, 1654, 1656, 1656, 1665, 1665, 1674, 1674, 1683, + 1685, 1685, 1694, 1704, 1704, 1717, 1718, 1723, 1724, 1729, + 1729, 1741, 1741, 1753, 1754, 1759, 1760, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1776, 1778, 1778, 1787, + 1789, 1791, 1797, 1806, 1806, 1819, 1820, 1823, 1824, 1827, + 1827, 1837, 1837, 1847, 1848, 1851, 1852, 1853, 1854, 1855, + 1856, 1857, 1860, 1860, 1869, 1869, 1894, 1894, 1924, 1924, + 1935, 1936, 1939, 1940, 1943, 1943, 1952, 1952, 1961, 1962, + 1965, 1966, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, + 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1987, 1987, 1996, + 1996, 2005, 2005, 2014, 2014, 2023, 2023, 2034, 2034, 2043, + 2043, 2052, 2052, 2061, 2061, 2070, 2070, 2079, 2079, 2088, + 2088, 2102, 2102, 2113, 2114, 2120, 2120, 2131, 2132, 2135, + 2135, 2145, 2146, 2149, 2150, 2153, 2154, 2155, 2156, 2157, + 2158, 2159, 2160, 2161, 2162, 2163, 2166, 2168, 2168, 2177, + 2185, 2193, 2193, 2204, 2205, 2208, 2209, 2210, 2211, 2212, + 2215, 2215, 2224, 2224, 2236, 2236, 2249, 2250, 2253, 2254, + 2255, 2256, 2257, 2258, 2261, 2267, 2267, 2276, 2282, 2282, + 2292, 2292, 2305, 2305, 2315, 2316, 2319, 2320, 2321, 2322, + 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, + 2333, 2334, 2335, 2336, 2339, 2345, 2345, 2354, 2360, 2360, + 2369, 2375, 2381, 2381, 2390, 2391, 2394, 2394, 2404, 2404, + 2414, 2421, 2428, 2428, 2437, 2437, 2447, 2447, 2457, 2457, + 2469, 2469, 2481, 2481, 2491, 2492, 2496, 2497, 2500, 2500, + 2511, 2519, 2519, 2532, 2533, 2537, 2537, 2545, 2546, 2549, + 2550, 2551, 2552, 2553, 2554, 2555, 2558, 2564, 2564, 2573, + 2573, 2584, 2585, 2588, 2588, 2596, 2597, 2600, 2601, 2602, + 2603, 2604, 2607, 2607, 2616, 2622, 2628, 2634, 2634 }; + // Print the state stack on the debug stream. void - Dhcp4Parser::yy_stack_print_ () const + Dhcp4Parser::yystack_print_ () { *yycdebug_ << "Stack now"; for (stack_type::const_iterator i = yystack_.begin (), i_end = yystack_.end (); i != i_end; ++i) - *yycdebug_ << ' ' << int (i->state); - *yycdebug_ << '\n'; + *yycdebug_ << ' ' << i->state; + *yycdebug_ << std::endl; } + // Report on the debug stream that the rule \a yyrule is going to be reduced. void - Dhcp4Parser::yy_reduce_print_ (int yyrule) const + Dhcp4Parser::yy_reduce_print_ (int yyrule) { - int yylno = yyrline_[yyrule]; + unsigned int yylno = yyrline_[yyrule]; int yynrhs = yyr2_[yyrule]; // Print the symbols being reduced, and their result. *yycdebug_ << "Reducing stack by rule " << yyrule - 1 - << " (line " << yylno << "):\n"; + << " (line " << yylno << "):" << std::endl; // The symbols being reduced. for (int yyi = 0; yyi < yynrhs; yyi++) YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", @@ -5622,11 +5480,10 @@ namespace isc { namespace dhcp { #endif // PARSER4_DEBUG -#line 14 "dhcp4_parser.yy" +#line 14 "dhcp4_parser.yy" // lalr1.cc:1167 } } // isc::dhcp -#line 5628 "dhcp4_parser.cc" - -#line 2633 "dhcp4_parser.yy" +#line 5486 "dhcp4_parser.cc" // lalr1.cc:1167 +#line 2643 "dhcp4_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 71c40c44e2..07083a6ef0 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.0.4. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. +// Copyright (C) 2002-2015 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,7 +30,6 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. - /** ** \file dhcp4_parser.h ** Define the isc::dhcp::parser class. @@ -38,14 +37,10 @@ // C++ LALR(1) parser skeleton written by Akim Demaille. -// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, -// especially those whose name start with YY_ or yy_. They are -// private implementation details that can be changed or removed. - #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED -// "%code requires" blocks. -#line 17 "dhcp4_parser.yy" +// // "%code requires" blocks. +#line 17 "dhcp4_parser.yy" // lalr1.cc:377 #include #include @@ -57,7 +52,7 @@ using namespace isc::dhcp; using namespace isc::data; using namespace std; -#line 61 "dhcp4_parser.h" +#line 56 "dhcp4_parser.h" // lalr1.cc:377 # include # include // std::abort @@ -65,64 +60,39 @@ using namespace std; # include # include # include - -#if defined __cplusplus -# define YY_CPLUSPLUS __cplusplus -#else -# define YY_CPLUSPLUS 199711L -#endif - -// Support move semantics when possible. -#if 201103L <= YY_CPLUSPLUS -# define YY_MOVE std::move -# define YY_MOVE_OR_COPY move -# define YY_MOVE_REF(Type) Type&& -# define YY_RVREF(Type) Type&& -# define YY_COPY(Type) Type -#else -# define YY_MOVE -# define YY_MOVE_OR_COPY copy -# define YY_MOVE_REF(Type) Type& -# define YY_RVREF(Type) const Type& -# define YY_COPY(Type) const Type& -#endif - -// Support noexcept when possible. -#if 201103L <= YY_CPLUSPLUS -# define YY_NOEXCEPT noexcept -# define YY_NOTHROW -#else -# define YY_NOEXCEPT -# define YY_NOTHROW throw () -#endif - -// Support constexpr when possible. -#if 201703 <= YY_CPLUSPLUS -# define YY_CONSTEXPR constexpr -#else -# define YY_CONSTEXPR -#endif +# include "stack.hh" # include "location.hh" #include -#ifndef YY_ASSERT +#ifndef YYASSERT # include -# define YY_ASSERT assert +# define YYASSERT assert #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) # else -# define YY_ATTRIBUTE_UNUSED +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -133,13 +103,13 @@ using namespace std; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -152,39 +122,6 @@ using namespace std; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - /* Debug traces. */ #ifndef PARSER4_DEBUG # if defined YYDEBUG @@ -198,182 +135,120 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER4_DEBUG */ -#line 14 "dhcp4_parser.yy" +#line 14 "dhcp4_parser.yy" // lalr1.cc:377 namespace isc { namespace dhcp { -#line 204 "dhcp4_parser.h" - +#line 141 "dhcp4_parser.h" // lalr1.cc:377 - /// A Bison parser. - class Dhcp4Parser - { - public: -#ifndef PARSER4_STYPE - /// A buffer to store and retrieve objects. + /// A char[S] buffer to store and retrieve objects. /// /// Sort of a variant, but does not keep track of the nature /// of the stored data, since that knowledge is available - /// via the current parser state. - class semantic_type + /// via the current state. + template + struct variant { - public: /// Type of *this. - typedef semantic_type self_type; + typedef variant self_type; /// Empty construction. - semantic_type () YY_NOEXCEPT - : yybuffer_ () - , yytypeid_ (YY_NULLPTR) + variant () + : yytypeid_ (YY_NULLPTR) {} /// Construct and fill. template - semantic_type (YY_RVREF (T) t) + variant (const T& t) : yytypeid_ (&typeid (T)) { - YY_ASSERT (sizeof (T) <= size); - new (yyas_ ()) T (YY_MOVE (t)); + YYASSERT (sizeof (T) <= S); + new (yyas_ ()) T (t); } -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - semantic_type (const self_type&) = delete; - /// Non copyable. - self_type& operator= (const self_type&) = delete; -#endif - /// Destruction, allowed only if empty. - ~semantic_type () YY_NOEXCEPT + ~variant () { - YY_ASSERT (!yytypeid_); + YYASSERT (!yytypeid_); } -# if 201103L <= YY_CPLUSPLUS - /// Instantiate a \a T in here from \a t. - template - T& - emplace (U&&... u) - { - YY_ASSERT (!yytypeid_); - YY_ASSERT (sizeof (T) <= size); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (std::forward (u)...); - } -# else /// Instantiate an empty \a T in here. template T& - emplace () + build () { - YY_ASSERT (!yytypeid_); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (); + return *new (yyas_ ()) T; } /// Instantiate a \a T in here from \a t. template T& - emplace (const T& t) + build (const T& t) { - YY_ASSERT (!yytypeid_); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (t); } -# endif - - /// Instantiate an empty \a T in here. - /// Obsolete, use emplace. - template - T& - build () - { - return emplace (); - } - - /// Instantiate a \a T in here from \a t. - /// Obsolete, use emplace. - template - T& - build (const T& t) - { - return emplace (t); - } /// Accessor to a built \a T. template T& - as () YY_NOEXCEPT + as () { - YY_ASSERT (yytypeid_); - YY_ASSERT (*yytypeid_ == typeid (T)); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (*yytypeid_ == typeid (T)); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } /// Const accessor to a built \a T (for %printer). template const T& - as () const YY_NOEXCEPT + as () const { - YY_ASSERT (yytypeid_); - YY_ASSERT (*yytypeid_ == typeid (T)); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (*yytypeid_ == typeid (T)); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } - /// Swap the content with \a that, of same type. + /// Swap the content with \a other, of same type. /// /// Both variants must be built beforehand, because swapping the actual /// data requires reading it (with as()), and this is not possible on /// unconstructed variants: it would require some dynamic testing, which - /// should not be the variant's responsibility. + /// should not be the variant's responsability. /// Swapping between built and (possibly) non-built is done with - /// self_type::move (). + /// variant::move (). template void - swap (self_type& that) YY_NOEXCEPT + swap (self_type& other) { - YY_ASSERT (yytypeid_); - YY_ASSERT (*yytypeid_ == *that.yytypeid_); - std::swap (as (), that.as ()); + YYASSERT (yytypeid_); + YYASSERT (*yytypeid_ == *other.yytypeid_); + std::swap (as (), other.as ()); } - /// Move the content of \a that to this. + /// Move the content of \a other to this. /// - /// Destroys \a that. - template - void - move (self_type& that) - { -# if 201103L <= YY_CPLUSPLUS - emplace (std::move (that.as ())); -# else - emplace (); - swap (that); -# endif - that.destroy (); - } - -# if 201103L <= YY_CPLUSPLUS - /// Move the content of \a that to this. + /// Destroys \a other. template void - move (self_type&& that) + move (self_type& other) { - emplace (std::move (that.as ())); - that.destroy (); + build (); + swap (other); + other.destroy (); } -#endif - /// Copy the content of \a that to this. + /// Copy the content of \a other to this. template void - copy (const self_type& that) + copy (const self_type& other) { - emplace (that.as ()); + build (other.as ()); } /// Destroy the stored \a T. @@ -386,17 +261,14 @@ namespace isc { namespace dhcp { } private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - semantic_type (const self_type&); - /// Non copyable. - self_type& operator= (const self_type&); -#endif + /// Prohibit blind copies. + self_type& operator=(const self_type&); + variant (const self_type&); /// Accessor to raw memory as \a T. template T* - yyas_ () YY_NOEXCEPT + yyas_ () { void *yyp = yybuffer_.yyraw; return static_cast (yyp); @@ -405,12 +277,30 @@ namespace isc { namespace dhcp { /// Const accessor to raw memory as \a T. template const T* - yyas_ () const YY_NOEXCEPT + yyas_ () const { const void *yyp = yybuffer_.yyraw; return static_cast (yyp); } + union + { + /// Strongest alignment constraints. + long double yyalign_me; + /// A buffer large enough to store any of the semantic values. + char yyraw[S]; + } yybuffer_; + + /// Whether the content is built: if defined, the name of the stored type. + const std::type_info *yytypeid_; + }; + + + /// A Bison parser. + class Dhcp4Parser + { + public: +#ifndef PARSER4_STYPE /// An auxiliary type to compute the largest semantic type. union union_type { @@ -422,37 +312,23 @@ namespace isc { namespace dhcp { // db_type // hr_mode // ncr_protocol_value - char dummy1[sizeof (ElementPtr)]; + char dummy1[sizeof(ElementPtr)]; // "boolean" - char dummy2[sizeof (bool)]; + char dummy2[sizeof(bool)]; // "floating point" - char dummy3[sizeof (double)]; + char dummy3[sizeof(double)]; // "integer" - char dummy4[sizeof (int64_t)]; + char dummy4[sizeof(int64_t)]; // "constant string" - char dummy5[sizeof (std::string)]; - }; - - /// The size of the largest semantic type. - enum { size = sizeof (union_type) }; - - /// A buffer to store semantic values. - union - { - /// Strongest alignment constraints. - long double yyalign_me; - /// A buffer large enough to store any of the semantic values. - char yyraw[size]; - } yybuffer_; - - /// Whether the content is built: if defined, the name of the stored type. - const std::type_info *yytypeid_; - }; + char dummy5[sizeof(std::string)]; +}; + /// Symbol semantic values. + typedef variant semantic_type; #else typedef PARSER4_STYPE semantic_type; #endif @@ -462,852 +338,227 @@ namespace isc { namespace dhcp { /// Syntax errors thrown from user actions. struct syntax_error : std::runtime_error { - syntax_error (const location_type& l, const std::string& m) - : std::runtime_error (m) - , location (l) - {} - - syntax_error (const syntax_error& s) - : std::runtime_error (s.what ()) - , location (s.location) - {} - - ~syntax_error () YY_NOEXCEPT YY_NOTHROW; - + syntax_error (const location_type& l, const std::string& m); location_type location; }; - /// Token kinds. + /// Tokens. struct token { - enum token_kind_type - { - TOKEN_PARSER4_EMPTY = -2, - TOKEN_END = 0, // "end of file" - TOKEN_PARSER4_error = 256, // error - TOKEN_PARSER4_UNDEF = 257, // "invalid token" - TOKEN_COMMA = 258, // "," - TOKEN_COLON = 259, // ":" - TOKEN_LSQUARE_BRACKET = 260, // "[" - TOKEN_RSQUARE_BRACKET = 261, // "]" - TOKEN_LCURLY_BRACKET = 262, // "{" - TOKEN_RCURLY_BRACKET = 263, // "}" - TOKEN_NULL_TYPE = 264, // "null" - TOKEN_DHCP4 = 265, // "Dhcp4" - TOKEN_CONFIG_CONTROL = 266, // "config-control" - TOKEN_CONFIG_DATABASES = 267, // "config-databases" - TOKEN_CONFIG_FETCH_WAIT_TIME = 268, // "config-fetch-wait-time" - TOKEN_INTERFACES_CONFIG = 269, // "interfaces-config" - TOKEN_INTERFACES = 270, // "interfaces" - TOKEN_DHCP_SOCKET_TYPE = 271, // "dhcp-socket-type" - TOKEN_RAW = 272, // "raw" - TOKEN_UDP = 273, // "udp" - TOKEN_OUTBOUND_INTERFACE = 274, // "outbound-interface" - TOKEN_SAME_AS_INBOUND = 275, // "same-as-inbound" - TOKEN_USE_ROUTING = 276, // "use-routing" - TOKEN_RE_DETECT = 277, // "re-detect" - TOKEN_SANITY_CHECKS = 278, // "sanity-checks" - TOKEN_LEASE_CHECKS = 279, // "lease-checks" - TOKEN_ECHO_CLIENT_ID = 280, // "echo-client-id" - TOKEN_MATCH_CLIENT_ID = 281, // "match-client-id" - TOKEN_AUTHORITATIVE = 282, // "authoritative" - TOKEN_NEXT_SERVER = 283, // "next-server" - TOKEN_SERVER_HOSTNAME = 284, // "server-hostname" - TOKEN_BOOT_FILE_NAME = 285, // "boot-file-name" - TOKEN_LEASE_DATABASE = 286, // "lease-database" - TOKEN_HOSTS_DATABASE = 287, // "hosts-database" - TOKEN_HOSTS_DATABASES = 288, // "hosts-databases" - TOKEN_TYPE = 289, // "type" - TOKEN_MEMFILE = 290, // "memfile" - TOKEN_MYSQL = 291, // "mysql" - TOKEN_POSTGRESQL = 292, // "postgresql" - TOKEN_CQL = 293, // "cql" - TOKEN_USER = 294, // "user" - TOKEN_PASSWORD = 295, // "password" - TOKEN_HOST = 296, // "host" - TOKEN_PORT = 297, // "port" - TOKEN_PERSIST = 298, // "persist" - TOKEN_LFC_INTERVAL = 299, // "lfc-interval" - TOKEN_READONLY = 300, // "readonly" - TOKEN_CONNECT_TIMEOUT = 301, // "connect-timeout" - TOKEN_CONTACT_POINTS = 302, // "contact-points" - TOKEN_KEYSPACE = 303, // "keyspace" - TOKEN_CONSISTENCY = 304, // "consistency" - TOKEN_SERIAL_CONSISTENCY = 305, // "serial-consistency" - TOKEN_MAX_RECONNECT_TRIES = 306, // "max-reconnect-tries" - TOKEN_RECONNECT_WAIT_TIME = 307, // "reconnect-wait-time" - TOKEN_REQUEST_TIMEOUT = 308, // "request-timeout" - TOKEN_TCP_KEEPALIVE = 309, // "tcp-keepalive" - TOKEN_TCP_NODELAY = 310, // "tcp-nodelay" - TOKEN_MAX_ROW_ERRORS = 311, // "max-row-errors" - TOKEN_VALID_LIFETIME = 312, // "valid-lifetime" - TOKEN_MIN_VALID_LIFETIME = 313, // "min-valid-lifetime" - TOKEN_MAX_VALID_LIFETIME = 314, // "max-valid-lifetime" - TOKEN_RENEW_TIMER = 315, // "renew-timer" - TOKEN_REBIND_TIMER = 316, // "rebind-timer" - TOKEN_CALCULATE_TEE_TIMES = 317, // "calculate-tee-times" - TOKEN_T1_PERCENT = 318, // "t1-percent" - TOKEN_T2_PERCENT = 319, // "t2-percent" - TOKEN_CACHE_THRESHOLD = 320, // "cache-threshold" - TOKEN_CACHE_MAX_AGE = 321, // "cache-max-age" - TOKEN_DECLINE_PROBATION_PERIOD = 322, // "decline-probation-period" - TOKEN_SERVER_TAG = 323, // "server-tag" - TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 324, // "statistic-default-sample-count" - TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 325, // "statistic-default-sample-age" - TOKEN_DDNS_SEND_UPDATES = 326, // "ddns-send-updates" - TOKEN_DDNS_OVERRIDE_NO_UPDATE = 327, // "ddns-override-no-update" - TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 328, // "ddns-override-client-update" - TOKEN_DDNS_REPLACE_CLIENT_NAME = 329, // "ddns-replace-client-name" - TOKEN_DDNS_GENERATED_PREFIX = 330, // "ddns-generated-prefix" - TOKEN_DDNS_QUALIFYING_SUFFIX = 331, // "ddns-qualifying-suffix" - TOKEN_DDNS_UPDATE_ON_RENEW = 332, // "ddns-update-on-renew" - TOKEN_STORE_EXTENDED_INFO = 333, // "store-extended-info" - TOKEN_SUBNET4 = 334, // "subnet4" - TOKEN_SUBNET_4O6_INTERFACE = 335, // "4o6-interface" - TOKEN_SUBNET_4O6_INTERFACE_ID = 336, // "4o6-interface-id" - TOKEN_SUBNET_4O6_SUBNET = 337, // "4o6-subnet" - TOKEN_OPTION_DEF = 338, // "option-def" - TOKEN_OPTION_DATA = 339, // "option-data" - TOKEN_NAME = 340, // "name" - TOKEN_DATA = 341, // "data" - TOKEN_CODE = 342, // "code" - TOKEN_SPACE = 343, // "space" - TOKEN_CSV_FORMAT = 344, // "csv-format" - TOKEN_ALWAYS_SEND = 345, // "always-send" - TOKEN_RECORD_TYPES = 346, // "record-types" - TOKEN_ENCAPSULATE = 347, // "encapsulate" - TOKEN_ARRAY = 348, // "array" - TOKEN_SHARED_NETWORKS = 349, // "shared-networks" - TOKEN_POOLS = 350, // "pools" - TOKEN_POOL = 351, // "pool" - TOKEN_USER_CONTEXT = 352, // "user-context" - TOKEN_COMMENT = 353, // "comment" - TOKEN_SUBNET = 354, // "subnet" - TOKEN_INTERFACE = 355, // "interface" - TOKEN_ID = 356, // "id" - TOKEN_RESERVATION_MODE = 357, // "reservation-mode" - TOKEN_DISABLED = 358, // "disabled" - TOKEN_OUT_OF_POOL = 359, // "out-of-pool" - TOKEN_GLOBAL = 360, // "global" - TOKEN_ALL = 361, // "all" - TOKEN_HOST_RESERVATION_IDENTIFIERS = 362, // "host-reservation-identifiers" - TOKEN_CLIENT_CLASSES = 363, // "client-classes" - TOKEN_REQUIRE_CLIENT_CLASSES = 364, // "require-client-classes" - TOKEN_TEST = 365, // "test" - TOKEN_ONLY_IF_REQUIRED = 366, // "only-if-required" - TOKEN_CLIENT_CLASS = 367, // "client-class" - TOKEN_RESERVATIONS = 368, // "reservations" - TOKEN_DUID = 369, // "duid" - TOKEN_HW_ADDRESS = 370, // "hw-address" - TOKEN_CIRCUIT_ID = 371, // "circuit-id" - TOKEN_CLIENT_ID = 372, // "client-id" - TOKEN_HOSTNAME = 373, // "hostname" - TOKEN_FLEX_ID = 374, // "flex-id" - TOKEN_RELAY = 375, // "relay" - TOKEN_IP_ADDRESS = 376, // "ip-address" - TOKEN_IP_ADDRESSES = 377, // "ip-addresses" - TOKEN_HOOKS_LIBRARIES = 378, // "hooks-libraries" - TOKEN_LIBRARY = 379, // "library" - TOKEN_PARAMETERS = 380, // "parameters" - TOKEN_EXPIRED_LEASES_PROCESSING = 381, // "expired-leases-processing" - TOKEN_RECLAIM_TIMER_WAIT_TIME = 382, // "reclaim-timer-wait-time" - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 383, // "flush-reclaimed-timer-wait-time" - TOKEN_HOLD_RECLAIMED_TIME = 384, // "hold-reclaimed-time" - TOKEN_MAX_RECLAIM_LEASES = 385, // "max-reclaim-leases" - TOKEN_MAX_RECLAIM_TIME = 386, // "max-reclaim-time" - TOKEN_UNWARNED_RECLAIM_CYCLES = 387, // "unwarned-reclaim-cycles" - TOKEN_DHCP4O6_PORT = 388, // "dhcp4o6-port" - TOKEN_DHCP_MULTI_THREADING = 389, // "multi-threading" - TOKEN_ENABLE_MULTI_THREADING = 390, // "enable-multi-threading" - TOKEN_THREAD_POOL_SIZE = 391, // "thread-pool-size" - TOKEN_PACKET_QUEUE_SIZE = 392, // "packet-queue-size" - TOKEN_CONTROL_SOCKET = 393, // "control-socket" - TOKEN_SOCKET_TYPE = 394, // "socket-type" - TOKEN_SOCKET_NAME = 395, // "socket-name" - TOKEN_DHCP_QUEUE_CONTROL = 396, // "dhcp-queue-control" - TOKEN_ENABLE_QUEUE = 397, // "enable-queue" - TOKEN_QUEUE_TYPE = 398, // "queue-type" - TOKEN_CAPACITY = 399, // "capacity" - TOKEN_DHCP_DDNS = 400, // "dhcp-ddns" - TOKEN_ENABLE_UPDATES = 401, // "enable-updates" - TOKEN_QUALIFYING_SUFFIX = 402, // "qualifying-suffix" - TOKEN_SERVER_IP = 403, // "server-ip" - TOKEN_SERVER_PORT = 404, // "server-port" - TOKEN_SENDER_IP = 405, // "sender-ip" - TOKEN_SENDER_PORT = 406, // "sender-port" - TOKEN_MAX_QUEUE_SIZE = 407, // "max-queue-size" - TOKEN_NCR_PROTOCOL = 408, // "ncr-protocol" - TOKEN_NCR_FORMAT = 409, // "ncr-format" - TOKEN_OVERRIDE_NO_UPDATE = 410, // "override-no-update" - TOKEN_OVERRIDE_CLIENT_UPDATE = 411, // "override-client-update" - TOKEN_REPLACE_CLIENT_NAME = 412, // "replace-client-name" - TOKEN_GENERATED_PREFIX = 413, // "generated-prefix" - TOKEN_TCP = 414, // "tcp" - TOKEN_JSON = 415, // "JSON" - TOKEN_WHEN_PRESENT = 416, // "when-present" - TOKEN_NEVER = 417, // "never" - TOKEN_ALWAYS = 418, // "always" - TOKEN_WHEN_NOT_PRESENT = 419, // "when-not-present" - TOKEN_HOSTNAME_CHAR_SET = 420, // "hostname-char-set" - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 421, // "hostname-char-replacement" - TOKEN_IP_RESERVATIONS_UNIQUE = 422, // "ip-reservations-unique" - TOKEN_LOGGERS = 423, // "loggers" - TOKEN_OUTPUT_OPTIONS = 424, // "output_options" - TOKEN_OUTPUT = 425, // "output" - TOKEN_DEBUGLEVEL = 426, // "debuglevel" - TOKEN_SEVERITY = 427, // "severity" - TOKEN_FLUSH = 428, // "flush" - TOKEN_MAXSIZE = 429, // "maxsize" - TOKEN_MAXVER = 430, // "maxver" - TOKEN_PATTERN = 431, // "pattern" - TOKEN_TOPLEVEL_JSON = 432, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP4 = 433, // TOPLEVEL_DHCP4 - TOKEN_SUB_DHCP4 = 434, // SUB_DHCP4 - TOKEN_SUB_INTERFACES4 = 435, // SUB_INTERFACES4 - TOKEN_SUB_SUBNET4 = 436, // SUB_SUBNET4 - TOKEN_SUB_POOL4 = 437, // SUB_POOL4 - TOKEN_SUB_RESERVATION = 438, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 439, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 440, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 441, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 442, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 443, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 444, // SUB_CONFIG_CONTROL - TOKEN_STRING = 445, // "constant string" - TOKEN_INTEGER = 446, // "integer" - TOKEN_FLOAT = 447, // "floating point" - TOKEN_BOOLEAN = 448 // "boolean" + enum yytokentype + { + TOKEN_END = 0, + TOKEN_COMMA = 258, + TOKEN_COLON = 259, + TOKEN_LSQUARE_BRACKET = 260, + TOKEN_RSQUARE_BRACKET = 261, + TOKEN_LCURLY_BRACKET = 262, + TOKEN_RCURLY_BRACKET = 263, + TOKEN_NULL_TYPE = 264, + TOKEN_DHCP4 = 265, + TOKEN_CONFIG_CONTROL = 266, + TOKEN_CONFIG_DATABASES = 267, + TOKEN_CONFIG_FETCH_WAIT_TIME = 268, + TOKEN_INTERFACES_CONFIG = 269, + TOKEN_INTERFACES = 270, + TOKEN_DHCP_SOCKET_TYPE = 271, + TOKEN_RAW = 272, + TOKEN_UDP = 273, + TOKEN_OUTBOUND_INTERFACE = 274, + TOKEN_SAME_AS_INBOUND = 275, + TOKEN_USE_ROUTING = 276, + TOKEN_RE_DETECT = 277, + TOKEN_SANITY_CHECKS = 278, + TOKEN_LEASE_CHECKS = 279, + TOKEN_ECHO_CLIENT_ID = 280, + TOKEN_MATCH_CLIENT_ID = 281, + TOKEN_AUTHORITATIVE = 282, + TOKEN_NEXT_SERVER = 283, + TOKEN_SERVER_HOSTNAME = 284, + TOKEN_BOOT_FILE_NAME = 285, + TOKEN_LEASE_DATABASE = 286, + TOKEN_HOSTS_DATABASE = 287, + TOKEN_HOSTS_DATABASES = 288, + TOKEN_TYPE = 289, + TOKEN_MEMFILE = 290, + TOKEN_MYSQL = 291, + TOKEN_POSTGRESQL = 292, + TOKEN_CQL = 293, + TOKEN_USER = 294, + TOKEN_PASSWORD = 295, + TOKEN_HOST = 296, + TOKEN_PORT = 297, + TOKEN_PERSIST = 298, + TOKEN_LFC_INTERVAL = 299, + TOKEN_READONLY = 300, + TOKEN_CONNECT_TIMEOUT = 301, + TOKEN_CONTACT_POINTS = 302, + TOKEN_KEYSPACE = 303, + TOKEN_CONSISTENCY = 304, + TOKEN_SERIAL_CONSISTENCY = 305, + TOKEN_MAX_RECONNECT_TRIES = 306, + TOKEN_RECONNECT_WAIT_TIME = 307, + TOKEN_REQUEST_TIMEOUT = 308, + TOKEN_TCP_KEEPALIVE = 309, + TOKEN_TCP_NODELAY = 310, + TOKEN_MAX_ROW_ERRORS = 311, + TOKEN_VALID_LIFETIME = 312, + TOKEN_MIN_VALID_LIFETIME = 313, + TOKEN_MAX_VALID_LIFETIME = 314, + TOKEN_RENEW_TIMER = 315, + TOKEN_REBIND_TIMER = 316, + TOKEN_CALCULATE_TEE_TIMES = 317, + TOKEN_T1_PERCENT = 318, + TOKEN_T2_PERCENT = 319, + TOKEN_CACHE_THRESHOLD = 320, + TOKEN_CACHE_MAX_AGE = 321, + TOKEN_DECLINE_PROBATION_PERIOD = 322, + TOKEN_SERVER_TAG = 323, + TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 324, + TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 325, + TOKEN_DDNS_SEND_UPDATES = 326, + TOKEN_DDNS_OVERRIDE_NO_UPDATE = 327, + TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 328, + TOKEN_DDNS_REPLACE_CLIENT_NAME = 329, + TOKEN_DDNS_GENERATED_PREFIX = 330, + TOKEN_DDNS_QUALIFYING_SUFFIX = 331, + TOKEN_DDNS_UPDATE_ON_RENEW = 332, + TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 333, + TOKEN_STORE_EXTENDED_INFO = 334, + TOKEN_SUBNET4 = 335, + TOKEN_SUBNET_4O6_INTERFACE = 336, + TOKEN_SUBNET_4O6_INTERFACE_ID = 337, + TOKEN_SUBNET_4O6_SUBNET = 338, + TOKEN_OPTION_DEF = 339, + TOKEN_OPTION_DATA = 340, + TOKEN_NAME = 341, + TOKEN_DATA = 342, + TOKEN_CODE = 343, + TOKEN_SPACE = 344, + TOKEN_CSV_FORMAT = 345, + TOKEN_ALWAYS_SEND = 346, + TOKEN_RECORD_TYPES = 347, + TOKEN_ENCAPSULATE = 348, + TOKEN_ARRAY = 349, + TOKEN_SHARED_NETWORKS = 350, + TOKEN_POOLS = 351, + TOKEN_POOL = 352, + TOKEN_USER_CONTEXT = 353, + TOKEN_COMMENT = 354, + TOKEN_SUBNET = 355, + TOKEN_INTERFACE = 356, + TOKEN_ID = 357, + TOKEN_RESERVATION_MODE = 358, + TOKEN_DISABLED = 359, + TOKEN_OUT_OF_POOL = 360, + TOKEN_GLOBAL = 361, + TOKEN_ALL = 362, + TOKEN_HOST_RESERVATION_IDENTIFIERS = 363, + TOKEN_CLIENT_CLASSES = 364, + TOKEN_REQUIRE_CLIENT_CLASSES = 365, + TOKEN_TEST = 366, + TOKEN_ONLY_IF_REQUIRED = 367, + TOKEN_CLIENT_CLASS = 368, + TOKEN_RESERVATIONS = 369, + TOKEN_DUID = 370, + TOKEN_HW_ADDRESS = 371, + TOKEN_CIRCUIT_ID = 372, + TOKEN_CLIENT_ID = 373, + TOKEN_HOSTNAME = 374, + TOKEN_FLEX_ID = 375, + TOKEN_RELAY = 376, + TOKEN_IP_ADDRESS = 377, + TOKEN_IP_ADDRESSES = 378, + TOKEN_HOOKS_LIBRARIES = 379, + TOKEN_LIBRARY = 380, + TOKEN_PARAMETERS = 381, + TOKEN_EXPIRED_LEASES_PROCESSING = 382, + TOKEN_RECLAIM_TIMER_WAIT_TIME = 383, + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 384, + TOKEN_HOLD_RECLAIMED_TIME = 385, + TOKEN_MAX_RECLAIM_LEASES = 386, + TOKEN_MAX_RECLAIM_TIME = 387, + TOKEN_UNWARNED_RECLAIM_CYCLES = 388, + TOKEN_DHCP4O6_PORT = 389, + TOKEN_DHCP_MULTI_THREADING = 390, + TOKEN_ENABLE_MULTI_THREADING = 391, + TOKEN_THREAD_POOL_SIZE = 392, + TOKEN_PACKET_QUEUE_SIZE = 393, + TOKEN_CONTROL_SOCKET = 394, + TOKEN_SOCKET_TYPE = 395, + TOKEN_SOCKET_NAME = 396, + TOKEN_DHCP_QUEUE_CONTROL = 397, + TOKEN_ENABLE_QUEUE = 398, + TOKEN_QUEUE_TYPE = 399, + TOKEN_CAPACITY = 400, + TOKEN_DHCP_DDNS = 401, + TOKEN_ENABLE_UPDATES = 402, + TOKEN_QUALIFYING_SUFFIX = 403, + TOKEN_SERVER_IP = 404, + TOKEN_SERVER_PORT = 405, + TOKEN_SENDER_IP = 406, + TOKEN_SENDER_PORT = 407, + TOKEN_MAX_QUEUE_SIZE = 408, + TOKEN_NCR_PROTOCOL = 409, + TOKEN_NCR_FORMAT = 410, + TOKEN_OVERRIDE_NO_UPDATE = 411, + TOKEN_OVERRIDE_CLIENT_UPDATE = 412, + TOKEN_REPLACE_CLIENT_NAME = 413, + TOKEN_GENERATED_PREFIX = 414, + TOKEN_TCP = 415, + TOKEN_JSON = 416, + TOKEN_WHEN_PRESENT = 417, + TOKEN_NEVER = 418, + TOKEN_ALWAYS = 419, + TOKEN_WHEN_NOT_PRESENT = 420, + TOKEN_HOSTNAME_CHAR_SET = 421, + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 422, + TOKEN_IP_RESERVATIONS_UNIQUE = 423, + TOKEN_LOGGERS = 424, + TOKEN_OUTPUT_OPTIONS = 425, + TOKEN_OUTPUT = 426, + TOKEN_DEBUGLEVEL = 427, + TOKEN_SEVERITY = 428, + TOKEN_FLUSH = 429, + TOKEN_MAXSIZE = 430, + TOKEN_MAXVER = 431, + TOKEN_PATTERN = 432, + TOKEN_TOPLEVEL_JSON = 433, + TOKEN_TOPLEVEL_DHCP4 = 434, + TOKEN_SUB_DHCP4 = 435, + TOKEN_SUB_INTERFACES4 = 436, + TOKEN_SUB_SUBNET4 = 437, + TOKEN_SUB_POOL4 = 438, + TOKEN_SUB_RESERVATION = 439, + TOKEN_SUB_OPTION_DEFS = 440, + TOKEN_SUB_OPTION_DEF = 441, + TOKEN_SUB_OPTION_DATA = 442, + TOKEN_SUB_HOOKS_LIBRARY = 443, + TOKEN_SUB_DHCP_DDNS = 444, + TOKEN_SUB_CONFIG_CONTROL = 445, + TOKEN_STRING = 446, + TOKEN_INTEGER = 447, + TOKEN_FLOAT = 448, + TOKEN_BOOLEAN = 449 }; - /// Backward compatibility alias (Bison 3.6). - typedef token_kind_type yytokentype; }; - /// Token kind, as returned by yylex. - typedef token::yytokentype token_kind_type; + /// (External) token type, as returned by yylex. + typedef token::yytokentype token_type; - /// Backward compatibility alias (Bison 3.6). - typedef token_kind_type token_type; - - /// Symbol kinds. - struct symbol_kind - { - enum symbol_kind_type - { - YYNTOKENS = 194, ///< Number of tokens. - S_YYEMPTY = -2, - S_YYEOF = 0, // "end of file" - S_YYerror = 1, // error - S_YYUNDEF = 2, // "invalid token" - S_COMMA = 3, // "," - S_COLON = 4, // ":" - S_LSQUARE_BRACKET = 5, // "[" - S_RSQUARE_BRACKET = 6, // "]" - S_LCURLY_BRACKET = 7, // "{" - S_RCURLY_BRACKET = 8, // "}" - S_NULL_TYPE = 9, // "null" - S_DHCP4 = 10, // "Dhcp4" - S_CONFIG_CONTROL = 11, // "config-control" - S_CONFIG_DATABASES = 12, // "config-databases" - S_CONFIG_FETCH_WAIT_TIME = 13, // "config-fetch-wait-time" - S_INTERFACES_CONFIG = 14, // "interfaces-config" - S_INTERFACES = 15, // "interfaces" - S_DHCP_SOCKET_TYPE = 16, // "dhcp-socket-type" - S_RAW = 17, // "raw" - S_UDP = 18, // "udp" - S_OUTBOUND_INTERFACE = 19, // "outbound-interface" - S_SAME_AS_INBOUND = 20, // "same-as-inbound" - S_USE_ROUTING = 21, // "use-routing" - S_RE_DETECT = 22, // "re-detect" - S_SANITY_CHECKS = 23, // "sanity-checks" - S_LEASE_CHECKS = 24, // "lease-checks" - S_ECHO_CLIENT_ID = 25, // "echo-client-id" - S_MATCH_CLIENT_ID = 26, // "match-client-id" - S_AUTHORITATIVE = 27, // "authoritative" - S_NEXT_SERVER = 28, // "next-server" - S_SERVER_HOSTNAME = 29, // "server-hostname" - S_BOOT_FILE_NAME = 30, // "boot-file-name" - S_LEASE_DATABASE = 31, // "lease-database" - S_HOSTS_DATABASE = 32, // "hosts-database" - S_HOSTS_DATABASES = 33, // "hosts-databases" - S_TYPE = 34, // "type" - S_MEMFILE = 35, // "memfile" - S_MYSQL = 36, // "mysql" - S_POSTGRESQL = 37, // "postgresql" - S_CQL = 38, // "cql" - S_USER = 39, // "user" - S_PASSWORD = 40, // "password" - S_HOST = 41, // "host" - S_PORT = 42, // "port" - S_PERSIST = 43, // "persist" - S_LFC_INTERVAL = 44, // "lfc-interval" - S_READONLY = 45, // "readonly" - S_CONNECT_TIMEOUT = 46, // "connect-timeout" - S_CONTACT_POINTS = 47, // "contact-points" - S_KEYSPACE = 48, // "keyspace" - S_CONSISTENCY = 49, // "consistency" - S_SERIAL_CONSISTENCY = 50, // "serial-consistency" - S_MAX_RECONNECT_TRIES = 51, // "max-reconnect-tries" - S_RECONNECT_WAIT_TIME = 52, // "reconnect-wait-time" - S_REQUEST_TIMEOUT = 53, // "request-timeout" - S_TCP_KEEPALIVE = 54, // "tcp-keepalive" - S_TCP_NODELAY = 55, // "tcp-nodelay" - S_MAX_ROW_ERRORS = 56, // "max-row-errors" - S_VALID_LIFETIME = 57, // "valid-lifetime" - S_MIN_VALID_LIFETIME = 58, // "min-valid-lifetime" - S_MAX_VALID_LIFETIME = 59, // "max-valid-lifetime" - S_RENEW_TIMER = 60, // "renew-timer" - S_REBIND_TIMER = 61, // "rebind-timer" - S_CALCULATE_TEE_TIMES = 62, // "calculate-tee-times" - S_T1_PERCENT = 63, // "t1-percent" - S_T2_PERCENT = 64, // "t2-percent" - S_CACHE_THRESHOLD = 65, // "cache-threshold" - S_CACHE_MAX_AGE = 66, // "cache-max-age" - S_DECLINE_PROBATION_PERIOD = 67, // "decline-probation-period" - S_SERVER_TAG = 68, // "server-tag" - S_STATISTIC_DEFAULT_SAMPLE_COUNT = 69, // "statistic-default-sample-count" - S_STATISTIC_DEFAULT_SAMPLE_AGE = 70, // "statistic-default-sample-age" - S_DDNS_SEND_UPDATES = 71, // "ddns-send-updates" - S_DDNS_OVERRIDE_NO_UPDATE = 72, // "ddns-override-no-update" - S_DDNS_OVERRIDE_CLIENT_UPDATE = 73, // "ddns-override-client-update" - S_DDNS_REPLACE_CLIENT_NAME = 74, // "ddns-replace-client-name" - S_DDNS_GENERATED_PREFIX = 75, // "ddns-generated-prefix" - S_DDNS_QUALIFYING_SUFFIX = 76, // "ddns-qualifying-suffix" - S_DDNS_UPDATE_ON_RENEW = 77, // "ddns-update-on-renew" - S_STORE_EXTENDED_INFO = 78, // "store-extended-info" - S_SUBNET4 = 79, // "subnet4" - S_SUBNET_4O6_INTERFACE = 80, // "4o6-interface" - S_SUBNET_4O6_INTERFACE_ID = 81, // "4o6-interface-id" - S_SUBNET_4O6_SUBNET = 82, // "4o6-subnet" - S_OPTION_DEF = 83, // "option-def" - S_OPTION_DATA = 84, // "option-data" - S_NAME = 85, // "name" - S_DATA = 86, // "data" - S_CODE = 87, // "code" - S_SPACE = 88, // "space" - S_CSV_FORMAT = 89, // "csv-format" - S_ALWAYS_SEND = 90, // "always-send" - S_RECORD_TYPES = 91, // "record-types" - S_ENCAPSULATE = 92, // "encapsulate" - S_ARRAY = 93, // "array" - S_SHARED_NETWORKS = 94, // "shared-networks" - S_POOLS = 95, // "pools" - S_POOL = 96, // "pool" - S_USER_CONTEXT = 97, // "user-context" - S_COMMENT = 98, // "comment" - S_SUBNET = 99, // "subnet" - S_INTERFACE = 100, // "interface" - S_ID = 101, // "id" - S_RESERVATION_MODE = 102, // "reservation-mode" - S_DISABLED = 103, // "disabled" - S_OUT_OF_POOL = 104, // "out-of-pool" - S_GLOBAL = 105, // "global" - S_ALL = 106, // "all" - S_HOST_RESERVATION_IDENTIFIERS = 107, // "host-reservation-identifiers" - S_CLIENT_CLASSES = 108, // "client-classes" - S_REQUIRE_CLIENT_CLASSES = 109, // "require-client-classes" - S_TEST = 110, // "test" - S_ONLY_IF_REQUIRED = 111, // "only-if-required" - S_CLIENT_CLASS = 112, // "client-class" - S_RESERVATIONS = 113, // "reservations" - S_DUID = 114, // "duid" - S_HW_ADDRESS = 115, // "hw-address" - S_CIRCUIT_ID = 116, // "circuit-id" - S_CLIENT_ID = 117, // "client-id" - S_HOSTNAME = 118, // "hostname" - S_FLEX_ID = 119, // "flex-id" - S_RELAY = 120, // "relay" - S_IP_ADDRESS = 121, // "ip-address" - S_IP_ADDRESSES = 122, // "ip-addresses" - S_HOOKS_LIBRARIES = 123, // "hooks-libraries" - S_LIBRARY = 124, // "library" - S_PARAMETERS = 125, // "parameters" - S_EXPIRED_LEASES_PROCESSING = 126, // "expired-leases-processing" - S_RECLAIM_TIMER_WAIT_TIME = 127, // "reclaim-timer-wait-time" - S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 128, // "flush-reclaimed-timer-wait-time" - S_HOLD_RECLAIMED_TIME = 129, // "hold-reclaimed-time" - S_MAX_RECLAIM_LEASES = 130, // "max-reclaim-leases" - S_MAX_RECLAIM_TIME = 131, // "max-reclaim-time" - S_UNWARNED_RECLAIM_CYCLES = 132, // "unwarned-reclaim-cycles" - S_DHCP4O6_PORT = 133, // "dhcp4o6-port" - S_DHCP_MULTI_THREADING = 134, // "multi-threading" - S_ENABLE_MULTI_THREADING = 135, // "enable-multi-threading" - S_THREAD_POOL_SIZE = 136, // "thread-pool-size" - S_PACKET_QUEUE_SIZE = 137, // "packet-queue-size" - S_CONTROL_SOCKET = 138, // "control-socket" - S_SOCKET_TYPE = 139, // "socket-type" - S_SOCKET_NAME = 140, // "socket-name" - S_DHCP_QUEUE_CONTROL = 141, // "dhcp-queue-control" - S_ENABLE_QUEUE = 142, // "enable-queue" - S_QUEUE_TYPE = 143, // "queue-type" - S_CAPACITY = 144, // "capacity" - S_DHCP_DDNS = 145, // "dhcp-ddns" - S_ENABLE_UPDATES = 146, // "enable-updates" - S_QUALIFYING_SUFFIX = 147, // "qualifying-suffix" - S_SERVER_IP = 148, // "server-ip" - S_SERVER_PORT = 149, // "server-port" - S_SENDER_IP = 150, // "sender-ip" - S_SENDER_PORT = 151, // "sender-port" - S_MAX_QUEUE_SIZE = 152, // "max-queue-size" - S_NCR_PROTOCOL = 153, // "ncr-protocol" - S_NCR_FORMAT = 154, // "ncr-format" - S_OVERRIDE_NO_UPDATE = 155, // "override-no-update" - S_OVERRIDE_CLIENT_UPDATE = 156, // "override-client-update" - S_REPLACE_CLIENT_NAME = 157, // "replace-client-name" - S_GENERATED_PREFIX = 158, // "generated-prefix" - S_TCP = 159, // "tcp" - S_JSON = 160, // "JSON" - S_WHEN_PRESENT = 161, // "when-present" - S_NEVER = 162, // "never" - S_ALWAYS = 163, // "always" - S_WHEN_NOT_PRESENT = 164, // "when-not-present" - S_HOSTNAME_CHAR_SET = 165, // "hostname-char-set" - S_HOSTNAME_CHAR_REPLACEMENT = 166, // "hostname-char-replacement" - S_IP_RESERVATIONS_UNIQUE = 167, // "ip-reservations-unique" - S_LOGGERS = 168, // "loggers" - S_OUTPUT_OPTIONS = 169, // "output_options" - S_OUTPUT = 170, // "output" - S_DEBUGLEVEL = 171, // "debuglevel" - S_SEVERITY = 172, // "severity" - S_FLUSH = 173, // "flush" - S_MAXSIZE = 174, // "maxsize" - S_MAXVER = 175, // "maxver" - S_PATTERN = 176, // "pattern" - S_TOPLEVEL_JSON = 177, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP4 = 178, // TOPLEVEL_DHCP4 - S_SUB_DHCP4 = 179, // SUB_DHCP4 - S_SUB_INTERFACES4 = 180, // SUB_INTERFACES4 - S_SUB_SUBNET4 = 181, // SUB_SUBNET4 - S_SUB_POOL4 = 182, // SUB_POOL4 - S_SUB_RESERVATION = 183, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 184, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 185, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 186, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 187, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 188, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 189, // SUB_CONFIG_CONTROL - S_STRING = 190, // "constant string" - S_INTEGER = 191, // "integer" - S_FLOAT = 192, // "floating point" - S_BOOLEAN = 193, // "boolean" - S_YYACCEPT = 194, // $accept - S_start = 195, // start - S_196_1 = 196, // $@1 - S_197_2 = 197, // $@2 - S_198_3 = 198, // $@3 - S_199_4 = 199, // $@4 - S_200_5 = 200, // $@5 - S_201_6 = 201, // $@6 - S_202_7 = 202, // $@7 - S_203_8 = 203, // $@8 - S_204_9 = 204, // $@9 - S_205_10 = 205, // $@10 - S_206_11 = 206, // $@11 - S_207_12 = 207, // $@12 - S_208_13 = 208, // $@13 - S_value = 209, // value - S_sub_json = 210, // sub_json - S_map2 = 211, // map2 - S_212_14 = 212, // $@14 - S_map_value = 213, // map_value - S_map_content = 214, // map_content - S_not_empty_map = 215, // not_empty_map - S_list_generic = 216, // list_generic - S_217_15 = 217, // $@15 - S_list_content = 218, // list_content - S_not_empty_list = 219, // not_empty_list - S_list_strings = 220, // list_strings - S_221_16 = 221, // $@16 - S_list_strings_content = 222, // list_strings_content - S_not_empty_list_strings = 223, // not_empty_list_strings - S_unknown_map_entry = 224, // unknown_map_entry - S_syntax_map = 225, // syntax_map - S_226_17 = 226, // $@17 - S_global_object = 227, // global_object - S_228_18 = 228, // $@18 - S_sub_dhcp4 = 229, // sub_dhcp4 - S_230_19 = 230, // $@19 - S_global_params = 231, // global_params - S_global_param = 232, // global_param - S_valid_lifetime = 233, // valid_lifetime - S_min_valid_lifetime = 234, // min_valid_lifetime - S_max_valid_lifetime = 235, // max_valid_lifetime - S_renew_timer = 236, // renew_timer - S_rebind_timer = 237, // rebind_timer - S_calculate_tee_times = 238, // calculate_tee_times - S_t1_percent = 239, // t1_percent - S_t2_percent = 240, // t2_percent - S_cache_threshold = 241, // cache_threshold - S_cache_max_age = 242, // cache_max_age - S_decline_probation_period = 243, // decline_probation_period - S_server_tag = 244, // server_tag - S_245_20 = 245, // $@20 - S_echo_client_id = 246, // echo_client_id - S_match_client_id = 247, // match_client_id - S_authoritative = 248, // authoritative - S_ddns_send_updates = 249, // ddns_send_updates - S_ddns_override_no_update = 250, // ddns_override_no_update - S_ddns_override_client_update = 251, // ddns_override_client_update - S_ddns_replace_client_name = 252, // ddns_replace_client_name - S_253_21 = 253, // $@21 - S_ddns_replace_client_name_value = 254, // ddns_replace_client_name_value - S_ddns_generated_prefix = 255, // ddns_generated_prefix - S_256_22 = 256, // $@22 - S_ddns_qualifying_suffix = 257, // ddns_qualifying_suffix - S_258_23 = 258, // $@23 - S_ddns_update_on_renew = 259, // ddns_update_on_renew - S_hostname_char_set = 260, // hostname_char_set - S_261_24 = 261, // $@24 - S_hostname_char_replacement = 262, // hostname_char_replacement - S_263_25 = 263, // $@25 - S_store_extended_info = 264, // store_extended_info - S_statistic_default_sample_count = 265, // statistic_default_sample_count - S_statistic_default_sample_age = 266, // statistic_default_sample_age - S_ip_reservations_unique = 267, // ip_reservations_unique - S_interfaces_config = 268, // interfaces_config - S_269_26 = 269, // $@26 - S_interfaces_config_params = 270, // interfaces_config_params - S_interfaces_config_param = 271, // interfaces_config_param - S_sub_interfaces4 = 272, // sub_interfaces4 - S_273_27 = 273, // $@27 - S_interfaces_list = 274, // interfaces_list - S_275_28 = 275, // $@28 - S_dhcp_socket_type = 276, // dhcp_socket_type - S_277_29 = 277, // $@29 - S_socket_type = 278, // socket_type - S_outbound_interface = 279, // outbound_interface - S_280_30 = 280, // $@30 - S_outbound_interface_value = 281, // outbound_interface_value - S_re_detect = 282, // re_detect - S_lease_database = 283, // lease_database - S_284_31 = 284, // $@31 - S_sanity_checks = 285, // sanity_checks - S_286_32 = 286, // $@32 - S_sanity_checks_params = 287, // sanity_checks_params - S_sanity_checks_param = 288, // sanity_checks_param - S_lease_checks = 289, // lease_checks - S_290_33 = 290, // $@33 - S_hosts_database = 291, // hosts_database - S_292_34 = 292, // $@34 - S_hosts_databases = 293, // hosts_databases - S_294_35 = 294, // $@35 - S_database_list = 295, // database_list - S_not_empty_database_list = 296, // not_empty_database_list - S_database = 297, // database - S_298_36 = 298, // $@36 - S_database_map_params = 299, // database_map_params - S_database_map_param = 300, // database_map_param - S_database_type = 301, // database_type - S_302_37 = 302, // $@37 - S_db_type = 303, // db_type - S_user = 304, // user - S_305_38 = 305, // $@38 - S_password = 306, // password - S_307_39 = 307, // $@39 - S_host = 308, // host - S_309_40 = 309, // $@40 - S_port = 310, // port - S_name = 311, // name - S_312_41 = 312, // $@41 - S_persist = 313, // persist - S_lfc_interval = 314, // lfc_interval - S_readonly = 315, // readonly - S_connect_timeout = 316, // connect_timeout - S_request_timeout = 317, // request_timeout - S_tcp_keepalive = 318, // tcp_keepalive - S_tcp_nodelay = 319, // tcp_nodelay - S_contact_points = 320, // contact_points - S_321_42 = 321, // $@42 - S_keyspace = 322, // keyspace - S_323_43 = 323, // $@43 - S_consistency = 324, // consistency - S_325_44 = 325, // $@44 - S_serial_consistency = 326, // serial_consistency - S_327_45 = 327, // $@45 - S_max_reconnect_tries = 328, // max_reconnect_tries - S_reconnect_wait_time = 329, // reconnect_wait_time - S_max_row_errors = 330, // max_row_errors - S_host_reservation_identifiers = 331, // host_reservation_identifiers - S_332_46 = 332, // $@46 - S_host_reservation_identifiers_list = 333, // host_reservation_identifiers_list - S_host_reservation_identifier = 334, // host_reservation_identifier - S_duid_id = 335, // duid_id - S_hw_address_id = 336, // hw_address_id - S_circuit_id = 337, // circuit_id - S_client_id = 338, // client_id - S_flex_id = 339, // flex_id - S_dhcp_multi_threading = 340, // dhcp_multi_threading - S_341_47 = 341, // $@47 - S_multi_threading_params = 342, // multi_threading_params - S_multi_threading_param = 343, // multi_threading_param - S_enable_multi_threading = 344, // enable_multi_threading - S_thread_pool_size = 345, // thread_pool_size - S_packet_queue_size = 346, // packet_queue_size - S_hooks_libraries = 347, // hooks_libraries - S_348_48 = 348, // $@48 - S_hooks_libraries_list = 349, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 350, // not_empty_hooks_libraries_list - S_hooks_library = 351, // hooks_library - S_352_49 = 352, // $@49 - S_sub_hooks_library = 353, // sub_hooks_library - S_354_50 = 354, // $@50 - S_hooks_params = 355, // hooks_params - S_hooks_param = 356, // hooks_param - S_library = 357, // library - S_358_51 = 358, // $@51 - S_parameters = 359, // parameters - S_360_52 = 360, // $@52 - S_expired_leases_processing = 361, // expired_leases_processing - S_362_53 = 362, // $@53 - S_expired_leases_params = 363, // expired_leases_params - S_expired_leases_param = 364, // expired_leases_param - S_reclaim_timer_wait_time = 365, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 366, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 367, // hold_reclaimed_time - S_max_reclaim_leases = 368, // max_reclaim_leases - S_max_reclaim_time = 369, // max_reclaim_time - S_unwarned_reclaim_cycles = 370, // unwarned_reclaim_cycles - S_subnet4_list = 371, // subnet4_list - S_372_54 = 372, // $@54 - S_subnet4_list_content = 373, // subnet4_list_content - S_not_empty_subnet4_list = 374, // not_empty_subnet4_list - S_subnet4 = 375, // subnet4 - S_376_55 = 376, // $@55 - S_sub_subnet4 = 377, // sub_subnet4 - S_378_56 = 378, // $@56 - S_subnet4_params = 379, // subnet4_params - S_subnet4_param = 380, // subnet4_param - S_subnet = 381, // subnet - S_382_57 = 382, // $@57 - S_subnet_4o6_interface = 383, // subnet_4o6_interface - S_384_58 = 384, // $@58 - S_subnet_4o6_interface_id = 385, // subnet_4o6_interface_id - S_386_59 = 386, // $@59 - S_subnet_4o6_subnet = 387, // subnet_4o6_subnet - S_388_60 = 388, // $@60 - S_interface = 389, // interface - S_390_61 = 390, // $@61 - S_client_class = 391, // client_class - S_392_62 = 392, // $@62 - S_require_client_classes = 393, // require_client_classes - S_394_63 = 394, // $@63 - S_reservation_mode = 395, // reservation_mode - S_396_64 = 396, // $@64 - S_hr_mode = 397, // hr_mode - S_id = 398, // id - S_shared_networks = 399, // shared_networks - S_400_65 = 400, // $@65 - S_shared_networks_content = 401, // shared_networks_content - S_shared_networks_list = 402, // shared_networks_list - S_shared_network = 403, // shared_network - S_404_66 = 404, // $@66 - S_shared_network_params = 405, // shared_network_params - S_shared_network_param = 406, // shared_network_param - S_option_def_list = 407, // option_def_list - S_408_67 = 408, // $@67 - S_sub_option_def_list = 409, // sub_option_def_list - S_410_68 = 410, // $@68 - S_option_def_list_content = 411, // option_def_list_content - S_not_empty_option_def_list = 412, // not_empty_option_def_list - S_option_def_entry = 413, // option_def_entry - S_414_69 = 414, // $@69 - S_sub_option_def = 415, // sub_option_def - S_416_70 = 416, // $@70 - S_option_def_params = 417, // option_def_params - S_not_empty_option_def_params = 418, // not_empty_option_def_params - S_option_def_param = 419, // option_def_param - S_option_def_name = 420, // option_def_name - S_code = 421, // code - S_option_def_code = 422, // option_def_code - S_option_def_type = 423, // option_def_type - S_424_71 = 424, // $@71 - S_option_def_record_types = 425, // option_def_record_types - S_426_72 = 426, // $@72 - S_space = 427, // space - S_428_73 = 428, // $@73 - S_option_def_space = 429, // option_def_space - S_option_def_encapsulate = 430, // option_def_encapsulate - S_431_74 = 431, // $@74 - S_option_def_array = 432, // option_def_array - S_option_data_list = 433, // option_data_list - S_434_75 = 434, // $@75 - S_option_data_list_content = 435, // option_data_list_content - S_not_empty_option_data_list = 436, // not_empty_option_data_list - S_option_data_entry = 437, // option_data_entry - S_438_76 = 438, // $@76 - S_sub_option_data = 439, // sub_option_data - S_440_77 = 440, // $@77 - S_option_data_params = 441, // option_data_params - S_not_empty_option_data_params = 442, // not_empty_option_data_params - S_option_data_param = 443, // option_data_param - S_option_data_name = 444, // option_data_name - S_option_data_data = 445, // option_data_data - S_446_78 = 446, // $@78 - S_option_data_code = 447, // option_data_code - S_option_data_space = 448, // option_data_space - S_option_data_csv_format = 449, // option_data_csv_format - S_option_data_always_send = 450, // option_data_always_send - S_pools_list = 451, // pools_list - S_452_79 = 452, // $@79 - S_pools_list_content = 453, // pools_list_content - S_not_empty_pools_list = 454, // not_empty_pools_list - S_pool_list_entry = 455, // pool_list_entry - S_456_80 = 456, // $@80 - S_sub_pool4 = 457, // sub_pool4 - S_458_81 = 458, // $@81 - S_pool_params = 459, // pool_params - S_pool_param = 460, // pool_param - S_pool_entry = 461, // pool_entry - S_462_82 = 462, // $@82 - S_user_context = 463, // user_context - S_464_83 = 464, // $@83 - S_comment = 465, // comment - S_466_84 = 466, // $@84 - S_reservations = 467, // reservations - S_468_85 = 468, // $@85 - S_reservations_list = 469, // reservations_list - S_not_empty_reservations_list = 470, // not_empty_reservations_list - S_reservation = 471, // reservation - S_472_86 = 472, // $@86 - S_sub_reservation = 473, // sub_reservation - S_474_87 = 474, // $@87 - S_reservation_params = 475, // reservation_params - S_not_empty_reservation_params = 476, // not_empty_reservation_params - S_reservation_param = 477, // reservation_param - S_next_server = 478, // next_server - S_479_88 = 479, // $@88 - S_server_hostname = 480, // server_hostname - S_481_89 = 481, // $@89 - S_boot_file_name = 482, // boot_file_name - S_483_90 = 483, // $@90 - S_ip_address = 484, // ip_address - S_485_91 = 485, // $@91 - S_ip_addresses = 486, // ip_addresses - S_487_92 = 487, // $@92 - S_duid = 488, // duid - S_489_93 = 489, // $@93 - S_hw_address = 490, // hw_address - S_491_94 = 491, // $@94 - S_client_id_value = 492, // client_id_value - S_493_95 = 493, // $@95 - S_circuit_id_value = 494, // circuit_id_value - S_495_96 = 495, // $@96 - S_flex_id_value = 496, // flex_id_value - S_497_97 = 497, // $@97 - S_hostname = 498, // hostname - S_499_98 = 499, // $@98 - S_reservation_client_classes = 500, // reservation_client_classes - S_501_99 = 501, // $@99 - S_relay = 502, // relay - S_503_100 = 503, // $@100 - S_relay_map = 504, // relay_map - S_client_classes = 505, // client_classes - S_506_101 = 506, // $@101 - S_client_classes_list = 507, // client_classes_list - S_client_class_entry = 508, // client_class_entry - S_509_102 = 509, // $@102 - S_client_class_params = 510, // client_class_params - S_not_empty_client_class_params = 511, // not_empty_client_class_params - S_client_class_param = 512, // client_class_param - S_client_class_name = 513, // client_class_name - S_client_class_test = 514, // client_class_test - S_515_103 = 515, // $@103 - S_only_if_required = 516, // only_if_required - S_dhcp4o6_port = 517, // dhcp4o6_port - S_control_socket = 518, // control_socket - S_519_104 = 519, // $@104 - S_control_socket_params = 520, // control_socket_params - S_control_socket_param = 521, // control_socket_param - S_control_socket_type = 522, // control_socket_type - S_523_105 = 523, // $@105 - S_control_socket_name = 524, // control_socket_name - S_525_106 = 525, // $@106 - S_dhcp_queue_control = 526, // dhcp_queue_control - S_527_107 = 527, // $@107 - S_queue_control_params = 528, // queue_control_params - S_queue_control_param = 529, // queue_control_param - S_enable_queue = 530, // enable_queue - S_queue_type = 531, // queue_type - S_532_108 = 532, // $@108 - S_capacity = 533, // capacity - S_arbitrary_map_entry = 534, // arbitrary_map_entry - S_535_109 = 535, // $@109 - S_dhcp_ddns = 536, // dhcp_ddns - S_537_110 = 537, // $@110 - S_sub_dhcp_ddns = 538, // sub_dhcp_ddns - S_539_111 = 539, // $@111 - S_dhcp_ddns_params = 540, // dhcp_ddns_params - S_dhcp_ddns_param = 541, // dhcp_ddns_param - S_enable_updates = 542, // enable_updates - S_server_ip = 543, // server_ip - S_544_112 = 544, // $@112 - S_server_port = 545, // server_port - S_sender_ip = 546, // sender_ip - S_547_113 = 547, // $@113 - S_sender_port = 548, // sender_port - S_max_queue_size = 549, // max_queue_size - S_ncr_protocol = 550, // ncr_protocol - S_551_114 = 551, // $@114 - S_ncr_protocol_value = 552, // ncr_protocol_value - S_ncr_format = 553, // ncr_format - S_554_115 = 554, // $@115 - S_dep_qualifying_suffix = 555, // dep_qualifying_suffix - S_556_116 = 556, // $@116 - S_dep_override_no_update = 557, // dep_override_no_update - S_dep_override_client_update = 558, // dep_override_client_update - S_dep_replace_client_name = 559, // dep_replace_client_name - S_560_117 = 560, // $@117 - S_dep_generated_prefix = 561, // dep_generated_prefix - S_562_118 = 562, // $@118 - S_dep_hostname_char_set = 563, // dep_hostname_char_set - S_564_119 = 564, // $@119 - S_dep_hostname_char_replacement = 565, // dep_hostname_char_replacement - S_566_120 = 566, // $@120 - S_config_control = 567, // config_control - S_568_121 = 568, // $@121 - S_sub_config_control = 569, // sub_config_control - S_570_122 = 570, // $@122 - S_config_control_params = 571, // config_control_params - S_config_control_param = 572, // config_control_param - S_config_databases = 573, // config_databases - S_574_123 = 574, // $@123 - S_config_fetch_wait_time = 575, // config_fetch_wait_time - S_loggers = 576, // loggers - S_577_124 = 577, // $@124 - S_loggers_entries = 578, // loggers_entries - S_logger_entry = 579, // logger_entry - S_580_125 = 580, // $@125 - S_logger_params = 581, // logger_params - S_logger_param = 582, // logger_param - S_debuglevel = 583, // debuglevel - S_severity = 584, // severity - S_585_126 = 585, // $@126 - S_output_options_list = 586, // output_options_list - S_587_127 = 587, // $@127 - S_output_options_list_content = 588, // output_options_list_content - S_output_entry = 589, // output_entry - S_590_128 = 590, // $@128 - S_output_params_list = 591, // output_params_list - S_output_params = 592, // output_params - S_output = 593, // output - S_594_129 = 594, // $@129 - S_flush = 595, // flush - S_maxsize = 596, // maxsize - S_maxver = 597, // maxver - S_pattern = 598, // pattern - S_599_130 = 599 // $@130 - }; - }; + /// Symbol type: an internal symbol number. + typedef int symbol_number_type; - /// (Internal) symbol kind. - typedef symbol_kind::symbol_kind_type symbol_kind_type; + /// The symbol type number to denote an empty symbol. + enum { empty_symbol = -2 }; - /// The number of tokens. - static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS; + /// Internal symbol number for tokens (subsumed by symbol_number_type). + typedef unsigned char token_number_type; /// A complete symbol. /// - /// Expects its Base type to provide access to the symbol kind - /// via kind (). + /// Expects its Base type to provide access to the symbol type + /// via type_get(). /// /// Provide access to semantic value and location. template @@ -1317,202 +568,39 @@ namespace isc { namespace dhcp { typedef Base super_type; /// Default constructor. - basic_symbol () - : value () - , location () - {} - -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - basic_symbol (basic_symbol&& that) - : Base (std::move (that)) - , value () - , location (std::move (that.location)) - { - switch (this->kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (std::move (that.value)); - break; - - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (std::move (that.value)); - break; - - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (std::move (that.value)); - break; - - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (std::move (that.value)); - break; - - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (std::move (that.value)); - break; - - default: - break; - } - - } -#endif + basic_symbol (); /// Copy constructor. - basic_symbol (const basic_symbol& that); + basic_symbol (const basic_symbol& other); /// Constructor for valueless symbols, and symbols from each type. -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, location_type&& l) - : Base (t) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const location_type& l) - : Base (t) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, double&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const double& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif - /// Destroy the symbol. - ~basic_symbol () - { - clear (); - } + basic_symbol (typename Base::kind_type t, const location_type& l); - /// Destroy contents, and record that is empty. - void clear () - { - // User destructor. - symbol_kind_type yykind = this->kind (); - basic_symbol& yysym = *this; - (void) yysym; - switch (yykind) - { - default: - break; - } - - // Value type destructor. -switch (yykind) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.template destroy< ElementPtr > (); - break; + basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l); - case symbol_kind::S_BOOLEAN: // "boolean" - value.template destroy< bool > (); - break; + basic_symbol (typename Base::kind_type t, const bool v, const location_type& l); - case symbol_kind::S_FLOAT: // "floating point" - value.template destroy< double > (); - break; + basic_symbol (typename Base::kind_type t, const double v, const location_type& l); - case symbol_kind::S_INTEGER: // "integer" - value.template destroy< int64_t > (); - break; + basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l); - case symbol_kind::S_STRING: // "constant string" - value.template destroy< std::string > (); - break; + basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l); - default: - break; - } - Base::clear (); - } + /// Constructor for symbols with semantic value. + basic_symbol (typename Base::kind_type t, + const semantic_type& v, + const location_type& l); - /// The user-facing name of this symbol. - std::string name () const YY_NOEXCEPT - { - return Dhcp4Parser::symbol_name (this->kind ()); - } + /// Destroy the symbol. + ~basic_symbol (); - /// Backward compatibility (Bison 3.6). - symbol_kind_type type_get () const YY_NOEXCEPT; + /// Destroy contents, and record that is empty. + void clear (); /// Whether empty. - bool empty () const YY_NOEXCEPT; + bool empty () const; /// Destructive move, \a s is emptied into this. void move (basic_symbol& s); @@ -1524,3650 +612,2591 @@ switch (yykind) location_type location; private: -#if YY_CPLUSPLUS < 201103L /// Assignment operator. - basic_symbol& operator= (const basic_symbol& that); -#endif + basic_symbol& operator= (const basic_symbol& other); }; /// Type access provider for token (enum) based symbols. - struct by_kind + struct by_type { /// Default constructor. - by_kind (); - -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - by_kind (by_kind&& that); -#endif + by_type (); /// Copy constructor. - by_kind (const by_kind& that); + by_type (const by_type& other); - /// The symbol kind as needed by the constructor. - typedef token_kind_type kind_type; + /// The symbol type as needed by the constructor. + typedef token_type kind_type; /// Constructor from (external) token numbers. - by_kind (kind_type t); + by_type (kind_type t); /// Record that this symbol is empty. void clear (); - /// Steal the symbol kind from \a that. - void move (by_kind& that); + /// Steal the symbol type from \a that. + void move (by_type& that); /// The (internal) type number (corresponding to \a type). /// \a empty when empty. - symbol_kind_type kind () const YY_NOEXCEPT; + symbol_number_type type_get () const; - /// Backward compatibility (Bison 3.6). - symbol_kind_type type_get () const YY_NOEXCEPT; + /// The token. + token_type token () const; - /// The symbol kind. - /// \a S_YYEMPTY when empty. - symbol_kind_type kind_; + /// The symbol type. + /// \a empty_symbol when empty. + /// An int, not token_number_type, to be able to store empty_symbol. + int type; }; - /// Backward compatibility for a private implementation detail (Bison 3.6). - typedef by_kind by_type; - /// "External" symbols: returned by the scanner. - struct symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; + typedef basic_symbol symbol_type; - /// Empty symbol. - symbol_type () {} + // Symbol constructors declarations. + static inline + symbol_type + make_END (const location_type& l); - /// Constructor for valueless symbols, and symbols from each type. -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, location_type l) - : super_type(token_type (tok), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_IP_RESERVATIONS_UNIQUE || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL); - } -#else - symbol_type (int tok, const location_type& l) - : super_type(token_type (tok), l) - { - YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_IP_RESERVATIONS_UNIQUE || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, bool v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_BOOLEAN); - } -#else - symbol_type (int tok, const bool& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_BOOLEAN); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, double v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_FLOAT); - } -#else - symbol_type (int tok, const double& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_FLOAT); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, int64_t v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_INTEGER); - } -#else - symbol_type (int tok, const int64_t& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_INTEGER); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, std::string v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_STRING); - } -#else - symbol_type (int tok, const std::string& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_STRING); - } -#endif - }; + static inline + symbol_type + make_COMMA (const location_type& l); - /// Build a parser object. - Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg); - virtual ~Dhcp4Parser (); + static inline + symbol_type + make_COLON (const location_type& l); -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - Dhcp4Parser (const Dhcp4Parser&) = delete; - /// Non copyable. - Dhcp4Parser& operator= (const Dhcp4Parser&) = delete; -#endif + static inline + symbol_type + make_LSQUARE_BRACKET (const location_type& l); - /// Parse. An alias for parse (). - /// \returns 0 iff parsing succeeded. - int operator() (); + static inline + symbol_type + make_RSQUARE_BRACKET (const location_type& l); - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); + static inline + symbol_type + make_LCURLY_BRACKET (const location_type& l); -#if PARSER4_DEBUG - /// The current debugging stream. - std::ostream& debug_stream () const YY_ATTRIBUTE_PURE; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); + static inline + symbol_type + make_RCURLY_BRACKET (const location_type& l); - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const YY_ATTRIBUTE_PURE; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); -#endif + static inline + symbol_type + make_NULL_TYPE (const location_type& l); - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); + static inline + symbol_type + make_DHCP4 (const location_type& l); - /// Report a syntax error. - void error (const syntax_error& err); + static inline + symbol_type + make_CONFIG_CONTROL (const location_type& l); - /// The user-facing name of the symbol whose (internal) number is - /// YYSYMBOL. No bounds checking. - static std::string symbol_name (symbol_kind_type yysymbol); + static inline + symbol_type + make_CONFIG_DATABASES (const location_type& l); - // Implementation of make_symbol for each symbol type. -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_END (location_type l) - { - return symbol_type (token::TOKEN_END, std::move (l)); - } -#else - static - symbol_type - make_END (const location_type& l) - { - return symbol_type (token::TOKEN_END, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARSER4_error (location_type l) - { - return symbol_type (token::TOKEN_PARSER4_error, std::move (l)); - } -#else - static - symbol_type - make_PARSER4_error (const location_type& l) - { - return symbol_type (token::TOKEN_PARSER4_error, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARSER4_UNDEF (location_type l) - { - return symbol_type (token::TOKEN_PARSER4_UNDEF, std::move (l)); - } -#else - static - symbol_type - make_PARSER4_UNDEF (const location_type& l) - { - return symbol_type (token::TOKEN_PARSER4_UNDEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COMMA (location_type l) - { - return symbol_type (token::TOKEN_COMMA, std::move (l)); - } -#else - static - symbol_type - make_COMMA (const location_type& l) - { - return symbol_type (token::TOKEN_COMMA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COLON (location_type l) - { - return symbol_type (token::TOKEN_COLON, std::move (l)); - } -#else - static - symbol_type - make_COLON (const location_type& l) - { - return symbol_type (token::TOKEN_COLON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LSQUARE_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_LSQUARE_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_LSQUARE_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RSQUARE_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_RSQUARE_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_RSQUARE_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LCURLY_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_LCURLY_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_LCURLY_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RCURLY_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_RCURLY_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_RCURLY_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NULL_TYPE (location_type l) - { - return symbol_type (token::TOKEN_NULL_TYPE, std::move (l)); - } -#else - static - symbol_type - make_NULL_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_NULL_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP4 (location_type l) - { - return symbol_type (token::TOKEN_DHCP4, std::move (l)); - } -#else - static - symbol_type - make_DHCP4 (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_DATABASES (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_DATABASES (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_DATABASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_FETCH_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_FETCH_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACES_CONFIG (location_type l) - { - return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l)); - } -#else - static - symbol_type - make_INTERFACES_CONFIG (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACES_CONFIG, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACES (location_type l) - { - return symbol_type (token::TOKEN_INTERFACES, std::move (l)); - } -#else - static - symbol_type - make_INTERFACES (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_SOCKET_TYPE (location_type l) - { - return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, std::move (l)); - } -#else - static - symbol_type - make_DHCP_SOCKET_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RAW (location_type l) - { - return symbol_type (token::TOKEN_RAW, std::move (l)); - } -#else - static - symbol_type - make_RAW (const location_type& l) - { - return symbol_type (token::TOKEN_RAW, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_UDP (location_type l) - { - return symbol_type (token::TOKEN_UDP, std::move (l)); - } -#else - static - symbol_type - make_UDP (const location_type& l) - { - return symbol_type (token::TOKEN_UDP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTBOUND_INTERFACE (location_type l) - { - return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, std::move (l)); - } -#else - static - symbol_type - make_OUTBOUND_INTERFACE (const location_type& l) - { - return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SAME_AS_INBOUND (location_type l) - { - return symbol_type (token::TOKEN_SAME_AS_INBOUND, std::move (l)); - } -#else - static - symbol_type - make_SAME_AS_INBOUND (const location_type& l) - { - return symbol_type (token::TOKEN_SAME_AS_INBOUND, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USE_ROUTING (location_type l) - { - return symbol_type (token::TOKEN_USE_ROUTING, std::move (l)); - } -#else - static - symbol_type - make_USE_ROUTING (const location_type& l) - { - return symbol_type (token::TOKEN_USE_ROUTING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RE_DETECT (location_type l) - { - return symbol_type (token::TOKEN_RE_DETECT, std::move (l)); - } -#else - static - symbol_type - make_RE_DETECT (const location_type& l) - { - return symbol_type (token::TOKEN_RE_DETECT, l); - } + static inline + symbol_type + make_CONFIG_FETCH_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_INTERFACES_CONFIG (const location_type& l); + + static inline + symbol_type + make_INTERFACES (const location_type& l); + + static inline + symbol_type + make_DHCP_SOCKET_TYPE (const location_type& l); + + static inline + symbol_type + make_RAW (const location_type& l); + + static inline + symbol_type + make_UDP (const location_type& l); + + static inline + symbol_type + make_OUTBOUND_INTERFACE (const location_type& l); + + static inline + symbol_type + make_SAME_AS_INBOUND (const location_type& l); + + static inline + symbol_type + make_USE_ROUTING (const location_type& l); + + static inline + symbol_type + make_RE_DETECT (const location_type& l); + + static inline + symbol_type + make_SANITY_CHECKS (const location_type& l); + + static inline + symbol_type + make_LEASE_CHECKS (const location_type& l); + + static inline + symbol_type + make_ECHO_CLIENT_ID (const location_type& l); + + static inline + symbol_type + make_MATCH_CLIENT_ID (const location_type& l); + + static inline + symbol_type + make_AUTHORITATIVE (const location_type& l); + + static inline + symbol_type + make_NEXT_SERVER (const location_type& l); + + static inline + symbol_type + make_SERVER_HOSTNAME (const location_type& l); + + static inline + symbol_type + make_BOOT_FILE_NAME (const location_type& l); + + static inline + symbol_type + make_LEASE_DATABASE (const location_type& l); + + static inline + symbol_type + make_HOSTS_DATABASE (const location_type& l); + + static inline + symbol_type + make_HOSTS_DATABASES (const location_type& l); + + static inline + symbol_type + make_TYPE (const location_type& l); + + static inline + symbol_type + make_MEMFILE (const location_type& l); + + static inline + symbol_type + make_MYSQL (const location_type& l); + + static inline + symbol_type + make_POSTGRESQL (const location_type& l); + + static inline + symbol_type + make_CQL (const location_type& l); + + static inline + symbol_type + make_USER (const location_type& l); + + static inline + symbol_type + make_PASSWORD (const location_type& l); + + static inline + symbol_type + make_HOST (const location_type& l); + + static inline + symbol_type + make_PORT (const location_type& l); + + static inline + symbol_type + make_PERSIST (const location_type& l); + + static inline + symbol_type + make_LFC_INTERVAL (const location_type& l); + + static inline + symbol_type + make_READONLY (const location_type& l); + + static inline + symbol_type + make_CONNECT_TIMEOUT (const location_type& l); + + static inline + symbol_type + make_CONTACT_POINTS (const location_type& l); + + static inline + symbol_type + make_KEYSPACE (const location_type& l); + + static inline + symbol_type + make_CONSISTENCY (const location_type& l); + + static inline + symbol_type + make_SERIAL_CONSISTENCY (const location_type& l); + + static inline + symbol_type + make_MAX_RECONNECT_TRIES (const location_type& l); + + static inline + symbol_type + make_RECONNECT_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_REQUEST_TIMEOUT (const location_type& l); + + static inline + symbol_type + make_TCP_KEEPALIVE (const location_type& l); + + static inline + symbol_type + make_TCP_NODELAY (const location_type& l); + + static inline + symbol_type + make_MAX_ROW_ERRORS (const location_type& l); + + static inline + symbol_type + make_VALID_LIFETIME (const location_type& l); + + static inline + symbol_type + make_MIN_VALID_LIFETIME (const location_type& l); + + static inline + symbol_type + make_MAX_VALID_LIFETIME (const location_type& l); + + static inline + symbol_type + make_RENEW_TIMER (const location_type& l); + + static inline + symbol_type + make_REBIND_TIMER (const location_type& l); + + static inline + symbol_type + make_CALCULATE_TEE_TIMES (const location_type& l); + + static inline + symbol_type + make_T1_PERCENT (const location_type& l); + + static inline + symbol_type + make_T2_PERCENT (const location_type& l); + + static inline + symbol_type + make_CACHE_THRESHOLD (const location_type& l); + + static inline + symbol_type + make_CACHE_MAX_AGE (const location_type& l); + + static inline + symbol_type + make_DECLINE_PROBATION_PERIOD (const location_type& l); + + static inline + symbol_type + make_SERVER_TAG (const location_type& l); + + static inline + symbol_type + make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l); + + static inline + symbol_type + make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l); + + static inline + symbol_type + make_DDNS_SEND_UPDATES (const location_type& l); + + static inline + symbol_type + make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l); + + static inline + symbol_type + make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l); + + static inline + symbol_type + make_DDNS_REPLACE_CLIENT_NAME (const location_type& l); + + static inline + symbol_type + make_DDNS_GENERATED_PREFIX (const location_type& l); + + static inline + symbol_type + make_DDNS_QUALIFYING_SUFFIX (const location_type& l); + + static inline + symbol_type + make_DDNS_UPDATE_ON_RENEW (const location_type& l); + + static inline + symbol_type + make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l); + + static inline + symbol_type + make_STORE_EXTENDED_INFO (const location_type& l); + + static inline + symbol_type + make_SUBNET4 (const location_type& l); + + static inline + symbol_type + make_SUBNET_4O6_INTERFACE (const location_type& l); + + static inline + symbol_type + make_SUBNET_4O6_INTERFACE_ID (const location_type& l); + + static inline + symbol_type + make_SUBNET_4O6_SUBNET (const location_type& l); + + static inline + symbol_type + make_OPTION_DEF (const location_type& l); + + static inline + symbol_type + make_OPTION_DATA (const location_type& l); + + static inline + symbol_type + make_NAME (const location_type& l); + + static inline + symbol_type + make_DATA (const location_type& l); + + static inline + symbol_type + make_CODE (const location_type& l); + + static inline + symbol_type + make_SPACE (const location_type& l); + + static inline + symbol_type + make_CSV_FORMAT (const location_type& l); + + static inline + symbol_type + make_ALWAYS_SEND (const location_type& l); + + static inline + symbol_type + make_RECORD_TYPES (const location_type& l); + + static inline + symbol_type + make_ENCAPSULATE (const location_type& l); + + static inline + symbol_type + make_ARRAY (const location_type& l); + + static inline + symbol_type + make_SHARED_NETWORKS (const location_type& l); + + static inline + symbol_type + make_POOLS (const location_type& l); + + static inline + symbol_type + make_POOL (const location_type& l); + + static inline + symbol_type + make_USER_CONTEXT (const location_type& l); + + static inline + symbol_type + make_COMMENT (const location_type& l); + + static inline + symbol_type + make_SUBNET (const location_type& l); + + static inline + symbol_type + make_INTERFACE (const location_type& l); + + static inline + symbol_type + make_ID (const location_type& l); + + static inline + symbol_type + make_RESERVATION_MODE (const location_type& l); + + static inline + symbol_type + make_DISABLED (const location_type& l); + + static inline + symbol_type + make_OUT_OF_POOL (const location_type& l); + + static inline + symbol_type + make_GLOBAL (const location_type& l); + + static inline + symbol_type + make_ALL (const location_type& l); + + static inline + symbol_type + make_HOST_RESERVATION_IDENTIFIERS (const location_type& l); + + static inline + symbol_type + make_CLIENT_CLASSES (const location_type& l); + + static inline + symbol_type + make_REQUIRE_CLIENT_CLASSES (const location_type& l); + + static inline + symbol_type + make_TEST (const location_type& l); + + static inline + symbol_type + make_ONLY_IF_REQUIRED (const location_type& l); + + static inline + symbol_type + make_CLIENT_CLASS (const location_type& l); + + static inline + symbol_type + make_RESERVATIONS (const location_type& l); + + static inline + symbol_type + make_DUID (const location_type& l); + + static inline + symbol_type + make_HW_ADDRESS (const location_type& l); + + static inline + symbol_type + make_CIRCUIT_ID (const location_type& l); + + static inline + symbol_type + make_CLIENT_ID (const location_type& l); + + static inline + symbol_type + make_HOSTNAME (const location_type& l); + + static inline + symbol_type + make_FLEX_ID (const location_type& l); + + static inline + symbol_type + make_RELAY (const location_type& l); + + static inline + symbol_type + make_IP_ADDRESS (const location_type& l); + + static inline + symbol_type + make_IP_ADDRESSES (const location_type& l); + + static inline + symbol_type + make_HOOKS_LIBRARIES (const location_type& l); + + static inline + symbol_type + make_LIBRARY (const location_type& l); + + static inline + symbol_type + make_PARAMETERS (const location_type& l); + + static inline + symbol_type + make_EXPIRED_LEASES_PROCESSING (const location_type& l); + + static inline + symbol_type + make_RECLAIM_TIMER_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_HOLD_RECLAIMED_TIME (const location_type& l); + + static inline + symbol_type + make_MAX_RECLAIM_LEASES (const location_type& l); + + static inline + symbol_type + make_MAX_RECLAIM_TIME (const location_type& l); + + static inline + symbol_type + make_UNWARNED_RECLAIM_CYCLES (const location_type& l); + + static inline + symbol_type + make_DHCP4O6_PORT (const location_type& l); + + static inline + symbol_type + make_DHCP_MULTI_THREADING (const location_type& l); + + static inline + symbol_type + make_ENABLE_MULTI_THREADING (const location_type& l); + + static inline + symbol_type + make_THREAD_POOL_SIZE (const location_type& l); + + static inline + symbol_type + make_PACKET_QUEUE_SIZE (const location_type& l); + + static inline + symbol_type + make_CONTROL_SOCKET (const location_type& l); + + static inline + symbol_type + make_SOCKET_TYPE (const location_type& l); + + static inline + symbol_type + make_SOCKET_NAME (const location_type& l); + + static inline + symbol_type + make_DHCP_QUEUE_CONTROL (const location_type& l); + + static inline + symbol_type + make_ENABLE_QUEUE (const location_type& l); + + static inline + symbol_type + make_QUEUE_TYPE (const location_type& l); + + static inline + symbol_type + make_CAPACITY (const location_type& l); + + static inline + symbol_type + make_DHCP_DDNS (const location_type& l); + + static inline + symbol_type + make_ENABLE_UPDATES (const location_type& l); + + static inline + symbol_type + make_QUALIFYING_SUFFIX (const location_type& l); + + static inline + symbol_type + make_SERVER_IP (const location_type& l); + + static inline + symbol_type + make_SERVER_PORT (const location_type& l); + + static inline + symbol_type + make_SENDER_IP (const location_type& l); + + static inline + symbol_type + make_SENDER_PORT (const location_type& l); + + static inline + symbol_type + make_MAX_QUEUE_SIZE (const location_type& l); + + static inline + symbol_type + make_NCR_PROTOCOL (const location_type& l); + + static inline + symbol_type + make_NCR_FORMAT (const location_type& l); + + static inline + symbol_type + make_OVERRIDE_NO_UPDATE (const location_type& l); + + static inline + symbol_type + make_OVERRIDE_CLIENT_UPDATE (const location_type& l); + + static inline + symbol_type + make_REPLACE_CLIENT_NAME (const location_type& l); + + static inline + symbol_type + make_GENERATED_PREFIX (const location_type& l); + + static inline + symbol_type + make_TCP (const location_type& l); + + static inline + symbol_type + make_JSON (const location_type& l); + + static inline + symbol_type + make_WHEN_PRESENT (const location_type& l); + + static inline + symbol_type + make_NEVER (const location_type& l); + + static inline + symbol_type + make_ALWAYS (const location_type& l); + + static inline + symbol_type + make_WHEN_NOT_PRESENT (const location_type& l); + + static inline + symbol_type + make_HOSTNAME_CHAR_SET (const location_type& l); + + static inline + symbol_type + make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l); + + static inline + symbol_type + make_IP_RESERVATIONS_UNIQUE (const location_type& l); + + static inline + symbol_type + make_LOGGERS (const location_type& l); + + static inline + symbol_type + make_OUTPUT_OPTIONS (const location_type& l); + + static inline + symbol_type + make_OUTPUT (const location_type& l); + + static inline + symbol_type + make_DEBUGLEVEL (const location_type& l); + + static inline + symbol_type + make_SEVERITY (const location_type& l); + + static inline + symbol_type + make_FLUSH (const location_type& l); + + static inline + symbol_type + make_MAXSIZE (const location_type& l); + + static inline + symbol_type + make_MAXVER (const location_type& l); + + static inline + symbol_type + make_PATTERN (const location_type& l); + + static inline + symbol_type + make_TOPLEVEL_JSON (const location_type& l); + + static inline + symbol_type + make_TOPLEVEL_DHCP4 (const location_type& l); + + static inline + symbol_type + make_SUB_DHCP4 (const location_type& l); + + static inline + symbol_type + make_SUB_INTERFACES4 (const location_type& l); + + static inline + symbol_type + make_SUB_SUBNET4 (const location_type& l); + + static inline + symbol_type + make_SUB_POOL4 (const location_type& l); + + static inline + symbol_type + make_SUB_RESERVATION (const location_type& l); + + static inline + symbol_type + make_SUB_OPTION_DEFS (const location_type& l); + + static inline + symbol_type + make_SUB_OPTION_DEF (const location_type& l); + + static inline + symbol_type + make_SUB_OPTION_DATA (const location_type& l); + + static inline + symbol_type + make_SUB_HOOKS_LIBRARY (const location_type& l); + + static inline + symbol_type + make_SUB_DHCP_DDNS (const location_type& l); + + static inline + symbol_type + make_SUB_CONFIG_CONTROL (const location_type& l); + + static inline + symbol_type + make_STRING (const std::string& v, const location_type& l); + + static inline + symbol_type + make_INTEGER (const int64_t& v, const location_type& l); + + static inline + symbol_type + make_FLOAT (const double& v, const location_type& l); + + static inline + symbol_type + make_BOOLEAN (const bool& v, const location_type& l); + + + /// Build a parser object. + Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg); + virtual ~Dhcp4Parser (); + + /// Parse. + /// \returns 0 iff parsing succeeded. + virtual int parse (); + +#if PARSER4_DEBUG + /// The current debugging stream. + std::ostream& debug_stream () const YY_ATTRIBUTE_PURE; + /// Set the current debugging stream. + void set_debug_stream (std::ostream &); + + /// Type for debugging levels. + typedef int debug_level_type; + /// The current debugging level. + debug_level_type debug_level () const YY_ATTRIBUTE_PURE; + /// Set the current debugging level. + void set_debug_level (debug_level_type l); #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SANITY_CHECKS (location_type l) - { - return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l)); - } -#else - static - symbol_type - make_SANITY_CHECKS (const location_type& l) - { - return symbol_type (token::TOKEN_SANITY_CHECKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LEASE_CHECKS (location_type l) - { - return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l)); - } -#else - static - symbol_type - make_LEASE_CHECKS (const location_type& l) - { - return symbol_type (token::TOKEN_LEASE_CHECKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ECHO_CLIENT_ID (location_type l) - { - return symbol_type (token::TOKEN_ECHO_CLIENT_ID, std::move (l)); - } -#else - static - symbol_type - make_ECHO_CLIENT_ID (const location_type& l) - { - return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MATCH_CLIENT_ID (location_type l) - { - return symbol_type (token::TOKEN_MATCH_CLIENT_ID, std::move (l)); - } -#else - static - symbol_type - make_MATCH_CLIENT_ID (const location_type& l) - { - return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_AUTHORITATIVE (location_type l) - { - return symbol_type (token::TOKEN_AUTHORITATIVE, std::move (l)); - } -#else - static - symbol_type - make_AUTHORITATIVE (const location_type& l) - { - return symbol_type (token::TOKEN_AUTHORITATIVE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NEXT_SERVER (location_type l) - { - return symbol_type (token::TOKEN_NEXT_SERVER, std::move (l)); - } -#else - static - symbol_type - make_NEXT_SERVER (const location_type& l) - { - return symbol_type (token::TOKEN_NEXT_SERVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_HOSTNAME (location_type l) - { - return symbol_type (token::TOKEN_SERVER_HOSTNAME, std::move (l)); - } -#else - static - symbol_type - make_SERVER_HOSTNAME (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_HOSTNAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_BOOT_FILE_NAME (location_type l) - { - return symbol_type (token::TOKEN_BOOT_FILE_NAME, std::move (l)); - } -#else - static - symbol_type - make_BOOT_FILE_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_BOOT_FILE_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LEASE_DATABASE (location_type l) - { - return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l)); - } -#else - static - symbol_type - make_LEASE_DATABASE (const location_type& l) - { - return symbol_type (token::TOKEN_LEASE_DATABASE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTS_DATABASE (location_type l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l)); - } -#else - static - symbol_type - make_HOSTS_DATABASE (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTS_DATABASES (location_type l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l)); - } -#else - static - symbol_type - make_HOSTS_DATABASES (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TYPE (location_type l) - { - return symbol_type (token::TOKEN_TYPE, std::move (l)); - } -#else - static - symbol_type - make_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MEMFILE (location_type l) - { - return symbol_type (token::TOKEN_MEMFILE, std::move (l)); - } -#else - static - symbol_type - make_MEMFILE (const location_type& l) - { - return symbol_type (token::TOKEN_MEMFILE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MYSQL (location_type l) - { - return symbol_type (token::TOKEN_MYSQL, std::move (l)); - } -#else - static - symbol_type - make_MYSQL (const location_type& l) - { - return symbol_type (token::TOKEN_MYSQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POSTGRESQL (location_type l) - { - return symbol_type (token::TOKEN_POSTGRESQL, std::move (l)); - } -#else - static - symbol_type - make_POSTGRESQL (const location_type& l) - { - return symbol_type (token::TOKEN_POSTGRESQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CQL (location_type l) - { - return symbol_type (token::TOKEN_CQL, std::move (l)); - } -#else - static - symbol_type - make_CQL (const location_type& l) - { - return symbol_type (token::TOKEN_CQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USER (location_type l) - { - return symbol_type (token::TOKEN_USER, std::move (l)); - } -#else - static - symbol_type - make_USER (const location_type& l) - { - return symbol_type (token::TOKEN_USER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PASSWORD (location_type l) - { - return symbol_type (token::TOKEN_PASSWORD, std::move (l)); - } -#else - static - symbol_type - make_PASSWORD (const location_type& l) - { - return symbol_type (token::TOKEN_PASSWORD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOST (location_type l) - { - return symbol_type (token::TOKEN_HOST, std::move (l)); - } -#else - static - symbol_type - make_HOST (const location_type& l) - { - return symbol_type (token::TOKEN_HOST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PORT (location_type l) - { - return symbol_type (token::TOKEN_PORT, std::move (l)); - } -#else - static - symbol_type - make_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PERSIST (location_type l) - { - return symbol_type (token::TOKEN_PERSIST, std::move (l)); - } -#else - static - symbol_type - make_PERSIST (const location_type& l) - { - return symbol_type (token::TOKEN_PERSIST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LFC_INTERVAL (location_type l) - { - return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l)); - } -#else - static - symbol_type - make_LFC_INTERVAL (const location_type& l) - { - return symbol_type (token::TOKEN_LFC_INTERVAL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_READONLY (location_type l) - { - return symbol_type (token::TOKEN_READONLY, std::move (l)); - } -#else - static - symbol_type - make_READONLY (const location_type& l) - { - return symbol_type (token::TOKEN_READONLY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONNECT_TIMEOUT (location_type l) - { - return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l)); - } -#else - static - symbol_type - make_CONNECT_TIMEOUT (const location_type& l) - { - return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTACT_POINTS (location_type l) - { - return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l)); - } -#else - static - symbol_type - make_CONTACT_POINTS (const location_type& l) - { - return symbol_type (token::TOKEN_CONTACT_POINTS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_KEYSPACE (location_type l) - { - return symbol_type (token::TOKEN_KEYSPACE, std::move (l)); - } -#else - static - symbol_type - make_KEYSPACE (const location_type& l) - { - return symbol_type (token::TOKEN_KEYSPACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONSISTENCY (location_type l) - { - return symbol_type (token::TOKEN_CONSISTENCY, std::move (l)); - } -#else - static - symbol_type - make_CONSISTENCY (const location_type& l) - { - return symbol_type (token::TOKEN_CONSISTENCY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERIAL_CONSISTENCY (location_type l) - { - return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l)); - } -#else - static - symbol_type - make_SERIAL_CONSISTENCY (const location_type& l) - { - return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECONNECT_TRIES (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECONNECT_TRIES (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECONNECT_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_RECONNECT_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REQUEST_TIMEOUT (location_type l) - { - return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l)); - } -#else - static - symbol_type - make_REQUEST_TIMEOUT (const location_type& l) - { - return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP_KEEPALIVE (location_type l) - { - return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l)); - } -#else - static - symbol_type - make_TCP_KEEPALIVE (const location_type& l) - { - return symbol_type (token::TOKEN_TCP_KEEPALIVE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP_NODELAY (location_type l) - { - return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l)); - } -#else - static - symbol_type - make_TCP_NODELAY (const location_type& l) - { - return symbol_type (token::TOKEN_TCP_NODELAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_ROW_ERRORS (location_type l) - { - return symbol_type (token::TOKEN_MAX_ROW_ERRORS, std::move (l)); - } -#else - static - symbol_type - make_MAX_ROW_ERRORS (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MIN_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_MIN_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_MAX_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RENEW_TIMER (location_type l) - { - return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l)); - } -#else - static - symbol_type - make_RENEW_TIMER (const location_type& l) - { - return symbol_type (token::TOKEN_RENEW_TIMER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REBIND_TIMER (location_type l) - { - return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l)); - } -#else - static - symbol_type - make_REBIND_TIMER (const location_type& l) - { - return symbol_type (token::TOKEN_REBIND_TIMER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CALCULATE_TEE_TIMES (location_type l) - { - return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l)); - } -#else - static - symbol_type - make_CALCULATE_TEE_TIMES (const location_type& l) - { - return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_T1_PERCENT (location_type l) - { - return symbol_type (token::TOKEN_T1_PERCENT, std::move (l)); - } -#else - static - symbol_type - make_T1_PERCENT (const location_type& l) - { - return symbol_type (token::TOKEN_T1_PERCENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_T2_PERCENT (location_type l) - { - return symbol_type (token::TOKEN_T2_PERCENT, std::move (l)); - } -#else - static - symbol_type - make_T2_PERCENT (const location_type& l) - { - return symbol_type (token::TOKEN_T2_PERCENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CACHE_THRESHOLD (location_type l) - { - return symbol_type (token::TOKEN_CACHE_THRESHOLD, std::move (l)); - } -#else - static - symbol_type - make_CACHE_THRESHOLD (const location_type& l) - { - return symbol_type (token::TOKEN_CACHE_THRESHOLD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CACHE_MAX_AGE (location_type l) - { - return symbol_type (token::TOKEN_CACHE_MAX_AGE, std::move (l)); - } -#else - static - symbol_type - make_CACHE_MAX_AGE (const location_type& l) - { - return symbol_type (token::TOKEN_CACHE_MAX_AGE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DECLINE_PROBATION_PERIOD (location_type l) - { - return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l)); - } -#else - static - symbol_type - make_DECLINE_PROBATION_PERIOD (const location_type& l) - { - return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_TAG (location_type l) - { - return symbol_type (token::TOKEN_SERVER_TAG, std::move (l)); - } -#else - static - symbol_type - make_SERVER_TAG (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_TAG, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_COUNT (location_type l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, std::move (l)); - } -#else - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_AGE (location_type l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, std::move (l)); - } -#else - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_SEND_UPDATES (location_type l) - { - return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, std::move (l)); - } -#else - static - symbol_type - make_DDNS_SEND_UPDATES (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_OVERRIDE_NO_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_OVERRIDE_CLIENT_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_REPLACE_CLIENT_NAME (location_type l) - { - return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, std::move (l)); - } -#else - static - symbol_type - make_DDNS_REPLACE_CLIENT_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_GENERATED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_DDNS_GENERATED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_QUALIFYING_SUFFIX (location_type l) - { - return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, std::move (l)); - } -#else - static - symbol_type - make_DDNS_QUALIFYING_SUFFIX (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_UPDATE_ON_RENEW (location_type l) - { - return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, std::move (l)); - } -#else - static - symbol_type - make_DDNS_UPDATE_ON_RENEW (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STORE_EXTENDED_INFO (location_type l) - { - return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l)); - } -#else - static - symbol_type - make_STORE_EXTENDED_INFO (const location_type& l) - { - return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET4 (location_type l) - { - return symbol_type (token::TOKEN_SUBNET4, std::move (l)); - } -#else - static - symbol_type - make_SUBNET4 (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET_4O6_INTERFACE (location_type l) - { - return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, std::move (l)); - } -#else - static - symbol_type - make_SUBNET_4O6_INTERFACE (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET_4O6_INTERFACE_ID (location_type l) - { - return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, std::move (l)); - } -#else - static - symbol_type - make_SUBNET_4O6_INTERFACE_ID (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET_4O6_SUBNET (location_type l) - { - return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, std::move (l)); - } -#else - static - symbol_type - make_SUBNET_4O6_SUBNET (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OPTION_DEF (location_type l) - { - return symbol_type (token::TOKEN_OPTION_DEF, std::move (l)); - } -#else - static - symbol_type - make_OPTION_DEF (const location_type& l) - { - return symbol_type (token::TOKEN_OPTION_DEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OPTION_DATA (location_type l) - { - return symbol_type (token::TOKEN_OPTION_DATA, std::move (l)); - } -#else - static - symbol_type - make_OPTION_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_OPTION_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NAME (location_type l) - { - return symbol_type (token::TOKEN_NAME, std::move (l)); - } -#else - static - symbol_type - make_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DATA (location_type l) - { - return symbol_type (token::TOKEN_DATA, std::move (l)); - } -#else - static - symbol_type - make_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CODE (location_type l) - { - return symbol_type (token::TOKEN_CODE, std::move (l)); - } -#else - static - symbol_type - make_CODE (const location_type& l) - { - return symbol_type (token::TOKEN_CODE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SPACE (location_type l) - { - return symbol_type (token::TOKEN_SPACE, std::move (l)); - } -#else - static - symbol_type - make_SPACE (const location_type& l) - { - return symbol_type (token::TOKEN_SPACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CSV_FORMAT (location_type l) - { - return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l)); - } -#else - static - symbol_type - make_CSV_FORMAT (const location_type& l) - { - return symbol_type (token::TOKEN_CSV_FORMAT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALWAYS_SEND (location_type l) - { - return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l)); - } -#else - static - symbol_type - make_ALWAYS_SEND (const location_type& l) - { - return symbol_type (token::TOKEN_ALWAYS_SEND, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECORD_TYPES (location_type l) - { - return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l)); - } -#else - static - symbol_type - make_RECORD_TYPES (const location_type& l) - { - return symbol_type (token::TOKEN_RECORD_TYPES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENCAPSULATE (location_type l) - { - return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l)); - } -#else - static - symbol_type - make_ENCAPSULATE (const location_type& l) - { - return symbol_type (token::TOKEN_ENCAPSULATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ARRAY (location_type l) - { - return symbol_type (token::TOKEN_ARRAY, std::move (l)); - } -#else - static - symbol_type - make_ARRAY (const location_type& l) - { - return symbol_type (token::TOKEN_ARRAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SHARED_NETWORKS (location_type l) - { - return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l)); - } -#else - static - symbol_type - make_SHARED_NETWORKS (const location_type& l) - { - return symbol_type (token::TOKEN_SHARED_NETWORKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POOLS (location_type l) - { - return symbol_type (token::TOKEN_POOLS, std::move (l)); - } -#else - static - symbol_type - make_POOLS (const location_type& l) - { - return symbol_type (token::TOKEN_POOLS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POOL (location_type l) - { - return symbol_type (token::TOKEN_POOL, std::move (l)); - } -#else - static - symbol_type - make_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USER_CONTEXT (location_type l) - { - return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l)); - } -#else - static - symbol_type - make_USER_CONTEXT (const location_type& l) - { - return symbol_type (token::TOKEN_USER_CONTEXT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COMMENT (location_type l) - { - return symbol_type (token::TOKEN_COMMENT, std::move (l)); - } -#else - static - symbol_type - make_COMMENT (const location_type& l) - { - return symbol_type (token::TOKEN_COMMENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET (location_type l) - { - return symbol_type (token::TOKEN_SUBNET, std::move (l)); - } -#else - static - symbol_type - make_SUBNET (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACE (location_type l) - { - return symbol_type (token::TOKEN_INTERFACE, std::move (l)); - } -#else - static - symbol_type - make_INTERFACE (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ID (location_type l) - { - return symbol_type (token::TOKEN_ID, std::move (l)); - } -#else - static - symbol_type - make_ID (const location_type& l) - { - return symbol_type (token::TOKEN_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RESERVATION_MODE (location_type l) - { - return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l)); - } -#else - static - symbol_type - make_RESERVATION_MODE (const location_type& l) - { - return symbol_type (token::TOKEN_RESERVATION_MODE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DISABLED (location_type l) - { - return symbol_type (token::TOKEN_DISABLED, std::move (l)); - } -#else - static - symbol_type - make_DISABLED (const location_type& l) - { - return symbol_type (token::TOKEN_DISABLED, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUT_OF_POOL (location_type l) - { - return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l)); - } -#else - static - symbol_type - make_OUT_OF_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_OUT_OF_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_GLOBAL (location_type l) - { - return symbol_type (token::TOKEN_GLOBAL, std::move (l)); - } -#else - static - symbol_type - make_GLOBAL (const location_type& l) - { - return symbol_type (token::TOKEN_GLOBAL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALL (location_type l) - { - return symbol_type (token::TOKEN_ALL, std::move (l)); - } -#else - static - symbol_type - make_ALL (const location_type& l) - { - return symbol_type (token::TOKEN_ALL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOST_RESERVATION_IDENTIFIERS (location_type l) - { - return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l)); - } -#else - static - symbol_type - make_HOST_RESERVATION_IDENTIFIERS (const location_type& l) - { - return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_CLASSES (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_CLASSES (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_CLASSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REQUIRE_CLIENT_CLASSES (location_type l) - { - return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l)); - } -#else - static - symbol_type - make_REQUIRE_CLIENT_CLASSES (const location_type& l) - { - return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TEST (location_type l) - { - return symbol_type (token::TOKEN_TEST, std::move (l)); - } -#else - static - symbol_type - make_TEST (const location_type& l) - { - return symbol_type (token::TOKEN_TEST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ONLY_IF_REQUIRED (location_type l) - { - return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l)); - } -#else - static - symbol_type - make_ONLY_IF_REQUIRED (const location_type& l) - { - return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_CLASS (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_CLASS (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_CLASS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RESERVATIONS (location_type l) - { - return symbol_type (token::TOKEN_RESERVATIONS, std::move (l)); - } -#else - static - symbol_type - make_RESERVATIONS (const location_type& l) - { - return symbol_type (token::TOKEN_RESERVATIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DUID (location_type l) - { - return symbol_type (token::TOKEN_DUID, std::move (l)); - } -#else - static - symbol_type - make_DUID (const location_type& l) - { - return symbol_type (token::TOKEN_DUID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HW_ADDRESS (location_type l) - { - return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l)); - } -#else - static - symbol_type - make_HW_ADDRESS (const location_type& l) - { - return symbol_type (token::TOKEN_HW_ADDRESS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CIRCUIT_ID (location_type l) - { - return symbol_type (token::TOKEN_CIRCUIT_ID, std::move (l)); - } -#else - static - symbol_type - make_CIRCUIT_ID (const location_type& l) - { - return symbol_type (token::TOKEN_CIRCUIT_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_ID (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_ID, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_ID (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLEX_ID (location_type l) - { - return symbol_type (token::TOKEN_FLEX_ID, std::move (l)); - } -#else - static - symbol_type - make_FLEX_ID (const location_type& l) - { - return symbol_type (token::TOKEN_FLEX_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RELAY (location_type l) - { - return symbol_type (token::TOKEN_RELAY, std::move (l)); - } -#else - static - symbol_type - make_RELAY (const location_type& l) - { - return symbol_type (token::TOKEN_RELAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_ADDRESS (location_type l) - { - return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l)); - } -#else - static - symbol_type - make_IP_ADDRESS (const location_type& l) - { - return symbol_type (token::TOKEN_IP_ADDRESS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_ADDRESSES (location_type l) - { - return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l)); - } -#else - static - symbol_type - make_IP_ADDRESSES (const location_type& l) - { - return symbol_type (token::TOKEN_IP_ADDRESSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOOKS_LIBRARIES (location_type l) - { - return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l)); - } -#else - static - symbol_type - make_HOOKS_LIBRARIES (const location_type& l) - { - return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LIBRARY (location_type l) - { - return symbol_type (token::TOKEN_LIBRARY, std::move (l)); - } -#else - static - symbol_type - make_LIBRARY (const location_type& l) - { - return symbol_type (token::TOKEN_LIBRARY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARAMETERS (location_type l) - { - return symbol_type (token::TOKEN_PARAMETERS, std::move (l)); - } -#else - static - symbol_type - make_PARAMETERS (const location_type& l) - { - return symbol_type (token::TOKEN_PARAMETERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXPIRED_LEASES_PROCESSING (location_type l) - { - return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l)); - } -#else - static - symbol_type - make_EXPIRED_LEASES_PROCESSING (const location_type& l) - { - return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECLAIM_TIMER_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_RECLAIM_TIMER_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOLD_RECLAIMED_TIME (location_type l) - { - return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l)); - } -#else - static - symbol_type - make_HOLD_RECLAIMED_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECLAIM_LEASES (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECLAIM_LEASES (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECLAIM_TIME (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECLAIM_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_UNWARNED_RECLAIM_CYCLES (location_type l) - { - return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l)); - } -#else - static - symbol_type - make_UNWARNED_RECLAIM_CYCLES (const location_type& l) - { - return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP4O6_PORT (location_type l) - { - return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l)); - } -#else - static - symbol_type - make_DHCP4O6_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP4O6_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_MULTI_THREADING (location_type l) - { - return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, std::move (l)); - } -#else - static - symbol_type - make_DHCP_MULTI_THREADING (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_MULTI_THREADING (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_MULTI_THREADING (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_THREAD_POOL_SIZE (location_type l) - { - return symbol_type (token::TOKEN_THREAD_POOL_SIZE, std::move (l)); - } -#else - static - symbol_type - make_THREAD_POOL_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PACKET_QUEUE_SIZE (location_type l) - { - return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, std::move (l)); - } -#else - static - symbol_type - make_PACKET_QUEUE_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTROL_SOCKET (location_type l) - { - return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l)); - } -#else - static - symbol_type - make_CONTROL_SOCKET (const location_type& l) - { - return symbol_type (token::TOKEN_CONTROL_SOCKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SOCKET_TYPE (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SOCKET_NAME (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_QUEUE_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_DHCP_QUEUE_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_QUEUE (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_QUEUE, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_QUEUE (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_QUEUE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_QUEUE_TYPE (location_type l) - { - return symbol_type (token::TOKEN_QUEUE_TYPE, std::move (l)); - } -#else - static - symbol_type - make_QUEUE_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_QUEUE_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CAPACITY (location_type l) - { - return symbol_type (token::TOKEN_CAPACITY, std::move (l)); - } -#else - static - symbol_type - make_CAPACITY (const location_type& l) - { - return symbol_type (token::TOKEN_CAPACITY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_DDNS (location_type l) - { - return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l)); - } -#else - static - symbol_type - make_DHCP_DDNS (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_DDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_UPDATES (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_UPDATES (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_UPDATES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_QUALIFYING_SUFFIX (location_type l) - { - return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l)); - } -#else - static - symbol_type - make_QUALIFYING_SUFFIX (const location_type& l) - { - return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_IP (location_type l) - { - return symbol_type (token::TOKEN_SERVER_IP, std::move (l)); - } -#else - static - symbol_type - make_SERVER_IP (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_IP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_PORT (location_type l) - { - return symbol_type (token::TOKEN_SERVER_PORT, std::move (l)); - } -#else - static - symbol_type - make_SERVER_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SENDER_IP (location_type l) - { - return symbol_type (token::TOKEN_SENDER_IP, std::move (l)); - } -#else - static - symbol_type - make_SENDER_IP (const location_type& l) - { - return symbol_type (token::TOKEN_SENDER_IP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SENDER_PORT (location_type l) - { - return symbol_type (token::TOKEN_SENDER_PORT, std::move (l)); - } -#else - static - symbol_type - make_SENDER_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_SENDER_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_QUEUE_SIZE (location_type l) - { - return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l)); - } -#else - static - symbol_type - make_MAX_QUEUE_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NCR_PROTOCOL (location_type l) - { - return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l)); - } -#else - static - symbol_type - make_NCR_PROTOCOL (const location_type& l) - { - return symbol_type (token::TOKEN_NCR_PROTOCOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NCR_FORMAT (location_type l) - { - return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l)); - } -#else - static - symbol_type - make_NCR_FORMAT (const location_type& l) - { - return symbol_type (token::TOKEN_NCR_FORMAT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OVERRIDE_NO_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_OVERRIDE_NO_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OVERRIDE_CLIENT_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_OVERRIDE_CLIENT_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REPLACE_CLIENT_NAME (location_type l) - { - return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l)); - } -#else - static - symbol_type - make_REPLACE_CLIENT_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_GENERATED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_GENERATED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_GENERATED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP (location_type l) - { - return symbol_type (token::TOKEN_TCP, std::move (l)); - } -#else - static - symbol_type - make_TCP (const location_type& l) - { - return symbol_type (token::TOKEN_TCP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_JSON (location_type l) - { - return symbol_type (token::TOKEN_JSON, std::move (l)); - } -#else - static - symbol_type - make_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_WHEN_PRESENT (location_type l) - { - return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l)); - } -#else - static - symbol_type - make_WHEN_PRESENT (const location_type& l) - { - return symbol_type (token::TOKEN_WHEN_PRESENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NEVER (location_type l) - { - return symbol_type (token::TOKEN_NEVER, std::move (l)); - } -#else - static - symbol_type - make_NEVER (const location_type& l) - { - return symbol_type (token::TOKEN_NEVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALWAYS (location_type l) - { - return symbol_type (token::TOKEN_ALWAYS, std::move (l)); - } -#else - static - symbol_type - make_ALWAYS (const location_type& l) - { - return symbol_type (token::TOKEN_ALWAYS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_WHEN_NOT_PRESENT (location_type l) - { - return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l)); - } -#else - static - symbol_type - make_WHEN_NOT_PRESENT (const location_type& l) - { - return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME_CHAR_SET (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME_CHAR_SET (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME_CHAR_REPLACEMENT (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_RESERVATIONS_UNIQUE (location_type l) - { - return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, std::move (l)); - } -#else - static - symbol_type - make_IP_RESERVATIONS_UNIQUE (const location_type& l) - { - return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LOGGERS (location_type l) - { - return symbol_type (token::TOKEN_LOGGERS, std::move (l)); - } -#else - static - symbol_type - make_LOGGERS (const location_type& l) - { - return symbol_type (token::TOKEN_LOGGERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTPUT_OPTIONS (location_type l) - { - return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l)); - } -#else - static - symbol_type - make_OUTPUT_OPTIONS (const location_type& l) - { - return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTPUT (location_type l) - { - return symbol_type (token::TOKEN_OUTPUT, std::move (l)); - } -#else - static - symbol_type - make_OUTPUT (const location_type& l) - { - return symbol_type (token::TOKEN_OUTPUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DEBUGLEVEL (location_type l) - { - return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l)); - } -#else - static - symbol_type - make_DEBUGLEVEL (const location_type& l) - { - return symbol_type (token::TOKEN_DEBUGLEVEL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SEVERITY (location_type l) - { - return symbol_type (token::TOKEN_SEVERITY, std::move (l)); - } -#else - static - symbol_type - make_SEVERITY (const location_type& l) - { - return symbol_type (token::TOKEN_SEVERITY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLUSH (location_type l) - { - return symbol_type (token::TOKEN_FLUSH, std::move (l)); - } -#else - static - symbol_type - make_FLUSH (const location_type& l) - { - return symbol_type (token::TOKEN_FLUSH, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAXSIZE (location_type l) - { - return symbol_type (token::TOKEN_MAXSIZE, std::move (l)); - } -#else - static - symbol_type - make_MAXSIZE (const location_type& l) - { - return symbol_type (token::TOKEN_MAXSIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAXVER (location_type l) - { - return symbol_type (token::TOKEN_MAXVER, std::move (l)); - } -#else - static - symbol_type - make_MAXVER (const location_type& l) - { - return symbol_type (token::TOKEN_MAXVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PATTERN (location_type l) - { - return symbol_type (token::TOKEN_PATTERN, std::move (l)); - } -#else - static - symbol_type - make_PATTERN (const location_type& l) - { - return symbol_type (token::TOKEN_PATTERN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TOPLEVEL_JSON (location_type l) - { - return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l)); - } -#else - static - symbol_type - make_TOPLEVEL_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_TOPLEVEL_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TOPLEVEL_DHCP4 (location_type l) - { - return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, std::move (l)); - } -#else - static - symbol_type - make_TOPLEVEL_DHCP4 (const location_type& l) - { - return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_DHCP4 (location_type l) - { - return symbol_type (token::TOKEN_SUB_DHCP4, std::move (l)); - } -#else - static - symbol_type - make_SUB_DHCP4 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_DHCP4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_INTERFACES4 (location_type l) - { - return symbol_type (token::TOKEN_SUB_INTERFACES4, std::move (l)); - } -#else - static - symbol_type - make_SUB_INTERFACES4 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_INTERFACES4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_SUBNET4 (location_type l) - { - return symbol_type (token::TOKEN_SUB_SUBNET4, std::move (l)); - } -#else - static - symbol_type - make_SUB_SUBNET4 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_SUBNET4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_POOL4 (location_type l) - { - return symbol_type (token::TOKEN_SUB_POOL4, std::move (l)); - } -#else - static - symbol_type - make_SUB_POOL4 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_POOL4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_RESERVATION (location_type l) - { - return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l)); - } -#else - static - symbol_type - make_SUB_RESERVATION (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_RESERVATION, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DEFS (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DEFS (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DEF (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DEF (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DATA (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_HOOKS_LIBRARY (location_type l) - { - return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l)); - } -#else - static - symbol_type - make_SUB_HOOKS_LIBRARY (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_DHCP_DDNS (location_type l) - { - return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l)); - } -#else - static - symbol_type - make_SUB_DHCP_DDNS (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_CONFIG_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_SUB_CONFIG_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STRING (std::string v, location_type l) - { - return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_STRING (const std::string& v, const location_type& l) - { - return symbol_type (token::TOKEN_STRING, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTEGER (int64_t v, location_type l) - { - return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_INTEGER (const int64_t& v, const location_type& l) - { - return symbol_type (token::TOKEN_INTEGER, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLOAT (double v, location_type l) - { - return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FLOAT (const double& v, const location_type& l) - { - return symbol_type (token::TOKEN_FLOAT, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_BOOLEAN (bool v, location_type l) - { - return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_BOOLEAN (const bool& v, const location_type& l) - { - return symbol_type (token::TOKEN_BOOLEAN, v, l); - } + + /// Report a syntax error. + /// \param loc where the syntax error is found. + /// \param msg a description of the syntax error. + virtual void error (const location_type& loc, const std::string& msg); + + /// Report a syntax error. + void error (const syntax_error& err); + + private: + /// This class is not copyable. + Dhcp4Parser (const Dhcp4Parser&); + Dhcp4Parser& operator= (const Dhcp4Parser&); + + /// State numbers. + typedef int state_type; + + /// Generate an error message. + /// \param yystate the state where the error occurred. + /// \param yyla the lookahead token. + virtual std::string yysyntax_error_ (state_type yystate, + const symbol_type& yyla) const; + + /// Compute post-reduction state. + /// \param yystate the current state + /// \param yysym the nonterminal to push on the stack + state_type yy_lr_goto_state_ (state_type yystate, int yysym); + + /// Whether the given \c yypact_ value indicates a defaulted state. + /// \param yyvalue the value to check + static bool yy_pact_value_is_default_ (int yyvalue); + + /// Whether the given \c yytable_ value indicates a syntax error. + /// \param yyvalue the value to check + static bool yy_table_value_is_error_ (int yyvalue); + + static const short int yypact_ninf_; + static const signed char yytable_ninf_; + + /// Convert a scanner token number \a t to a symbol number. + static token_number_type yytranslate_ (token_type t); + + // Tables. + // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + // STATE-NUM. + static const short int yypact_[]; + + // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + // Performed when YYTABLE does not specify something else to do. Zero + // means the default is an error. + static const unsigned short int yydefact_[]; + + // YYPGOTO[NTERM-NUM]. + static const short int yypgoto_[]; + + // YYDEFGOTO[NTERM-NUM]. + static const short int yydefgoto_[]; + + // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + // positive, shift that token. If negative, reduce the rule whose + // number is the opposite. If YYTABLE_NINF, syntax error. + static const unsigned short int yytable_[]; + + static const short int yycheck_[]; + + // YYSTOS[STATE-NUM] -- The (internal number of the) accessing + // symbol of state STATE-NUM. + static const unsigned short int yystos_[]; + + // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. + static const unsigned short int yyr1_[]; + + // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. + static const unsigned char yyr2_[]; + + + /// Convert the symbol name \a n to a form suitable for a diagnostic. + static std::string yytnamerr_ (const char *n); + + + /// For a symbol, its name in clear. + static const char* const yytname_[]; +#if PARSER4_DEBUG + // YYRLINE[YYN] -- Source line where rule number YYN was defined. + static const unsigned short int yyrline_[]; + /// Report on the debug stream that the rule \a r is going to be reduced. + virtual void yy_reduce_print_ (int r); + /// Print the state stack on the debug stream. + virtual void yystack_print_ (); + + // Debugging. + int yydebug_; + std::ostream* yycdebug_; + + /// \brief Display a symbol type, value and location. + /// \param yyo The output stream. + /// \param yysym The symbol. + template + void yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const; #endif + /// \brief Reclaim the memory associated to a symbol. + /// \param yymsg Why this token is reclaimed. + /// If null, print nothing. + /// \param yysym The symbol. + template + void yy_destroy_ (const char* yymsg, basic_symbol& yysym) const; + + private: + /// Type access provider for state based symbols. + struct by_state + { + /// Default constructor. + by_state (); + + /// The symbol type as needed by the constructor. + typedef state_type kind_type; + + /// Constructor. + by_state (kind_type s); + + /// Copy constructor. + by_state (const by_state& other); + + /// Record that this symbol is empty. + void clear (); + + /// Steal the symbol type from \a that. + void move (by_state& that); + + /// The (internal) type number (corresponding to \a state). + /// \a empty_symbol when empty. + symbol_number_type type_get () const; + + /// The state number used to denote an empty symbol. + enum { empty_state = -1 }; + + /// The state. + /// \a empty when empty. + state_type state; + }; + + /// "Internal" symbol: element of the stack. + struct stack_symbol_type : basic_symbol + { + /// Superclass. + typedef basic_symbol super_type; + /// Construct an empty symbol. + stack_symbol_type (); + /// Steal the contents from \a sym to build this. + stack_symbol_type (state_type s, symbol_type& sym); + /// Assignment, needed by push_back. + stack_symbol_type& operator= (const stack_symbol_type& that); + }; + + /// Stack type. + typedef stack stack_type; + + /// The stack. + stack_type yystack_; + + /// Push a new state on the stack. + /// \param m a debug message to display + /// if null, no trace is output. + /// \param s the symbol + /// \warning the contents of \a s.value is stolen. + void yypush_ (const char* m, stack_symbol_type& s); + + /// Push a new look ahead token on the state on the stack. + /// \param m a debug message to display + /// if null, no trace is output. + /// \param s the state + /// \param sym the symbol (for its value and location). + /// \warning the contents of \a s.value is stolen. + void yypush_ (const char* m, state_type s, symbol_type& sym); + + /// Pop \a n symbols the three stacks. + void yypop_ (unsigned int n = 1); + + /// Constants. + enum + { + yyeof_ = 0, + yylast_ = 1193, ///< Last index in yytable_. + yynnts_ = 407, ///< Number of nonterminal symbols. + yyfinal_ = 28, ///< Termination state number. + yyterror_ = 1, + yyerrcode_ = 256, + yyntokens_ = 195 ///< Number of tokens. + }; + + + // User arguments. + isc::dhcp::Parser4Context& ctx; + }; + + // Symbol number corresponding to token number t. + inline + Dhcp4Parser::token_number_type + Dhcp4Parser::yytranslate_ (token_type t) + { + static + const token_number_type + translate_table[] = + { + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194 + }; + const unsigned int user_token_number_max_ = 449; + const token_number_type undef_token_ = 2; + + if (static_cast(t) <= yyeof_) + return yyeof_; + else if (static_cast (t) <= user_token_number_max_) + return translate_table[t]; + else + return undef_token_; + } + + inline + Dhcp4Parser::syntax_error::syntax_error (const location_type& l, const std::string& m) + : std::runtime_error (m) + , location (l) + {} + + // basic_symbol. + template + inline + Dhcp4Parser::basic_symbol::basic_symbol () + : value () + {} + + template + inline + Dhcp4Parser::basic_symbol::basic_symbol (const basic_symbol& other) + : Base (other) + , value () + , location (other.location) + { + switch (other.type_get ()) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value + value.copy< ElementPtr > (other.value); + break; + + case 194: // "boolean" + value.copy< bool > (other.value); + break; + + case 193: // "floating point" + value.copy< double > (other.value); + break; + + case 192: // "integer" + value.copy< int64_t > (other.value); + break; + + case 191: // "constant string" + value.copy< std::string > (other.value); + break; + + default: + break; + } + + } + + + template + inline + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l) + : Base (t) + , value () + , location (l) + { + (void) v; + switch (this->type_get ()) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value + value.copy< ElementPtr > (v); + break; + + case 194: // "boolean" + value.copy< bool > (v); + break; + + case 193: // "floating point" + value.copy< double > (v); + break; + + case 192: // "integer" + value.copy< int64_t > (v); + break; + + case 191: // "constant string" + value.copy< std::string > (v); + break; + + default: + break; + } +} + + + // Implementation of basic_symbol constructor for each type. + + template + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const location_type& l) + : Base (t) + , value () + , location (l) + {} + + template + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const double v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + + template + inline + Dhcp4Parser::basic_symbol::~basic_symbol () + { + clear (); + } + + template + inline + void + Dhcp4Parser::basic_symbol::clear () + { + // User destructor. + symbol_number_type yytype = this->type_get (); + basic_symbol& yysym = *this; + (void) yysym; + switch (yytype) + { + default: + break; + } + + // Type destructor. + switch (yytype) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value + value.template destroy< ElementPtr > (); + break; + + case 194: // "boolean" + value.template destroy< bool > (); + break; + + case 193: // "floating point" + value.template destroy< double > (); + break; + + case 192: // "integer" + value.template destroy< int64_t > (); + break; + + case 191: // "constant string" + value.template destroy< std::string > (); + break; + + default: + break; + } + + Base::clear (); + } + + template + inline + bool + Dhcp4Parser::basic_symbol::empty () const + { + return Base::type_get () == empty_symbol; + } + + template + inline + void + Dhcp4Parser::basic_symbol::move (basic_symbol& s) + { + super_type::move(s); + switch (this->type_get ()) + { + case 210: // value + case 214: // map_value + case 255: // ddns_replace_client_name_value + case 280: // socket_type + case 283: // outbound_interface_value + case 305: // db_type + case 399: // hr_mode + case 554: // ncr_protocol_value + value.move< ElementPtr > (s.value); + break; + + case 194: // "boolean" + value.move< bool > (s.value); + break; + + case 193: // "floating point" + value.move< double > (s.value); + break; + + case 192: // "integer" + value.move< int64_t > (s.value); + break; + + case 191: // "constant string" + value.move< std::string > (s.value); + break; + + default: + break; + } + + location = s.location; + } + + // by_type. + inline + Dhcp4Parser::by_type::by_type () + : type (empty_symbol) + {} + + inline + Dhcp4Parser::by_type::by_type (const by_type& other) + : type (other.type) + {} + + inline + Dhcp4Parser::by_type::by_type (token_type t) + : type (yytranslate_ (t)) + {} + + inline + void + Dhcp4Parser::by_type::clear () + { + type = empty_symbol; + } + + inline + void + Dhcp4Parser::by_type::move (by_type& that) + { + type = that.type; + that.clear (); + } + + inline + int + Dhcp4Parser::by_type::type_get () const + { + return type; + } + + inline + Dhcp4Parser::token_type + Dhcp4Parser::by_type::token () const + { + // YYTOKNUM[NUM] -- (External) token number corresponding to the + // (internal) symbol number NUM (which must be that of a token). */ + static + const unsigned short int + yytoken_number_[] = + { + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449 + }; + return static_cast (yytoken_number_[type]); + } + // Implementation of make_symbol for each symbol type. + Dhcp4Parser::symbol_type + Dhcp4Parser::make_END (const location_type& l) + { + return symbol_type (token::TOKEN_END, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_COMMA (const location_type& l) + { + return symbol_type (token::TOKEN_COMMA, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_COLON (const location_type& l) + { + return symbol_type (token::TOKEN_COLON, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LSQUARE_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_LSQUARE_BRACKET, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RSQUARE_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_RSQUARE_BRACKET, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LCURLY_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_LCURLY_BRACKET, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RCURLY_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_RCURLY_BRACKET, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_NULL_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_NULL_TYPE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DHCP4 (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP4, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONFIG_CONTROL (const location_type& l) + { + return symbol_type (token::TOKEN_CONFIG_CONTROL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONFIG_DATABASES (const location_type& l) + { + return symbol_type (token::TOKEN_CONFIG_DATABASES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONFIG_FETCH_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_INTERFACES_CONFIG (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACES_CONFIG, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_INTERFACES (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DHCP_SOCKET_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RAW (const location_type& l) + { + return symbol_type (token::TOKEN_RAW, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_UDP (const location_type& l) + { + return symbol_type (token::TOKEN_UDP, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OUTBOUND_INTERFACE (const location_type& l) + { + return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SAME_AS_INBOUND (const location_type& l) + { + return symbol_type (token::TOKEN_SAME_AS_INBOUND, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_USE_ROUTING (const location_type& l) + { + return symbol_type (token::TOKEN_USE_ROUTING, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RE_DETECT (const location_type& l) + { + return symbol_type (token::TOKEN_RE_DETECT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SANITY_CHECKS (const location_type& l) + { + return symbol_type (token::TOKEN_SANITY_CHECKS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LEASE_CHECKS (const location_type& l) + { + return symbol_type (token::TOKEN_LEASE_CHECKS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l) + { + return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MATCH_CLIENT_ID (const location_type& l) + { + return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_AUTHORITATIVE (const location_type& l) + { + return symbol_type (token::TOKEN_AUTHORITATIVE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_NEXT_SERVER (const location_type& l) + { + return symbol_type (token::TOKEN_NEXT_SERVER, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SERVER_HOSTNAME (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_HOSTNAME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_BOOT_FILE_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_BOOT_FILE_NAME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LEASE_DATABASE (const location_type& l) + { + return symbol_type (token::TOKEN_LEASE_DATABASE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOSTS_DATABASE (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTS_DATABASE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOSTS_DATABASES (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTS_DATABASES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_TYPE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MEMFILE (const location_type& l) + { + return symbol_type (token::TOKEN_MEMFILE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MYSQL (const location_type& l) + { + return symbol_type (token::TOKEN_MYSQL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_POSTGRESQL (const location_type& l) + { + return symbol_type (token::TOKEN_POSTGRESQL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CQL (const location_type& l) + { + return symbol_type (token::TOKEN_CQL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_USER (const location_type& l) + { + return symbol_type (token::TOKEN_USER, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_PASSWORD (const location_type& l) + { + return symbol_type (token::TOKEN_PASSWORD, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOST (const location_type& l) + { + return symbol_type (token::TOKEN_HOST, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_PORT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_PERSIST (const location_type& l) + { + return symbol_type (token::TOKEN_PERSIST, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LFC_INTERVAL (const location_type& l) + { + return symbol_type (token::TOKEN_LFC_INTERVAL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_READONLY (const location_type& l) + { + return symbol_type (token::TOKEN_READONLY, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONNECT_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONTACT_POINTS (const location_type& l) + { + return symbol_type (token::TOKEN_CONTACT_POINTS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_KEYSPACE (const location_type& l) + { + return symbol_type (token::TOKEN_KEYSPACE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONSISTENCY (const location_type& l) + { + return symbol_type (token::TOKEN_CONSISTENCY, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SERIAL_CONSISTENCY (const location_type& l) + { + return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAX_RECONNECT_TRIES (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RECONNECT_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_REQUEST_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l); + } - class context - { - public: - context (const Dhcp4Parser& yyparser, const symbol_type& yyla); - const symbol_type& lookahead () const { return yyla_; } - symbol_kind_type token () const { return yyla_.kind (); } - const location_type& location () const { return yyla_.location; } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l) + { + return symbol_type (token::TOKEN_TCP_KEEPALIVE, l); + } - /// Put in YYARG at most YYARGN of the expected tokens, and return the - /// number of tokens stored in YYARG. If YYARG is null, return the - /// number of expected tokens (guaranteed to be less than YYNTOKENS). - int expected_tokens (symbol_kind_type yyarg[], int yyargn) const; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TCP_NODELAY (const location_type& l) + { + return symbol_type (token::TOKEN_TCP_NODELAY, l); + } - private: - const Dhcp4Parser& yyparser_; - const symbol_type& yyla_; - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAX_ROW_ERRORS (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l); + } - private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - Dhcp4Parser (const Dhcp4Parser&); - /// Non copyable. - Dhcp4Parser& operator= (const Dhcp4Parser&); -#endif + Dhcp4Parser::symbol_type + Dhcp4Parser::make_VALID_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_VALID_LIFETIME, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MIN_VALID_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l); + } - /// Stored state numbers (used for stacks). - typedef short state_type; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAX_VALID_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l); + } - /// The arguments of the error message. - int yy_syntax_error_arguments_ (const context& yyctx, - symbol_kind_type yyarg[], int yyargn) const; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RENEW_TIMER (const location_type& l) + { + return symbol_type (token::TOKEN_RENEW_TIMER, l); + } - /// Generate an error message. - /// \param yyctx the context in which the error occurred. - virtual std::string yysyntax_error_ (const context& yyctx) const; - /// Compute post-reduction state. - /// \param yystate the current state - /// \param yysym the nonterminal to push on the stack - static state_type yy_lr_goto_state_ (state_type yystate, int yysym); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_REBIND_TIMER (const location_type& l) + { + return symbol_type (token::TOKEN_REBIND_TIMER, l); + } - /// Whether the given \c yypact_ value indicates a defaulted state. - /// \param yyvalue the value to check - static bool yy_pact_value_is_default_ (int yyvalue); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CALCULATE_TEE_TIMES (const location_type& l) + { + return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l); + } - /// Whether the given \c yytable_ value indicates a syntax error. - /// \param yyvalue the value to check - static bool yy_table_value_is_error_ (int yyvalue); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_T1_PERCENT (const location_type& l) + { + return symbol_type (token::TOKEN_T1_PERCENT, l); + } - static const short yypact_ninf_; - static const signed char yytable_ninf_; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_T2_PERCENT (const location_type& l) + { + return symbol_type (token::TOKEN_T2_PERCENT, l); + } - /// Convert a scanner token kind \a t to a symbol kind. - /// In theory \a t should be a token_kind_type, but character literals - /// are valid, yet not members of the token_type enum. - static symbol_kind_type yytranslate_ (int t); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CACHE_THRESHOLD (const location_type& l) + { + return symbol_type (token::TOKEN_CACHE_THRESHOLD, l); + } - /// Convert the symbol name \a n to a form suitable for a diagnostic. - static std::string yytnamerr_ (const char *yystr); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CACHE_MAX_AGE (const location_type& l) + { + return symbol_type (token::TOKEN_CACHE_MAX_AGE, l); + } - /// For a symbol, its name in clear. - static const char* const yytname_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l) + { + return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SERVER_TAG (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_TAG, l); + } - // Tables. - // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - // STATE-NUM. - static const short yypact_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l) + { + return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l) + { + return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_SEND_UPDATES (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l); + } - // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - // Performed when YYTABLE does not specify something else to do. Zero - // means the default is an error. - static const short yydefact_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l); + } - // YYPGOTO[NTERM-NUM]. - static const short yypgoto_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_REPLACE_CLIENT_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l); + } - // YYDEFGOTO[NTERM-NUM]. - static const short yydefgoto_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_GENERATED_PREFIX (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l); + } - // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - // positive, shift that token. If negative, reduce the rule whose - // number is the opposite. If YYTABLE_NINF, syntax error. - static const short yytable_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_QUALIFYING_SUFFIX (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l); + } - static const short yycheck_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_UPDATE_ON_RENEW (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l); + } - // YYSTOS[STATE-NUM] -- The (internal number of the) accessing - // symbol of state STATE-NUM. - static const short yystos_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, l); + } - // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. - static const short yyr1_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_STORE_EXTENDED_INFO (const location_type& l) + { + return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l); + } - // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. - static const signed char yyr2_[]; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUBNET4 (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET4, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUBNET_4O6_INTERFACE (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l); + } -#if PARSER4_DEBUG - // YYRLINE[YYN] -- Source line where rule number YYN was defined. - static const short yyrline_[]; - /// Report on the debug stream that the rule \a r is going to be reduced. - virtual void yy_reduce_print_ (int r) const; - /// Print the state stack on the debug stream. - virtual void yy_stack_print_ () const; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l); + } - /// Debugging level. - int yydebug_; - /// Debug stream. - std::ostream* yycdebug_; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUBNET_4O6_SUBNET (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l); + } - /// \brief Display a symbol kind, value and location. - /// \param yyo The output stream. - /// \param yysym The symbol. - template - void yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const; -#endif + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OPTION_DEF (const location_type& l) + { + return symbol_type (token::TOKEN_OPTION_DEF, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OPTION_DATA (const location_type& l) + { + return symbol_type (token::TOKEN_OPTION_DATA, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_NAME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DATA (const location_type& l) + { + return symbol_type (token::TOKEN_DATA, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CODE (const location_type& l) + { + return symbol_type (token::TOKEN_CODE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SPACE (const location_type& l) + { + return symbol_type (token::TOKEN_SPACE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CSV_FORMAT (const location_type& l) + { + return symbol_type (token::TOKEN_CSV_FORMAT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ALWAYS_SEND (const location_type& l) + { + return symbol_type (token::TOKEN_ALWAYS_SEND, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RECORD_TYPES (const location_type& l) + { + return symbol_type (token::TOKEN_RECORD_TYPES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ENCAPSULATE (const location_type& l) + { + return symbol_type (token::TOKEN_ENCAPSULATE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ARRAY (const location_type& l) + { + return symbol_type (token::TOKEN_ARRAY, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SHARED_NETWORKS (const location_type& l) + { + return symbol_type (token::TOKEN_SHARED_NETWORKS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_POOLS (const location_type& l) + { + return symbol_type (token::TOKEN_POOLS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_POOL (const location_type& l) + { + return symbol_type (token::TOKEN_POOL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_USER_CONTEXT (const location_type& l) + { + return symbol_type (token::TOKEN_USER_CONTEXT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_COMMENT (const location_type& l) + { + return symbol_type (token::TOKEN_COMMENT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUBNET (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_INTERFACE (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ID (const location_type& l) + { + return symbol_type (token::TOKEN_ID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RESERVATION_MODE (const location_type& l) + { + return symbol_type (token::TOKEN_RESERVATION_MODE, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DISABLED (const location_type& l) + { + return symbol_type (token::TOKEN_DISABLED, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OUT_OF_POOL (const location_type& l) + { + return symbol_type (token::TOKEN_OUT_OF_POOL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_GLOBAL (const location_type& l) + { + return symbol_type (token::TOKEN_GLOBAL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ALL (const location_type& l) + { + return symbol_type (token::TOKEN_ALL, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l) + { + return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CLIENT_CLASSES (const location_type& l) + { + return symbol_type (token::TOKEN_CLIENT_CLASSES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l) + { + return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TEST (const location_type& l) + { + return symbol_type (token::TOKEN_TEST, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ONLY_IF_REQUIRED (const location_type& l) + { + return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CLIENT_CLASS (const location_type& l) + { + return symbol_type (token::TOKEN_CLIENT_CLASS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RESERVATIONS (const location_type& l) + { + return symbol_type (token::TOKEN_RESERVATIONS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DUID (const location_type& l) + { + return symbol_type (token::TOKEN_DUID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HW_ADDRESS (const location_type& l) + { + return symbol_type (token::TOKEN_HW_ADDRESS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CIRCUIT_ID (const location_type& l) + { + return symbol_type (token::TOKEN_CIRCUIT_ID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CLIENT_ID (const location_type& l) + { + return symbol_type (token::TOKEN_CLIENT_ID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOSTNAME (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTNAME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_FLEX_ID (const location_type& l) + { + return symbol_type (token::TOKEN_FLEX_ID, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RELAY (const location_type& l) + { + return symbol_type (token::TOKEN_RELAY, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_IP_ADDRESS (const location_type& l) + { + return symbol_type (token::TOKEN_IP_ADDRESS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_IP_ADDRESSES (const location_type& l) + { + return symbol_type (token::TOKEN_IP_ADDRESSES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOOKS_LIBRARIES (const location_type& l) + { + return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LIBRARY (const location_type& l) + { + return symbol_type (token::TOKEN_LIBRARY, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_PARAMETERS (const location_type& l) + { + return symbol_type (token::TOKEN_PARAMETERS, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l) + { + return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOLD_RECLAIMED_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAX_RECLAIM_LEASES (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAX_RECLAIM_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l) + { + return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DHCP4O6_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP4O6_PORT, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DHCP_MULTI_THREADING (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l); + } + + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ENABLE_MULTI_THREADING (const location_type& l) + { + return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l); + } - /// \brief Reclaim the memory associated to a symbol. - /// \param yymsg Why this token is reclaimed. - /// If null, print nothing. - /// \param yysym The symbol. - template - void yy_destroy_ (const char* yymsg, basic_symbol& yysym) const; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_THREAD_POOL_SIZE (const location_type& l) + { + return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l); + } - private: - /// Type access provider for state based symbols. - struct by_state - { - /// Default constructor. - by_state () YY_NOEXCEPT; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_PACKET_QUEUE_SIZE (const location_type& l) + { + return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l); + } - /// The symbol kind as needed by the constructor. - typedef state_type kind_type; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CONTROL_SOCKET (const location_type& l) + { + return symbol_type (token::TOKEN_CONTROL_SOCKET, l); + } - /// Constructor. - by_state (kind_type s) YY_NOEXCEPT; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SOCKET_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_SOCKET_TYPE, l); + } - /// Copy constructor. - by_state (const by_state& that) YY_NOEXCEPT; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SOCKET_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_SOCKET_NAME, l); + } - /// Record that this symbol is empty. - void clear () YY_NOEXCEPT; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); + } - /// Steal the symbol kind from \a that. - void move (by_state& that); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ENABLE_QUEUE (const location_type& l) + { + return symbol_type (token::TOKEN_ENABLE_QUEUE, l); + } - /// The symbol kind (corresponding to \a state). - /// \a symbol_kind::S_YYEMPTY when empty. - symbol_kind_type kind () const YY_NOEXCEPT; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_QUEUE_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_QUEUE_TYPE, l); + } - /// The state number used to denote an empty symbol. - /// We use the initial state, as it does not have a value. - enum { empty_state = 0 }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_CAPACITY (const location_type& l) + { + return symbol_type (token::TOKEN_CAPACITY, l); + } - /// The state. - /// \a empty when empty. - state_type state; - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DHCP_DDNS (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_DDNS, l); + } - /// "Internal" symbol: element of the stack. - struct stack_symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; - /// Construct an empty symbol. - stack_symbol_type (); - /// Move or copy construction. - stack_symbol_type (YY_RVREF (stack_symbol_type) that); - /// Steal the contents from \a sym to build this. - stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym); -#if YY_CPLUSPLUS < 201103L - /// Assignment, needed by push_back by some old implementations. - /// Moves the contents of that. - stack_symbol_type& operator= (stack_symbol_type& that); - - /// Assignment, needed by push_back by other implementations. - /// Needed by some other old implementations. - stack_symbol_type& operator= (const stack_symbol_type& that); -#endif - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ENABLE_UPDATES (const location_type& l) + { + return symbol_type (token::TOKEN_ENABLE_UPDATES, l); + } - /// A stack with random access from its top. - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::iterator iterator; - typedef typename S::const_iterator const_iterator; - typedef typename S::size_type size_type; - typedef typename std::ptrdiff_t index_type; - - stack (size_type n = 200) - : seq_ (n) - {} - -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - stack (const stack&) = delete; - /// Non copyable. - stack& operator= (const stack&) = delete; -#endif + Dhcp4Parser::symbol_type + Dhcp4Parser::make_QUALIFYING_SUFFIX (const location_type& l) + { + return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l); + } - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (index_type i) const - { - return seq_[size_type (size () - 1 - i)]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (index_type i) - { - return seq_[size_type (size () - 1 - i)]; - } - - /// Steal the contents of \a t. - /// - /// Close to move-semantics. - void - push (YY_MOVE_REF (T) t) - { - seq_.push_back (T ()); - operator[] (0).move (t); - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SERVER_IP (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_IP, l); + } - /// Pop elements from the stack. - void - pop (std::ptrdiff_t n = 1) YY_NOEXCEPT - { - for (; 0 < n; --n) - seq_.pop_back (); - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SERVER_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_PORT, l); + } - /// Pop all elements from the stack. - void - clear () YY_NOEXCEPT - { - seq_.clear (); - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SENDER_IP (const location_type& l) + { + return symbol_type (token::TOKEN_SENDER_IP, l); + } - /// Number of elements on the stack. - index_type - size () const YY_NOEXCEPT - { - return index_type (seq_.size ()); - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SENDER_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_SENDER_PORT, l); + } - /// Iterator on top of the stack (going downwards). - const_iterator - begin () const YY_NOEXCEPT - { - return seq_.begin (); - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAX_QUEUE_SIZE (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l); + } - /// Bottom of the stack. - const_iterator - end () const YY_NOEXCEPT - { - return seq_.end (); - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_NCR_PROTOCOL (const location_type& l) + { + return symbol_type (token::TOKEN_NCR_PROTOCOL, l); + } - /// Present a slice of the top of a stack. - class slice - { - public: - slice (const stack& stack, index_type range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (index_type i) const - { - return stack_[range_ - i]; - } - - private: - const stack& stack_; - index_type range_; - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_NCR_FORMAT (const location_type& l) + { + return symbol_type (token::TOKEN_NCR_FORMAT, l); + } - private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - stack (const stack&); - /// Non copyable. - stack& operator= (const stack&); -#endif - /// The wrapped container. - S seq_; - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OVERRIDE_NO_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l); + } - /// Stack type. - typedef stack stack_type; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_REPLACE_CLIENT_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l); + } - /// The stack. - stack_type yystack_; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_GENERATED_PREFIX (const location_type& l) + { + return symbol_type (token::TOKEN_GENERATED_PREFIX, l); + } - /// Push a new state on the stack. - /// \param m a debug message to display - /// if null, no trace is output. - /// \param sym the symbol - /// \warning the contents of \a s.value is stolen. - void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TCP (const location_type& l) + { + return symbol_type (token::TOKEN_TCP, l); + } - /// Push a new look ahead token on the state on the stack. - /// \param m a debug message to display - /// if null, no trace is output. - /// \param s the state - /// \param sym the symbol (for its value and location). - /// \warning the contents of \a sym.value is stolen. - void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_JSON (const location_type& l) + { + return symbol_type (token::TOKEN_JSON, l); + } - /// Pop \a n symbols from the stack. - void yypop_ (int n = 1); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_WHEN_PRESENT (const location_type& l) + { + return symbol_type (token::TOKEN_WHEN_PRESENT, l); + } - /// Constants. - enum - { - yylast_ = 1184, ///< Last index in yytable_. - yynnts_ = 406, ///< Number of nonterminal symbols. - yyfinal_ = 28 ///< Termination state number. - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_NEVER (const location_type& l) + { + return symbol_type (token::TOKEN_NEVER, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_ALWAYS (const location_type& l) + { + return symbol_type (token::TOKEN_ALWAYS, l); + } - // User arguments. - isc::dhcp::Parser4Context& ctx; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_WHEN_NOT_PRESENT (const location_type& l) + { + return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l); + } - }; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOSTNAME_CHAR_SET (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l); + } - inline - Dhcp4Parser::symbol_kind_type - Dhcp4Parser::yytranslate_ (int t) + Dhcp4Parser::symbol_type + Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l) { - // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to - // TOKEN-NUM as returned by yylex. - static - const unsigned char - translate_table[] = - { - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193 - }; - // Last valid token kind. - const int code_max = 448; + return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l); + } - if (t <= 0) - return symbol_kind::S_YYEOF; - else if (t <= code_max) - return YY_CAST (symbol_kind_type, translate_table[t]); - else - return symbol_kind::S_YYUNDEF; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_IP_RESERVATIONS_UNIQUE (const location_type& l) + { + return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l); } - // basic_symbol. - template - Dhcp4Parser::basic_symbol::basic_symbol (const basic_symbol& that) - : Base (that) - , value () - , location (that.location) + Dhcp4Parser::symbol_type + Dhcp4Parser::make_LOGGERS (const location_type& l) { - switch (this->kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.copy< ElementPtr > (YY_MOVE (that.value)); - break; + return symbol_type (token::TOKEN_LOGGERS, l); + } - case symbol_kind::S_BOOLEAN: // "boolean" - value.copy< bool > (YY_MOVE (that.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OUTPUT_OPTIONS (const location_type& l) + { + return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l); + } - case symbol_kind::S_FLOAT: // "floating point" - value.copy< double > (YY_MOVE (that.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_OUTPUT (const location_type& l) + { + return symbol_type (token::TOKEN_OUTPUT, l); + } - case symbol_kind::S_INTEGER: // "integer" - value.copy< int64_t > (YY_MOVE (that.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_DEBUGLEVEL (const location_type& l) + { + return symbol_type (token::TOKEN_DEBUGLEVEL, l); + } - case symbol_kind::S_STRING: // "constant string" - value.copy< std::string > (YY_MOVE (that.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SEVERITY (const location_type& l) + { + return symbol_type (token::TOKEN_SEVERITY, l); + } - default: - break; - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_FLUSH (const location_type& l) + { + return symbol_type (token::TOKEN_FLUSH, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAXSIZE (const location_type& l) + { + return symbol_type (token::TOKEN_MAXSIZE, l); } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_MAXVER (const location_type& l) + { + return symbol_type (token::TOKEN_MAXVER, l); + } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_PATTERN (const location_type& l) + { + return symbol_type (token::TOKEN_PATTERN, l); + } - template - Dhcp4Parser::symbol_kind_type - Dhcp4Parser::basic_symbol::type_get () const YY_NOEXCEPT + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TOPLEVEL_JSON (const location_type& l) { - return this->kind (); + return symbol_type (token::TOKEN_TOPLEVEL_JSON, l); } - template - bool - Dhcp4Parser::basic_symbol::empty () const YY_NOEXCEPT + Dhcp4Parser::symbol_type + Dhcp4Parser::make_TOPLEVEL_DHCP4 (const location_type& l) { - return this->kind () == symbol_kind::S_YYEMPTY; + return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l); } - template - void - Dhcp4Parser::basic_symbol::move (basic_symbol& s) + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_DHCP4 (const location_type& l) { - super_type::move (s); - switch (this->kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_socket_type: // socket_type - case symbol_kind::S_outbound_interface_value: // outbound_interface_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (YY_MOVE (s.value)); - break; + return symbol_type (token::TOKEN_SUB_DHCP4, l); + } - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (YY_MOVE (s.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_INTERFACES4 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_INTERFACES4, l); + } - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (YY_MOVE (s.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_SUBNET4 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_SUBNET4, l); + } - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (YY_MOVE (s.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_POOL4 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_POOL4, l); + } - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (YY_MOVE (s.value)); - break; + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_RESERVATION (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_RESERVATION, l); + } - default: - break; - } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_OPTION_DEFS (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l); + } - location = YY_MOVE (s.location); + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_OPTION_DEF (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DEF, l); } - // by_kind. - inline - Dhcp4Parser::by_kind::by_kind () - : kind_ (symbol_kind::S_YYEMPTY) - {} + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_OPTION_DATA (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DATA, l); + } -#if 201103L <= YY_CPLUSPLUS - inline - Dhcp4Parser::by_kind::by_kind (by_kind&& that) - : kind_ (that.kind_) + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_HOOKS_LIBRARY (const location_type& l) { - that.clear (); + return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l); } -#endif - inline - Dhcp4Parser::by_kind::by_kind (const by_kind& that) - : kind_ (that.kind_) - {} + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_DHCP_DDNS (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l); + } - inline - Dhcp4Parser::by_kind::by_kind (token_kind_type t) - : kind_ (yytranslate_ (t)) - {} + Dhcp4Parser::symbol_type + Dhcp4Parser::make_SUB_CONFIG_CONTROL (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l); + } - inline - void - Dhcp4Parser::by_kind::clear () + Dhcp4Parser::symbol_type + Dhcp4Parser::make_STRING (const std::string& v, const location_type& l) { - kind_ = symbol_kind::S_YYEMPTY; + return symbol_type (token::TOKEN_STRING, v, l); } - inline - void - Dhcp4Parser::by_kind::move (by_kind& that) + Dhcp4Parser::symbol_type + Dhcp4Parser::make_INTEGER (const int64_t& v, const location_type& l) { - kind_ = that.kind_; - that.clear (); + return symbol_type (token::TOKEN_INTEGER, v, l); } - inline - Dhcp4Parser::symbol_kind_type - Dhcp4Parser::by_kind::kind () const YY_NOEXCEPT + Dhcp4Parser::symbol_type + Dhcp4Parser::make_FLOAT (const double& v, const location_type& l) { - return kind_; + return symbol_type (token::TOKEN_FLOAT, v, l); } - inline - Dhcp4Parser::symbol_kind_type - Dhcp4Parser::by_kind::type_get () const YY_NOEXCEPT + Dhcp4Parser::symbol_type + Dhcp4Parser::make_BOOLEAN (const bool& v, const location_type& l) { - return this->kind (); + return symbol_type (token::TOKEN_BOOLEAN, v, l); } -#line 14 "dhcp4_parser.yy" + +#line 14 "dhcp4_parser.yy" // lalr1.cc:377 } } // isc::dhcp -#line 5171 "dhcp4_parser.h" +#line 3200 "dhcp4_parser.h" // lalr1.cc:377 diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 5e625a5bf2..9e27bf6005 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -123,6 +123,7 @@ using namespace std; DDNS_GENERATED_PREFIX "ddns-generated-prefix" DDNS_QUALIFYING_SUFFIX "ddns-qualifying-suffix" DDNS_UPDATE_ON_RENEW "ddns-update-on-renew" + DDNS_USE_CONFLICT_RESOLUTION "ddns-use-conflict-resolution" STORE_EXTENDED_INFO "store-extended-info" SUBNET4 "subnet4" SUBNET_4O6_INTERFACE "4o6-interface" @@ -497,6 +498,7 @@ global_param: valid_lifetime | ddns_generated_prefix | ddns_qualifying_suffix | ddns_update_on_renew + | ddns_use_conflict_resolution | store_extended_info | statistic_default_sample_count | statistic_default_sample_age @@ -667,6 +669,12 @@ ddns_update_on_renew: DDNS_UPDATE_ON_RENEW COLON BOOLEAN { ctx.stack_.back()->set("ddns-update-on-renew", b); }; +ddns_use_conflict_resolution: DDNS_USE_CONFLICT_RESOLUTION COLON BOOLEAN { + ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(@1)); + ElementPtr b(new BoolElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("ddns-use-conflict-resolution", b); +}; + hostname_char_set: HOSTNAME_CHAR_SET { ctx.unique("hostname-char-set", ctx.loc2pos(@1)); ctx.enter(ctx.NO_KEYWORD); @@ -1383,6 +1391,7 @@ subnet4_param: valid_lifetime | ddns_generated_prefix | ddns_qualifying_suffix | ddns_update_on_renew + | ddns_use_conflict_resolution | hostname_char_set | hostname_char_replacement | store_extended_info @@ -1541,6 +1550,7 @@ shared_network_param: name | ddns_generated_prefix | ddns_qualifying_suffix | ddns_update_on_renew + | ddns_use_conflict_resolution | hostname_char_set | hostname_char_replacement | store_extended_info diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 4c9429ec04..7d005cea6d 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -643,6 +643,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, (config_pair.first == "ddns-generated-prefix") || (config_pair.first == "ddns-qualifying-suffix") || (config_pair.first == "ddns-update-on-renew") || + (config_pair.first == "ddns-use-conflict-resolution") || (config_pair.first == "store-extended-info") || (config_pair.first == "statistic-default-sample-count") || (config_pair.first == "statistic-default-sample-age") || diff --git a/src/bin/dhcp4/location.hh b/src/bin/dhcp4/location.hh index 3d7f21452a..7e23a2ccac 100644 --- a/src/bin/dhcp4/location.hh +++ b/src/bin/dhcp4/location.hh @@ -1,9 +1,8 @@ -// Generated 202010091455 -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.0.4. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. +// Copyright (C) 2002-2015 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -39,164 +38,44 @@ #ifndef YY_PARSER4_LOCATION_HH_INCLUDED # define YY_PARSER4_LOCATION_HH_INCLUDED -# include -# include +# include "position.hh" -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -#line 14 "dhcp4_parser.yy" +#line 14 "dhcp4_parser.yy" // location.cc:296 namespace isc { namespace dhcp { -#line 59 "location.hh" - - /// A point in a source file. - class position - { - public: - /// Type for file name. - typedef const std::string filename_type; - /// Type for line and column numbers. - typedef int counter_type; - - /// Construct a position. - explicit position (filename_type* f = YY_NULLPTR, - counter_type l = 1, - counter_type c = 1) - : filename (f) - , line (l) - , column (c) - {} - - - /// Initialization. - void initialize (filename_type* fn = YY_NULLPTR, - counter_type l = 1, - counter_type c = 1) - { - filename = fn; - line = l; - column = c; - } - - /** \name Line and Column related manipulators - ** \{ */ - /// (line related) Advance to the COUNT next lines. - void lines (counter_type count = 1) - { - if (count) - { - column = 1; - line = add_ (line, count, 1); - } - } - - /// (column related) Advance to the COUNT next columns. - void columns (counter_type count = 1) - { - column = add_ (column, count, 1); - } - /** \} */ - - /// File name to which this position refers. - filename_type* filename; - /// Current line number. - counter_type line; - /// Current column number. - counter_type column; - - private: - /// Compute max (min, lhs+rhs). - static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min) - { - return lhs + rhs < min ? min : lhs + rhs; - } - }; - - /// Add \a width columns, in place. - inline position& - operator+= (position& res, position::counter_type width) - { - res.columns (width); - return res; - } - - /// Add \a width columns. - inline position - operator+ (position res, position::counter_type width) - { - return res += width; - } - - /// Subtract \a width columns, in place. - inline position& - operator-= (position& res, position::counter_type width) - { - return res += -width; - } - - /// Subtract \a width columns. - inline position - operator- (position res, position::counter_type width) - { - return res -= width; - } - - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param pos a reference to the position to redirect - */ - template - std::basic_ostream& - operator<< (std::basic_ostream& ostr, const position& pos) - { - if (pos.filename) - ostr << *pos.filename << ':'; - return ostr << pos.line << '.' << pos.column; - } - - /// Two points in a source file. +#line 46 "location.hh" // location.cc:296 + /// Abstract a location. class location { public: - /// Type for file name. - typedef position::filename_type filename_type; - /// Type for line and column numbers. - typedef position::counter_type counter_type; /// Construct a location from \a b to \a e. location (const position& b, const position& e) : begin (b) , end (e) - {} + { + } /// Construct a 0-width location in \a p. explicit location (const position& p = position ()) : begin (p) , end (p) - {} + { + } /// Construct a 0-width location in \a f, \a l, \a c. - explicit location (filename_type* f, - counter_type l = 1, - counter_type c = 1) + explicit location (std::string* f, + unsigned int l = 1u, + unsigned int c = 1u) : begin (f, l, c) , end (f, l, c) - {} + { + } /// Initialization. - void initialize (filename_type* f = YY_NULLPTR, - counter_type l = 1, - counter_type c = 1) + void initialize (std::string* f = YY_NULLPTR, + unsigned int l = 1u, + unsigned int c = 1u) { begin.initialize (f, l, c); end = begin; @@ -212,13 +91,13 @@ namespace isc { namespace dhcp { } /// Extend the current location to the COUNT next columns. - void columns (counter_type count = 1) + void columns (int count = 1) { end += count; } /// Extend the current location to the COUNT next lines. - void lines (counter_type count = 1) + void lines (int count = 1) { end.lines (count); } @@ -233,49 +112,57 @@ namespace isc { namespace dhcp { }; /// Join two locations, in place. - inline location& - operator+= (location& res, const location& end) + inline location& operator+= (location& res, const location& end) { res.end = end.end; return res; } /// Join two locations. - inline location - operator+ (location res, const location& end) + inline location operator+ (location res, const location& end) { return res += end; } /// Add \a width columns to the end position, in place. - inline location& - operator+= (location& res, location::counter_type width) + inline location& operator+= (location& res, int width) { res.columns (width); return res; } /// Add \a width columns to the end position. - inline location - operator+ (location res, location::counter_type width) + inline location operator+ (location res, int width) { return res += width; } /// Subtract \a width columns to the end position, in place. - inline location& - operator-= (location& res, location::counter_type width) + inline location& operator-= (location& res, int width) { return res += -width; } /// Subtract \a width columns to the end position. - inline location - operator- (location res, location::counter_type width) + inline location operator- (location res, int width) { return res -= width; } + /// Compare two location objects. + inline bool + operator== (const location& loc1, const location& loc2) + { + return loc1.begin == loc2.begin && loc1.end == loc2.end; + } + + /// Compare two location objects. + inline bool + operator!= (const location& loc1, const location& loc2) + { + return !(loc1 == loc2); + } + /** \brief Intercept output stream redirection. ** \param ostr the destination output stream ** \param loc a reference to the location to redirect @@ -283,11 +170,10 @@ namespace isc { namespace dhcp { ** Avoid duplicate information. */ template - std::basic_ostream& + inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const location& loc) { - location::counter_type end_col - = 0 < loc.end.column ? loc.end.column - 1 : 0; + unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; ostr << loc.begin; if (loc.end.filename && (!loc.begin.filename @@ -300,8 +186,7 @@ namespace isc { namespace dhcp { return ostr; } -#line 14 "dhcp4_parser.yy" +#line 14 "dhcp4_parser.yy" // location.cc:296 } } // isc::dhcp -#line 305 "location.hh" - +#line 192 "location.hh" // location.cc:296 #endif // !YY_PARSER4_LOCATION_HH_INCLUDED diff --git a/src/bin/dhcp4/position.hh b/src/bin/dhcp4/position.hh index 48ecfcbf2b..c60fabbdf8 100644 --- a/src/bin/dhcp4/position.hh +++ b/src/bin/dhcp4/position.hh @@ -1,12 +1,180 @@ -// Generated 202010091455 -// A Bison parser, made by GNU Bison 3.7.2. - -// Starting with Bison 3.2, this file is useless: the structure it -// used to define is now defined in "location.hh". -// -// To get rid of this file: -// 1. add '%require "3.2"' (or newer) to your grammar file -// 2. remove references to this file from your build system -// 3. if you used to include it, include "location.hh" instead. - -#include "location.hh" +// A Bison parser, made by GNU Bison 3.0.4. + +// Positions for Bison parsers in C++ + +// Copyright (C) 2002-2015 Free Software Foundation, Inc. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// As a special exception, you may create a larger work that contains +// part or all of the Bison parser skeleton and distribute that work +// under terms of your choice, so long as that work isn't itself a +// parser generator using the skeleton or a modified version thereof +// as a parser skeleton. Alternatively, if you modify or redistribute +// the parser skeleton itself, you may (at your option) remove this +// special exception, which will cause the skeleton and the resulting +// Bison output files to be licensed under the GNU General Public +// License without this special exception. + +// This special exception was added by the Free Software Foundation in +// version 2.2 of Bison. + +/** + ** \file position.hh + ** Define the isc::dhcp::position class. + */ + +#ifndef YY_PARSER4_POSITION_HH_INCLUDED +# define YY_PARSER4_POSITION_HH_INCLUDED + +# include // std::max +# include +# include + +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif + +#line 14 "dhcp4_parser.yy" // location.cc:296 +namespace isc { namespace dhcp { +#line 56 "position.hh" // location.cc:296 + /// Abstract a position. + class position + { + public: + /// Construct a position. + explicit position (std::string* f = YY_NULLPTR, + unsigned int l = 1u, + unsigned int c = 1u) + : filename (f) + , line (l) + , column (c) + { + } + + + /// Initialization. + void initialize (std::string* fn = YY_NULLPTR, + unsigned int l = 1u, + unsigned int c = 1u) + { + filename = fn; + line = l; + column = c; + } + + /** \name Line and Column related manipulators + ** \{ */ + /// (line related) Advance to the COUNT next lines. + void lines (int count = 1) + { + if (count) + { + column = 1u; + line = add_ (line, count, 1); + } + } + + /// (column related) Advance to the COUNT next columns. + void columns (int count = 1) + { + column = add_ (column, count, 1); + } + /** \} */ + + /// File name to which this position refers. + std::string* filename; + /// Current line number. + unsigned int line; + /// Current column number. + unsigned int column; + + private: + /// Compute max(min, lhs+rhs) (provided min <= lhs). + static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + { + return (0 < rhs || -static_cast(rhs) < lhs + ? rhs + lhs + : min); + } + }; + + /// Add \a width columns, in place. + inline position& + operator+= (position& res, int width) + { + res.columns (width); + return res; + } + + /// Add \a width columns. + inline position + operator+ (position res, int width) + { + return res += width; + } + + /// Subtract \a width columns, in place. + inline position& + operator-= (position& res, int width) + { + return res += -width; + } + + /// Subtract \a width columns. + inline position + operator- (position res, int width) + { + return res -= width; + } + + /// Compare two position objects. + inline bool + operator== (const position& pos1, const position& pos2) + { + return (pos1.line == pos2.line + && pos1.column == pos2.column + && (pos1.filename == pos2.filename + || (pos1.filename && pos2.filename + && *pos1.filename == *pos2.filename))); + } + + /// Compare two position objects. + inline bool + operator!= (const position& pos1, const position& pos2) + { + return !(pos1 == pos2); + } + + /** \brief Intercept output stream redirection. + ** \param ostr the destination output stream + ** \param pos a reference to the position to redirect + */ + template + inline std::basic_ostream& + operator<< (std::basic_ostream& ostr, const position& pos) + { + if (pos.filename) + ostr << *pos.filename << ':'; + return ostr << pos.line << '.' << pos.column; + } + +#line 14 "dhcp4_parser.yy" // location.cc:296 +} } // isc::dhcp +#line 180 "position.hh" // location.cc:296 +#endif // !YY_PARSER4_POSITION_HH_INCLUDED diff --git a/src/bin/dhcp4/stack.hh b/src/bin/dhcp4/stack.hh index 1bd3435eff..3dd2a2a393 100644 --- a/src/bin/dhcp4/stack.hh +++ b/src/bin/dhcp4/stack.hh @@ -1,9 +1,157 @@ -// Generated 202010091455 -// A Bison parser, made by GNU Bison 3.7.2. - -// Starting with Bison 3.2, this file is useless: the structure it -// used to define is now defined with the parser itself. -// -// To get rid of this file: -// 1. add '%require "3.2"' (or newer) to your grammar file -// 2. remove references to this file from your build system. +// A Bison parser, made by GNU Bison 3.0.4. + +// Stack handling for Bison parsers in C++ + +// Copyright (C) 2002-2015 Free Software Foundation, Inc. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// As a special exception, you may create a larger work that contains +// part or all of the Bison parser skeleton and distribute that work +// under terms of your choice, so long as that work isn't itself a +// parser generator using the skeleton or a modified version thereof +// as a parser skeleton. Alternatively, if you modify or redistribute +// the parser skeleton itself, you may (at your option) remove this +// special exception, which will cause the skeleton and the resulting +// Bison output files to be licensed under the GNU General Public +// License without this special exception. + +// This special exception was added by the Free Software Foundation in +// version 2.2 of Bison. + +/** + ** \file stack.hh + ** Define the isc::dhcp::stack class. + */ + +#ifndef YY_PARSER4_STACK_HH_INCLUDED +# define YY_PARSER4_STACK_HH_INCLUDED + +# include + +#line 14 "dhcp4_parser.yy" // stack.hh:132 +namespace isc { namespace dhcp { +#line 46 "stack.hh" // stack.hh:132 + template > + class stack + { + public: + // Hide our reversed order. + typedef typename S::reverse_iterator iterator; + typedef typename S::const_reverse_iterator const_iterator; + + stack () + : seq_ () + { + seq_.reserve (200); + } + + stack (unsigned int n) + : seq_ (n) + {} + + inline + T& + operator[] (unsigned int i) + { + return seq_[seq_.size () - 1 - i]; + } + + inline + const T& + operator[] (unsigned int i) const + { + return seq_[seq_.size () - 1 - i]; + } + + /// Steal the contents of \a t. + /// + /// Close to move-semantics. + inline + void + push (T& t) + { + seq_.push_back (T()); + operator[](0).move (t); + } + + inline + void + pop (unsigned int n = 1) + { + for (; n; --n) + seq_.pop_back (); + } + + void + clear () + { + seq_.clear (); + } + + inline + typename S::size_type + size () const + { + return seq_.size (); + } + + inline + const_iterator + begin () const + { + return seq_.rbegin (); + } + + inline + const_iterator + end () const + { + return seq_.rend (); + } + + private: + stack (const stack&); + stack& operator= (const stack&); + /// The wrapped container. + S seq_; + }; + + /// Present a slice of the top of a stack. + template > + class slice + { + public: + slice (const S& stack, unsigned int range) + : stack_ (stack) + , range_ (range) + {} + + inline + const T& + operator [] (unsigned int i) const + { + return stack_[range_ - i]; + } + + private: + const S& stack_; + unsigned int range_; + }; + +#line 14 "dhcp4_parser.yy" // stack.hh:132 +} } // isc::dhcp +#line 156 "stack.hh" // stack.hh:132 + +#endif // !YY_PARSER4_STACK_HH_INCLUDED diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc index e06b409dfa..af2475a5a4 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc +++ b/src/bin/dhcp4/tests/get_config_unittest.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -2267,6 +2268,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2343,6 +2345,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2443,6 +2446,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2543,6 +2547,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2649,6 +2654,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2826,6 +2832,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3003,6 +3010,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3105,6 +3113,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3210,6 +3219,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3315,6 +3325,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3417,6 +3428,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3519,6 +3531,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3648,6 +3661,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3776,6 +3790,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3905,6 +3920,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4033,6 +4049,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4139,6 +4156,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4274,6 +4292,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4376,6 +4395,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4460,6 +4480,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4544,6 +4565,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4637,6 +4659,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4721,6 +4744,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4805,6 +4829,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4889,6 +4914,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4973,6 +4999,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5092,6 +5119,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5211,6 +5239,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5340,6 +5369,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5452,6 +5482,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5607,6 +5638,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5735,6 +5767,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5880,6 +5913,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5999,6 +6033,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6123,6 +6158,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6242,6 +6278,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6354,6 +6391,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6500,6 +6538,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6617,6 +6656,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6738,6 +6778,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6814,6 +6855,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6890,6 +6932,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": true,\n" @@ -6992,6 +7035,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"when-present\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": true,\n" @@ -7094,6 +7138,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"always\",\n" " \"ddns-send-updates\": false,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": true,\n" @@ -7196,6 +7241,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7298,6 +7344,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7400,6 +7447,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7580,6 +7628,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7697,6 +7746,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7952,6 +8002,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8084,6 +8135,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8264,6 +8316,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8392,6 +8445,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8466,6 +8520,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8540,6 +8595,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 12345,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8614,6 +8670,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8688,6 +8745,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8790,6 +8848,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8892,6 +8951,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8994,6 +9054,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9096,6 +9157,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9224,6 +9286,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9326,6 +9389,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9428,6 +9492,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9531,6 +9596,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9638,6 +9704,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9745,6 +9812,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9876,6 +9944,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10056,6 +10125,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10238,6 +10308,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10397,6 +10468,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10524,6 +10596,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10651,6 +10724,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10727,6 +10801,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -10801,6 +10876,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -11103,16 +11179,16 @@ TEST_P(Dhcp4GetConfigTest, run) { std::cerr << ",\n"; } std::cerr << " // CONFIGURATION " << config_counter; - ASSERT_NO_THROW(expected = prettyPrint(dhcp)); - ASSERT_NO_THROW(outputFormatted(dhcp->str())); + ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp)); + ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str())); } else { expected = UNPARSED_CONFIGS[config_counter]; // get the expected config using the dhcpv4 syntax parser ElementPtr jsond; - ASSERT_NO_THROW(jsond = parseDHCP4(expected, true)); + ASSERT_NO_THROW_LOG(jsond = parseDHCP4(expected, true)); ElementPtr jsonj; // get the expected config using the generic JSON syntax parser - ASSERT_NO_THROW(jsonj = parseJSON(expected)); + ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected)); // the generic JSON parser does not handle comments EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj))); // check that unparsed and expected values match @@ -11133,7 +11209,7 @@ TEST_P(Dhcp4GetConfigTest, run) { // is it a fixed point? ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg(); ConstElementPtr unparsed2; - ASSERT_NO_THROW(unparsed2 = extracted2->toElement()); + ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement()); ASSERT_TRUE(unparsed2); EXPECT_TRUE(isEquivalent(unparsed, unparsed2)); } diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc.skel b/src/bin/dhcp4/tests/get_config_unittest.cc.skel index 4ffc908e41..cc4a64a349 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc.skel +++ b/src/bin/dhcp4/tests/get_config_unittest.cc.skel @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -314,16 +315,16 @@ TEST_P(Dhcp4GetConfigTest, run) { std::cerr << ",\n"; } std::cerr << " // CONFIGURATION " << config_counter; - ASSERT_NO_THROW(expected = prettyPrint(dhcp)); - ASSERT_NO_THROW(outputFormatted(dhcp->str())); + ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp)); + ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str())); } else { expected = UNPARSED_CONFIGS[config_counter]; // get the expected config using the dhcpv4 syntax parser ElementPtr jsond; - ASSERT_NO_THROW(jsond = parseDHCP4(expected, true)); + ASSERT_NO_THROW_LOG(jsond = parseDHCP4(expected, true)); ElementPtr jsonj; // get the expected config using the generic JSON syntax parser - ASSERT_NO_THROW(jsonj = parseJSON(expected)); + ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected)); // the generic JSON parser does not handle comments EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj))); // check that unparsed and expected values match @@ -344,7 +345,7 @@ TEST_P(Dhcp4GetConfigTest, run) { // is it a fixed point? ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg(); ConstElementPtr unparsed2; - ASSERT_NO_THROW(unparsed2 = extracted2->toElement()); + ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement()); ASSERT_TRUE(unparsed2); EXPECT_TRUE(isEquivalent(unparsed, unparsed2)); } diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index 9b213ecc5a..0b794a1fd5 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 208 -#define YY_END_OF_BUFFER 209 +#define YY_NUM_RULES 209 +#define YY_END_OF_BUFFER 210 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,21 +700,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1903] = +static const flex_int16_t yy_accept[1926] = { 0, - 201, 201, 0, 0, 0, 0, 0, 0, 0, 0, - 209, 207, 10, 11, 207, 1, 201, 198, 201, 201, - 207, 200, 199, 207, 207, 207, 207, 207, 194, 195, - 207, 207, 207, 196, 197, 5, 5, 5, 207, 207, - 207, 10, 11, 0, 0, 190, 0, 0, 0, 0, + 202, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 208, 10, 11, 208, 1, 202, 199, 202, 202, + 208, 201, 200, 208, 208, 208, 208, 208, 195, 196, + 208, 208, 208, 197, 198, 5, 5, 5, 208, 208, + 208, 10, 11, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 201, 201, - 0, 200, 201, 3, 2, 6, 0, 201, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 191, + 0, 0, 0, 0, 0, 0, 0, 1, 202, 202, + 0, 201, 202, 3, 2, 6, 0, 202, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 9, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -722,196 +722,198 @@ static const flex_int16_t yy_accept[1903] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 163, 0, 0, 164, 0, 0, + 8, 0, 0, 0, 164, 0, 0, 165, 0, 0, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 206, 204, 0, - 203, 202, 0, 0, 0, 0, 0, 0, 162, 0, - 28, 0, 27, 0, 0, 120, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 207, 205, 0, + 204, 203, 0, 0, 0, 0, 0, 0, 163, 0, + 28, 0, 27, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 202, 0, 0, 0, 0, 0, 29, + 0, 0, 206, 203, 0, 0, 0, 0, 0, 29, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 121, 0, 0, 0, 0, 0, 0, 0, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, + 122, 0, 0, 0, 0, 0, 0, 0, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 59, 0, 0, 0, 0, 0, 0, + 0, 108, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 167, + 0, 0, 0, 0, 0, 0, 0, 143, 0, 168, 51, 0, 56, 0, 0, 0, 0, 0, 37, 34, - 33, 0, 0, 0, 155, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, + 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, + 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 160, 130, - 0, 0, 0, 0, 0, 0, 0, 134, 52, 0, + 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 136, 0, 60, 0, 0, 0, 0, 0, + 161, 131, 0, 0, 0, 0, 0, 0, 0, 135, + 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 137, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, - 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - + 0, 150, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 101, 0, 0, 0, 146, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 57, 102, 0, 0, 0, 147, 0, + 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 161, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 162, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, - 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 148, 165, 0, 40, 0, - 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 159, 54, 0, 103, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, - 0, 0, 0, 126, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, + 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, - 17, 0, 15, 0, 183, 182, 0, 0, 0, 69, - 0, 0, 0, 0, 0, 30, 0, 0, 0, 141, + 149, 166, 0, 40, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 176, 0, 185, + 0, 20, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 160, 54, 0, 104, 0, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 112, 0, 145, 0, 43, 0, 61, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 114, 80, 0, 0, - 153, 0, 0, 0, 0, 0, 144, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 0, 129, 0, + 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 97, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 17, 0, 15, 0, + 184, 183, 0, 0, 0, 69, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, - 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 177, 0, 186, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, + 146, 0, 43, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 0, 0, 115, 80, 0, 0, 154, 0, 0, + 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, + 0, 0, 109, 0, 0, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, - 0, 0, 68, 0, 0, 0, 0, 0, 0, 139, - 47, 0, 0, 0, 70, 181, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, - 0, 44, 0, 18, 0, 0, 0, 72, 0, 0, - 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 0, 128, 0, 0, 0, 62, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, + 68, 0, 0, 0, 0, 0, 0, 140, 47, 0, + 0, 0, 70, 182, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, + 44, 0, 18, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 76, 0, 129, 0, 0, 0, 62, 0, 0, - 0, 0, 0, 0, 0, 158, 0, 0, 0, 46, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 0, 0, 0, 0, 0, 159, 0, 0, 0, 46, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 0, 94, 0, 0, 0, 0, 36, + 67, 0, 0, 0, 95, 0, 0, 0, 0, 36, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, - 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 115, 0, 0, 0, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 25, 39, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 180, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, + 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 0, 0, 0, 180, 0, 0, 0, + + 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 0, 78, - 0, 77, 0, 21, 73, 0, 0, 0, 0, 0, - 65, 0, 0, 0, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 0, 0, 172, 0, 0, - 0, 0, 71, 0, 0, 0, 66, 0, 23, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 91, - + 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 0, 78, 0, 77, 0, 21, 73, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, + 0, 173, 0, 0, 0, 0, 71, 0, 0, 0, + + 66, 0, 23, 0, 0, 94, 0, 0, 0, 0, + 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, + 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 0, 0, 90, - 0, 0, 178, 0, 0, 0, 0, 189, 75, 74, - 22, 0, 123, 140, 0, 0, 0, 86, 0, 0, - 0, 0, 0, 0, 170, 0, 175, 0, 88, 81, - 0, 0, 0, 0, 0, 0, 169, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, - 0, 0, 0, 124, 84, 0, 0, 0, 0, 83, - - 171, 0 + 0, 0, 49, 0, 0, 90, 0, 0, 0, 179, + 0, 0, 0, 0, 190, 75, 74, 22, 0, 124, + 141, 0, 0, 0, 86, 0, 0, 0, 0, 0, + 0, 0, 171, 0, 176, 0, 88, 0, 81, 0, + 0, 0, 0, 0, 0, 0, 170, 0, 0, 26, + + 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 0, 0, 0, 92, 0, 125, 84, 0, 0, + 0, 0, 83, 172, 0 } ; static const YY_CHAR yy_ec[256] = @@ -958,445 +960,449 @@ static const YY_CHAR yy_meta[74] = 3, 3, 3 } ; -static const flex_int16_t yy_base[1915] = +static const flex_int16_t yy_base[1938] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2304, 2305, 34, 2300, 145, 0, 207, 2305, 214, 221, - 13, 228, 2305, 2280, 118, 25, 2, 6, 2305, 2305, - 73, 11, 17, 2305, 2305, 2305, 104, 2288, 2241, 0, - 2278, 108, 2295, 24, 256, 2305, 67, 2244, 2264, 84, - 75, 2264, 88, 226, 91, 89, 284, 196, 203, 279, - 193, 224, 216, 60, 242, 2244, 286, 288, 314, 300, - 319, 2227, 204, 324, 356, 329, 2246, 0, 380, 400, - 420, 427, 406, 2305, 0, 2305, 385, 443, 238, 241, - 310, 269, 299, 314, 2305, 2243, 2284, 2305, 405, 2305, - - 419, 400, 2241, 2282, 326, 10, 262, 407, 224, 409, - 352, 206, 2281, 0, 472, 412, 2223, 415, 2231, 406, - 2227, 2216, 2217, 2222, 444, 2232, 2215, 2224, 327, 433, - 226, 2218, 2216, 445, 2205, 2263, 399, 2208, 2261, 2201, - 2224, 2221, 2221, 2215, 339, 2208, 2206, 2207, 2199, 2204, - 2198, 412, 2209, 2202, 2193, 2192, 2206, 462, 2244, 2191, - 443, 2203, 421, 2191, 482, 2192, 445, 2204, 2201, 2202, - 293, 2200, 2235, 2234, 477, 2180, 2180, 2184, 2180, 2172, - 2189, 2181, 0, 478, 493, 486, 481, 500, 505, 2180, - 2305, 0, 510, 2175, 2305, 498, 505, 2305, 2229, 508, - - 2228, 513, 2227, 515, 2226, 2305, 561, 2225, 525, 2184, - 2176, 2180, 2181, 2176, 2175, 2166, 501, 2217, 2211, 2175, - 2156, 2153, 2161, 2167, 2155, 2169, 2165, 2166, 2166, 2161, - 2153, 2155, 2139, 2143, 2156, 2158, 2155, 2147, 2137, 2140, - 2154, 2305, 2140, 2148, 80, 2133, 2132, 2184, 2131, 2141, - 2181, 505, 2140, 2179, 2124, 2126, 2137, 2175, 532, 2179, - 2114, 2129, 538, 2119, 2125, 2134, 2115, 2113, 2116, 2112, - 2118, 2109, 2108, 2121, 2114, 2104, 2115, 2119, 2118, 2112, - 220, 2119, 2114, 2106, 2096, 2111, 2106, 2110, 500, 2108, - 2094, 2100, 2107, 2089, 2090, 2093, 2090, 2089, 562, 2084, - - 2098, 2097, 2096, 2099, 2081, 2089, 543, 2305, 2305, 553, - 2305, 2305, 2076, 0, 520, 2123, 554, 2134, 2305, 556, - 2305, 2133, 2305, 2127, 606, 2305, 555, 2067, 2086, 2069, - 2086, 2074, 2126, 2081, 2076, 2079, 2074, 537, 2305, 2076, - 586, 2115, 2073, 2070, 2071, 584, 2075, 2115, 2063, 2058, - 2055, 2051, 2053, 2104, 2061, 2050, 2066, 2100, 2046, 607, - 2059, 2059, 2042, 2043, 2056, 2054, 2042, 2052, 2047, 2054, - 2049, 2034, 574, 2043, 2046, 2041, 577, 2040, 2036, 2086, - 422, 563, 2305, 2080, 2030, 2029, 2022, 2024, 2036, 2027, - 2016, 2033, 2022, 2027, 596, 2074, 2027, 589, 2024, 2027, - - 2027, 2025, 2014, 2014, 2026, 583, 2001, 2002, 2023, 595, - 2005, 2002, 2016, 2019, 2014, 2000, 2012, 2011, 2010, 2005, - 2008, 2007, 2006, 2005, 558, 2048, 2007, 2046, 2045, 1987, - 652, 2000, 2305, 2305, 1999, 0, 604, 2041, 2040, 2305, - 2039, 2305, 616, 664, 629, 2038, 2032, 1985, 1987, 1975, - 2305, 1980, 1986, 1989, 1972, 1987, 1974, 1973, 2305, 1983, - 610, 1974, 1971, 1983, 566, 1968, 1970, 2305, 1976, 1961, - 1963, 1974, 1972, 1967, 653, 1974, 1962, 1955, 2006, 2305, - 1953, 1969, 2003, 2007, 1963, 1957, 1959, 1960, 1944, 1961, - 1995, 1946, 1941, 1940, 1942, 1938, 1934, 556, 1953, 1927, - - 1934, 1939, 1932, 1948, 1982, 1986, 2305, 1931, 1927, 1983, - 1934, 1928, 1935, 1920, 1930, 1918, 1932, 1921, 1917, 1919, - 1914, 2305, 1971, 2305, 1913, 1912, 1905, 1922, 1961, 1960, - 1905, 1910, 1919, 1913, 1907, 1916, 688, 1953, 1915, 1898, - 1898, 1893, 1889, 1895, 1900, 1893, 1901, 1905, 1888, 1946, - 1887, 1939, 1884, 1885, 1884, 1896, 1885, 2305, 1895, 2305, - 2305, 1884, 2305, 1894, 1930, 1890, 0, 1933, 2305, 2305, - 2305, 636, 632, 691, 2305, 640, 1892, 1872, 1925, 1870, - 1923, 1868, 1867, 1866, 1873, 1866, 1874, 1877, 1859, 1859, - 1874, 1873, 1861, 1871, 1870, 1854, 1869, 1851, 1898, 1865, - - 1903, 1847, 1849, 1861, 1861, 1860, 2305, 1845, 1842, 1900, - 1855, 1847, 1853, 1844, 1852, 2305, 1837, 1848, 1852, 1834, - 1846, 1847, 635, 1829, 1823, 1828, 1825, 1840, 1839, 1840, - 1819, 1829, 1835, 1878, 1833, 1832, 1824, 1815, 2305, 1816, - 1818, 2305, 1826, 1865, 1864, 16, 1825, 1862, 1807, 1808, - 1811, 1812, 1803, 2305, 1817, 1803, 695, 1795, 1799, 1815, - 1812, 1804, 1849, 1801, 1808, 1846, 2305, 1792, 1790, 1804, - 1788, 1802, 1805, 1839, 1838, 1837, 1836, 1781, 1834, 1833, - 2305, 1778, 1792, 698, 1793, 1792, 1789, 1789, 1826, 1786, - 1775, 1777, 2305, 2305, 663, 658, 1769, 1786, 1778, 1765, - - 1759, 1780, 1821, 669, 1815, 1775, 1813, 1812, 1764, 1758, - 1761, 1769, 1772, 1756, 1757, 1766, 1747, 1802, 1762, 1752, - 1760, 1798, 1759, 661, 1750, 1752, 92, 209, 269, 294, - 313, 2305, 380, 399, 451, 501, 507, 544, 551, 579, - 597, 588, 611, 633, 657, 657, 703, 715, 659, 673, - 659, 669, 719, 677, 726, 2305, 727, 683, 681, 683, - 679, 673, 728, 691, 680, 2305, 682, 693, 682, 696, - 698, 742, 685, 744, 687, 702, 2305, 696, 690, 701, - 686, 697, 710, 689, 695, 750, 714, 698, 698, 711, - 755, 756, 757, 704, 722, 717, 724, 719, 704, 716, - - 717, 723, 710, 2305, 775, 733, 735, 725, 737, 727, - 740, 731, 737, 781, 757, 744, 726, 733, 747, 792, - 742, 2305, 740, 755, 752, 738, 745, 744, 742, 761, - 758, 759, 747, 754, 755, 764, 768, 765, 755, 768, - 754, 753, 759, 816, 757, 758, 764, 780, 763, 817, - 772, 2305, 782, 782, 775, 786, 784, 829, 771, 773, - 788, 789, 777, 775, 837, 794, 780, 783, 2305, 2305, - 799, 798, 799, 804, 792, 802, 804, 2305, 2305, 804, - 806, 793, 811, 798, 796, 814, 801, 801, 852, 799, - 803, 861, 2305, 862, 2305, 807, 821, 821, 866, 814, - - 813, 817, 811, 871, 824, 814, 815, 811, 821, 825, - 836, 820, 838, 833, 835, 828, 830, 831, 843, 833, - 848, 889, 846, 851, 828, 851, 835, 2305, 842, 843, - 857, 848, 846, 896, 843, 858, 876, 884, 853, 902, - 864, 904, 2305, 870, 858, 853, 854, 866, 873, 862, - 863, 859, 877, 863, 864, 874, 883, 919, 866, 875, - 870, 924, 930, 888, 879, 2305, 883, 891, 893, 878, - 894, 884, 896, 890, 937, 903, 887, 888, 2305, 904, - 907, 890, 892, 950, 893, 912, 2305, 911, 914, 895, - 913, 901, 954, 912, 908, 905, 958, 907, 960, 922, - - 908, 926, 925, 911, 926, 918, 914, 932, 931, 918, - 2305, 2305, 926, 973, 926, 2305, 934, 937, 930, 983, - 2305, 932, 938, 982, 933, 934, 946, 940, 944, 942, - 940, 951, 996, 940, 945, 999, 1000, 944, 956, 2305, - 944, 952, 950, 1001, 963, 950, 951, 960, 972, 959, - 957, 971, 972, 988, 993, 975, 980, 963, 963, 965, - 965, 985, 984, 975, 964, 981, 988, 1031, 973, 993, - 986, 990, 994, 977, 994, 1039, 986, 990, 2305, 1037, - 986, 985, 987, 1008, 1005, 1045, 994, 1012, 1013, 999, - 1007, 1016, 996, 1011, 1018, 1060, 1061, 2305, 1014, 1063, - - 1064, 1006, 1016, 1026, 1029, 1012, 1014, 1014, 1021, 1030, - 1018, 1025, 1020, 1027, 1039, 1080, 1027, 1026, 1043, 1084, - 1034, 1038, 1036, 1034, 1029, 1090, 1091, 1041, 1093, 1089, - 1095, 1048, 2305, 1053, 1046, 1037, 1056, 1050, 1045, 1055, - 1052, 1057, 1053, 1065, 2305, 1050, 1052, 2305, 2305, 1052, - 1112, 1051, 1070, 1071, 1073, 1064, 1118, 1119, 1072, 1057, - 1071, 1079, 1061, 1066, 1105, 1096, 1128, 1083, 1083, 1087, - 1074, 1076, 1093, 1088, 1092, 1137, 1085, 1089, 2305, 1086, - 1082, 1099, 1079, 1100, 1090, 1141, 2305, 1106, 1104, 1108, - 1092, 1104, 1109, 1095, 1156, 1109, 1114, 1101, 1112, 1104, - - 1110, 1106, 1124, 1125, 1126, 2305, 2305, 1124, 2305, 1126, - 2305, 1111, 1122, 1113, 1132, 1122, 1174, 1131, 1128, 1172, - 1136, 1125, 1132, 1137, 1134, 1140, 2305, 1133, 1125, 1186, - 2305, 1187, 1134, 1141, 1185, 1147, 2305, 2305, 1144, 2305, - 1135, 2305, 1135, 1138, 1152, 1157, 1140, 1151, 1200, 1157, - 1158, 1159, 1199, 1155, 1206, 1159, 1208, 2305, 1155, 1210, - 1211, 1168, 1170, 2305, 2305, 1153, 1215, 1211, 1175, 1159, - 1171, 1190, 1221, 2305, 1178, 1169, 1180, 1225, 1172, 1187, - 1223, 1175, 2305, 1171, 1187, 1175, 1189, 1190, 1187, 1231, - 1194, 1184, 1199, 1187, 1187, 1242, 1238, 1244, 1201, 2305, - - 1203, 1202, 1205, 1198, 1207, 1208, 1205, 1195, 1198, 1198, - 1258, 1205, 1260, 1207, 1262, 1205, 1264, 2305, 1222, 1201, - 1216, 1209, 1213, 1226, 1229, 1228, 1226, 1276, 1229, 2305, - 2305, 1225, 1235, 1220, 1276, 1237, 1223, 1284, 1285, 1229, - 1239, 1288, 1245, 2305, 1237, 1237, 1239, 1241, 1294, 1237, - 2305, 1238, 2305, 1240, 2305, 2305, 1253, 1255, 1256, 2305, - 1243, 1251, 1303, 1252, 1284, 2305, 1306, 1256, 1303, 2305, - 1251, 1259, 1253, 1250, 1253, 1256, 1256, 1252, 1274, 1313, - 1266, 1278, 1281, 1269, 1264, 1324, 1272, 2305, 1267, 2305, - 1269, 1329, 1282, 1273, 1288, 1288, 1291, 1291, 1288, 1332, - - 1294, 2305, 1286, 2305, 1287, 2305, 1297, 2305, 1337, 1299, - 1300, 1297, 1341, 1289, 1304, 1344, 1306, 1298, 2305, 1295, - 1295, 1301, 1300, 1298, 1313, 1313, 2305, 2305, 1354, 1301, - 2305, 1318, 1303, 1303, 1305, 1311, 2305, 1366, 1308, 1318, - 1329, 1327, 1371, 1324, 1333, 2305, 1330, 1349, 2305, 1333, - 1318, 1378, 1379, 1336, 1341, 1323, 1383, 1384, 1385, 1381, - 1345, 1342, 1338, 1331, 1386, 1344, 2305, 1334, 1347, 1395, - 2305, 1333, 1392, 1356, 1352, 1396, 1345, 1350, 1348, 1407, - 1363, 1351, 1410, 1360, 1412, 1373, 1362, 1356, 1416, 1358, - 1367, 1360, 1374, 1377, 1422, 1364, 1381, 1377, 1367, 1382, - - 1366, 1424, 1425, 1426, 1373, 1428, 1391, 2305, 1391, 1378, - 1377, 1433, 2305, 1374, 1392, 1441, 1411, 1443, 1396, 2305, - 2305, 1387, 1398, 1447, 2305, 2305, 2305, 1393, 1398, 1396, - 1446, 1404, 1409, 1397, 1401, 1399, 1400, 2305, 1458, 1404, - 1455, 1398, 1403, 1464, 1413, 1423, 1424, 2305, 1469, 1423, - 1467, 2305, 1425, 2305, 1416, 1431, 1419, 2305, 1429, 1430, - 1431, 1480, 1438, 2305, 1477, 1443, 1419, 1437, 1438, 1447, - 1429, 1435, 1437, 1491, 1450, 1449, 1441, 1495, 1445, 1449, - 1454, 1447, 2305, 1500, 2305, 1449, 1502, 1444, 2305, 1447, - 1457, 1501, 1449, 1464, 1451, 1466, 1458, 1458, 1469, 2305, - - 1463, 1458, 1457, 1517, 1470, 2305, 1514, 1465, 1462, 2305, - 1476, 1463, 1479, 1481, 1526, 1479, 1476, 1484, 1478, 2305, - 1531, 1472, 1474, 1490, 1483, 1473, 1489, 1490, 1484, 1500, - 2305, 1490, 1542, 1501, 2305, 1485, 1492, 1546, 1542, 2305, - 1504, 2305, 1544, 1506, 1507, 1492, 1493, 1501, 1555, 1503, - 1552, 1507, 1519, 1516, 1507, 1514, 2305, 1511, 1516, 1514, - 1566, 1567, 1515, 1525, 1512, 2305, 1527, 1528, 1529, 1530, - 2305, 1520, 1532, 1577, 1534, 1579, 1521, 1529, 1523, 1531, - 1544, 2305, 1521, 1581, 1542, 2305, 1546, 1531, 1531, 1546, - 1539, 1538, 1549, 1536, 2305, 1552, 1542, 1598, 1556, 1547, - - 1559, 1550, 1559, 1561, 1565, 2305, 2305, 1558, 1548, 1608, - 1551, 1610, 1552, 1612, 1570, 1614, 2305, 1615, 2305, 1611, - 1573, 1570, 1575, 1562, 1621, 1564, 1569, 1560, 1625, 1578, - 1579, 1569, 1586, 1585, 1626, 1570, 1589, 2305, 1586, 1635, - 1592, 1593, 1638, 1595, 1598, 1585, 1594, 2305, 1643, 2305, - 1596, 2305, 1605, 2305, 2305, 1587, 1647, 1594, 1649, 1592, - 2305, 1611, 1652, 1611, 2305, 1602, 1592, 1651, 1617, 1610, - 1606, 1660, 1604, 1609, 2305, 1605, 1607, 2305, 1612, 1622, - 1607, 1616, 2305, 1617, 1611, 1623, 2305, 1619, 2305, 1629, - 1622, 2305, 1624, 1632, 1677, 1618, 1620, 1617, 1641, 2305, - - 1634, 1637, 1626, 1680, 1627, 1635, 1644, 1645, 1646, 1647, - 1640, 1635, 1636, 1640, 1652, 1697, 2305, 1643, 1655, 1700, - 1649, 1648, 1703, 1656, 1643, 1658, 1663, 1708, 1709, 1710, - 1711, 1668, 1713, 1714, 1664, 1658, 2305, 1674, 1718, 2305, - 1675, 1677, 2305, 1668, 1682, 1678, 1671, 2305, 2305, 2305, - 2305, 1725, 2305, 2305, 1682, 1727, 1688, 2305, 1729, 1730, - 1685, 1684, 1685, 1675, 2305, 1730, 2305, 1677, 2305, 2305, - 1737, 1679, 1695, 1740, 1701, 1698, 2305, 1739, 1688, 2305, - 1700, 1693, 1748, 1690, 1692, 1707, 1692, 2305, 1705, 1754, - 1755, 1703, 1705, 2305, 2305, 1699, 1715, 1760, 1761, 2305, - - 2305, 2305, 1767, 1772, 1777, 1782, 1787, 1792, 1797, 1800, - 1774, 1779, 1781, 1794 + 2327, 2328, 34, 2323, 145, 0, 207, 2328, 214, 221, + 13, 228, 2328, 2303, 118, 25, 2, 6, 2328, 2328, + 73, 11, 17, 2328, 2328, 2328, 104, 2311, 2264, 0, + 2301, 108, 2318, 24, 256, 2328, 67, 2267, 2287, 84, + 75, 2287, 88, 226, 91, 89, 284, 196, 203, 279, + 193, 224, 216, 60, 242, 2267, 286, 288, 314, 300, + 319, 2250, 204, 324, 356, 329, 2269, 0, 380, 400, + 420, 427, 406, 2328, 0, 2328, 385, 443, 238, 241, + 310, 269, 299, 314, 2328, 2266, 2307, 2328, 405, 2328, + + 419, 400, 2264, 2305, 326, 10, 262, 407, 224, 409, + 352, 206, 2304, 0, 472, 412, 2246, 415, 2254, 406, + 2250, 2239, 2240, 2245, 444, 2255, 2238, 2247, 327, 433, + 226, 2241, 2239, 445, 2228, 2286, 399, 2231, 2284, 2224, + 2247, 2244, 2244, 2238, 339, 2231, 2229, 2230, 2222, 2227, + 2221, 412, 2232, 2225, 2216, 2215, 2229, 462, 2267, 2214, + 443, 2226, 421, 2214, 482, 2215, 445, 2227, 2224, 2225, + 293, 2223, 2258, 2257, 477, 2203, 2203, 2207, 2203, 2195, + 2212, 2204, 0, 478, 493, 486, 481, 500, 505, 2203, + 2328, 0, 510, 2198, 2328, 498, 505, 2328, 2252, 508, + + 2251, 513, 2250, 515, 2249, 2328, 561, 2248, 525, 2207, + 2199, 2203, 2204, 2199, 2198, 2189, 501, 2240, 2234, 2198, + 2179, 2176, 2184, 2190, 2178, 2192, 2188, 2189, 2189, 2184, + 2176, 2178, 2162, 2166, 2179, 2181, 2178, 2170, 2160, 2163, + 2177, 2328, 2163, 2171, 80, 2156, 2155, 2207, 2154, 2164, + 2204, 505, 2163, 2202, 2147, 2149, 2160, 2198, 532, 2202, + 2137, 2152, 538, 2142, 2148, 2157, 2138, 2136, 2139, 2135, + 2141, 2132, 2131, 2144, 2137, 2127, 2138, 2142, 2141, 2135, + 220, 2142, 2137, 2129, 2119, 2134, 2129, 2133, 500, 2131, + 2117, 2123, 2130, 2112, 2113, 2116, 2113, 2112, 562, 2107, + + 2121, 2120, 2119, 2122, 2104, 2112, 543, 2328, 2328, 553, + 2328, 2328, 2099, 0, 520, 2146, 554, 2157, 2328, 556, + 2328, 2156, 2328, 2150, 606, 2328, 555, 2090, 2109, 2092, + 2109, 2097, 2149, 2104, 2099, 2102, 2097, 537, 2328, 2099, + 586, 2138, 2096, 2093, 2094, 584, 2098, 2138, 2086, 2081, + 2078, 2074, 2076, 2127, 2084, 2073, 2089, 2123, 2069, 607, + 2082, 2082, 2065, 2066, 2079, 2077, 2065, 2075, 2070, 2077, + 2072, 2057, 574, 2066, 2069, 2064, 577, 2063, 2059, 2109, + 422, 563, 2328, 2103, 2053, 2052, 2045, 2047, 2059, 2050, + 2039, 2056, 2045, 2050, 596, 2097, 2050, 589, 2047, 2050, + + 2050, 2048, 2037, 2037, 2049, 583, 2024, 2025, 2046, 595, + 2028, 2025, 2039, 2042, 2037, 2023, 2035, 2034, 2033, 2028, + 2031, 2030, 2029, 2028, 558, 2071, 2030, 2069, 2068, 2010, + 652, 2023, 2328, 2328, 2022, 0, 604, 2064, 2063, 2328, + 2062, 2328, 616, 664, 629, 2061, 2055, 2008, 2010, 1998, + 2328, 2003, 2009, 2012, 1995, 2010, 1997, 1996, 2328, 2006, + 610, 1997, 1994, 2006, 566, 1991, 1993, 2328, 1999, 1984, + 1986, 1997, 1995, 1990, 653, 1997, 1985, 1978, 2029, 2328, + 1976, 1992, 2026, 2030, 1986, 1980, 1982, 1983, 1967, 1984, + 2018, 1969, 1964, 1963, 1965, 1961, 1957, 556, 1976, 1950, + + 1957, 1962, 1955, 1971, 2005, 2009, 2328, 1954, 1950, 2006, + 1957, 1951, 1958, 1943, 1953, 1941, 1955, 1944, 1940, 1942, + 1937, 2328, 1994, 2328, 1936, 1935, 1928, 1945, 1984, 1983, + 1928, 1933, 1942, 1936, 1930, 1939, 688, 1976, 1938, 1921, + 1921, 1916, 1912, 1918, 1923, 1916, 1924, 1928, 1911, 1969, + 1910, 1962, 1907, 1908, 1907, 1919, 1908, 2328, 1918, 2328, + 2328, 1907, 2328, 1917, 1953, 1913, 0, 1956, 2328, 2328, + 2328, 636, 632, 691, 2328, 640, 1915, 1895, 1948, 1893, + 1946, 1891, 1890, 1889, 1896, 1889, 1897, 1900, 1882, 1882, + 1897, 1896, 622, 1895, 1894, 1878, 1893, 1875, 1922, 1889, + + 1927, 1871, 1873, 1885, 1885, 1884, 2328, 1869, 1866, 1924, + 1879, 1871, 1877, 1868, 1876, 2328, 1861, 1872, 1876, 1858, + 1870, 1871, 636, 1853, 1847, 1852, 1849, 1864, 1863, 1864, + 1843, 1853, 1859, 1902, 1857, 1856, 1848, 1839, 2328, 1840, + 1842, 2328, 1850, 1889, 1888, 16, 1849, 1886, 1831, 1832, + 1835, 1836, 1827, 2328, 1841, 1827, 695, 1819, 1823, 1839, + 1836, 1828, 1873, 1825, 1832, 1870, 2328, 1816, 1814, 1828, + 1812, 1826, 1829, 1863, 1862, 1861, 1860, 1805, 1858, 1857, + 2328, 1802, 1816, 698, 1817, 1816, 1813, 1813, 1850, 1810, + 1799, 1801, 2328, 2328, 663, 676, 1793, 1810, 1802, 1789, + + 1783, 1804, 1845, 669, 1839, 1799, 1837, 1836, 1788, 1782, + 1785, 1793, 1796, 1780, 1781, 1790, 1788, 1770, 1825, 1785, + 1775, 1783, 1821, 1782, 661, 1773, 1775, 92, 209, 269, + 294, 313, 2328, 380, 399, 451, 501, 507, 544, 551, + 579, 597, 588, 611, 654, 662, 659, 715, 716, 661, + 674, 663, 673, 720, 678, 728, 2328, 729, 685, 683, + 685, 681, 675, 730, 693, 682, 2328, 684, 696, 685, + 698, 700, 744, 687, 746, 689, 704, 2328, 698, 692, + 703, 688, 699, 712, 691, 697, 752, 716, 700, 700, + 713, 757, 758, 759, 706, 724, 719, 726, 721, 706, + + 718, 719, 725, 712, 2328, 777, 735, 737, 727, 739, + 729, 742, 733, 739, 783, 759, 746, 728, 735, 749, + 794, 744, 2328, 742, 757, 754, 740, 747, 746, 744, + 763, 760, 761, 749, 756, 757, 766, 770, 806, 768, + 758, 771, 757, 756, 763, 819, 760, 761, 767, 783, + 766, 820, 775, 2328, 785, 785, 778, 789, 787, 832, + 774, 776, 791, 792, 780, 778, 840, 797, 783, 786, + 2328, 2328, 802, 801, 802, 807, 795, 805, 807, 2328, + 2328, 807, 809, 796, 814, 801, 799, 817, 804, 804, + 855, 802, 806, 864, 2328, 865, 2328, 810, 824, 824, + + 869, 817, 816, 820, 814, 874, 827, 817, 818, 814, + 824, 828, 839, 823, 841, 836, 838, 831, 833, 834, + 846, 836, 851, 892, 849, 854, 831, 854, 838, 2328, + 845, 846, 860, 851, 849, 899, 846, 861, 879, 887, + 856, 905, 867, 907, 2328, 873, 861, 856, 857, 869, + 876, 865, 866, 862, 880, 866, 867, 877, 886, 922, + 869, 887, 879, 875, 928, 935, 892, 883, 2328, 887, + 895, 897, 882, 898, 888, 900, 894, 941, 907, 891, + 892, 2328, 908, 911, 894, 896, 954, 897, 916, 2328, + 915, 918, 899, 917, 905, 958, 916, 912, 909, 962, + + 911, 964, 926, 912, 930, 929, 915, 930, 922, 918, + 936, 935, 922, 2328, 2328, 930, 977, 930, 2328, 938, + 941, 934, 987, 2328, 936, 942, 986, 937, 938, 950, + 944, 948, 946, 944, 955, 1000, 944, 949, 1003, 1004, + 948, 960, 2328, 948, 956, 954, 1005, 967, 954, 955, + 964, 976, 963, 961, 975, 976, 992, 997, 979, 984, + 967, 967, 969, 969, 989, 988, 979, 968, 985, 992, + 1035, 977, 997, 990, 994, 998, 981, 998, 989, 1044, + 991, 995, 2328, 1042, 991, 992, 992, 1013, 1010, 1050, + 999, 1017, 1018, 1004, 1012, 1021, 1001, 1016, 1023, 1065, + + 1066, 2328, 1019, 1068, 1069, 1011, 1021, 1031, 1034, 1017, + 1019, 1019, 1026, 1035, 1023, 1030, 1025, 1032, 1044, 1085, + 1032, 1031, 1048, 1089, 1039, 1043, 1041, 1039, 1034, 1095, + 1096, 1046, 1098, 1094, 1100, 1053, 2328, 1058, 1051, 1042, + 1061, 1055, 1050, 1060, 1057, 1062, 1058, 1070, 2328, 1055, + 1057, 2328, 2328, 1057, 1117, 1056, 1075, 1076, 1078, 1069, + 1123, 1124, 1077, 1062, 1076, 1084, 1066, 1071, 1110, 1101, + 1133, 1088, 1088, 1092, 1079, 1081, 1098, 1093, 1097, 1142, + 1090, 1094, 2328, 1091, 1087, 1104, 1084, 1105, 1095, 1146, + 1099, 2328, 1112, 1111, 1114, 1098, 1110, 1115, 1102, 1162, + + 1115, 1120, 1107, 1118, 1110, 1116, 1112, 1130, 1131, 1132, + 2328, 2328, 1130, 2328, 1132, 2328, 1117, 1128, 1119, 1138, + 1128, 1180, 1137, 1134, 1178, 1142, 1131, 1138, 1143, 1140, + 1146, 2328, 1139, 1131, 1192, 2328, 1193, 1140, 1147, 1191, + 1153, 2328, 2328, 1150, 2328, 1141, 2328, 1141, 1144, 1158, + 1163, 1146, 1157, 1206, 1163, 1164, 1165, 1205, 1161, 1212, + 1165, 1214, 2328, 1161, 1216, 1217, 1174, 1176, 2328, 2328, + 1159, 1221, 1217, 1181, 1165, 1177, 1196, 1227, 2328, 1184, + 1175, 1186, 1231, 1178, 1193, 1229, 1181, 2328, 1177, 1193, + 1181, 1195, 1196, 1193, 1237, 1200, 1190, 1200, 1206, 1194, + + 1194, 1249, 1245, 1251, 1208, 2328, 1210, 1210, 1212, 1205, + 1214, 1215, 1212, 1202, 1205, 1206, 1265, 1212, 1267, 1214, + 1269, 1212, 1271, 2328, 1229, 1208, 1223, 1217, 1220, 1233, + 1236, 1235, 1233, 1283, 1236, 2328, 2328, 1232, 1242, 1227, + 1283, 1244, 1230, 1291, 1292, 1236, 1246, 1295, 1252, 2328, + 1244, 1244, 1246, 1248, 1301, 1244, 2328, 1245, 2328, 1247, + 2328, 2328, 1260, 1262, 1263, 2328, 1250, 1258, 1310, 1259, + 1291, 2328, 1313, 1263, 1310, 2328, 1258, 1266, 1260, 1257, + 1260, 1263, 1263, 1259, 1281, 1320, 1273, 1285, 1288, 1276, + 1279, 1272, 1332, 1280, 2328, 1275, 2328, 1278, 1337, 1290, + + 1281, 1296, 1296, 1299, 1299, 1296, 1340, 1302, 2328, 1294, + 2328, 1295, 2328, 1305, 2328, 1345, 1307, 1308, 1305, 1349, + 1297, 1312, 1352, 1314, 1306, 2328, 1303, 1303, 1309, 1308, + 1306, 1321, 1321, 2328, 2328, 1362, 1309, 2328, 1326, 1311, + 1311, 1313, 1319, 2328, 1374, 1316, 1326, 1337, 1335, 1379, + 1332, 1341, 2328, 1338, 1357, 2328, 1341, 1326, 1386, 1387, + 1344, 1349, 1331, 1391, 1392, 1393, 1389, 1353, 1350, 1346, + 1339, 1394, 1352, 1353, 2328, 1343, 1356, 1404, 2328, 1342, + 1402, 1365, 1361, 1406, 1354, 1359, 1357, 1416, 1372, 1360, + 1419, 1369, 1421, 1382, 1371, 1365, 1425, 1367, 1376, 1369, + + 1383, 1386, 1431, 1373, 1390, 1386, 1376, 1391, 1375, 1433, + 1434, 1435, 1382, 1437, 1400, 2328, 1400, 1387, 1386, 1442, + 2328, 1383, 1401, 1450, 1420, 1452, 1405, 2328, 2328, 1396, + 1407, 1456, 2328, 2328, 2328, 1402, 1407, 1405, 1455, 1413, + 1418, 1406, 1422, 1411, 1409, 1410, 2328, 1468, 1414, 1465, + 1408, 1413, 1475, 1423, 1433, 1434, 2328, 1480, 1433, 1477, + 2328, 1435, 2328, 1426, 1441, 1429, 2328, 1439, 1440, 1441, + 1490, 1448, 2328, 1487, 1453, 1429, 1447, 1448, 1457, 1439, + 1445, 1447, 1501, 1460, 1459, 1451, 1505, 1455, 1459, 1464, + 1457, 2328, 1510, 2328, 1459, 1512, 1454, 2328, 1457, 1467, + + 1511, 1459, 1474, 1461, 1476, 1462, 1469, 1469, 1480, 2328, + 1474, 1469, 1468, 1528, 1481, 2328, 1525, 1476, 1473, 2328, + 1487, 1474, 1490, 1492, 1537, 1490, 1487, 1495, 1489, 2328, + 1542, 1483, 1485, 1501, 1494, 1484, 1500, 1501, 1495, 1511, + 2328, 1501, 1553, 1512, 2328, 1496, 1503, 1557, 1553, 2328, + 1515, 2328, 1555, 1517, 1518, 1503, 1504, 1512, 1566, 1514, + 1563, 1564, 1519, 1531, 1528, 1519, 1526, 2328, 1523, 1528, + 1526, 1578, 1579, 1527, 1537, 1524, 2328, 1539, 1540, 1541, + 1542, 2328, 1532, 1544, 1589, 1546, 1591, 1533, 1541, 1535, + 1543, 1556, 2328, 1533, 1593, 1554, 2328, 1558, 1543, 1543, + + 1558, 1551, 1550, 1561, 1548, 2328, 1564, 1552, 1555, 1611, + 1569, 1560, 1572, 1563, 1572, 1574, 1578, 2328, 2328, 1571, + 1561, 1621, 1564, 1623, 1565, 1625, 1583, 1627, 2328, 1628, + 2328, 1624, 1586, 1583, 1588, 1575, 1634, 1577, 1582, 1573, + 1638, 1591, 1592, 1582, 1599, 1598, 1639, 1583, 1602, 1603, + 2328, 1600, 1649, 1606, 1607, 1652, 1609, 1612, 1599, 1608, + 2328, 1657, 2328, 1610, 2328, 1619, 2328, 2328, 1601, 1661, + 1608, 1663, 1606, 2328, 1625, 1666, 1625, 2328, 1616, 1606, + 1665, 1631, 1624, 1620, 1674, 1617, 1619, 1624, 2328, 1620, + 1622, 2328, 1627, 1637, 1622, 1631, 2328, 1632, 1626, 1638, + + 2328, 1634, 2328, 1644, 1637, 2328, 1639, 1647, 1692, 1633, + 1635, 1632, 1656, 2328, 1643, 1650, 1653, 1642, 1696, 1643, + 1651, 1660, 1661, 1662, 1663, 1656, 1651, 1652, 1656, 1668, + 1713, 2328, 1659, 1671, 1716, 1665, 1667, 1665, 1720, 1673, + 1660, 1675, 1680, 1725, 1726, 1727, 1728, 1685, 1730, 1731, + 1681, 1675, 2328, 1691, 1735, 2328, 1692, 1677, 1695, 2328, + 1686, 1700, 1696, 1689, 2328, 2328, 2328, 2328, 1743, 2328, + 2328, 1700, 1745, 1706, 2328, 1747, 1689, 1749, 1704, 1703, + 1704, 1694, 2328, 1749, 2328, 1696, 2328, 1708, 2328, 1757, + 1699, 1715, 1760, 1721, 1718, 1710, 2328, 1760, 1709, 2328, + + 1721, 1714, 1769, 1717, 1712, 1714, 1729, 1714, 2328, 1775, + 1728, 1777, 1778, 1726, 2328, 1728, 2328, 2328, 1722, 1738, + 1783, 1784, 2328, 2328, 2328, 1790, 1795, 1800, 1805, 1810, + 1815, 1820, 1823, 1797, 1802, 1804, 1817 } ; -static const flex_int16_t yy_def[1915] = +static const flex_int16_t yy_def[1938] = { 0, - 1903, 1903, 1904, 1904, 1903, 1903, 1903, 1903, 1903, 1903, - 1902, 1902, 1902, 1902, 1902, 1905, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1906, - 1902, 1902, 1902, 1907, 15, 1902, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1908, 45, 45, 45, + 1926, 1926, 1927, 1927, 1926, 1926, 1926, 1926, 1926, 1926, + 1925, 1925, 1925, 1925, 1925, 1928, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1929, + 1925, 1925, 1925, 1930, 15, 1925, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1931, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1905, 1902, 1902, - 1902, 1902, 1902, 1902, 1909, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1906, 1902, 1907, 1902, + 45, 45, 45, 45, 45, 45, 45, 1928, 1925, 1925, + 1925, 1925, 1925, 1925, 1932, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1929, 1925, 1930, 1925, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1910, 45, 1908, 45, 45, 45, 45, 45, + 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1933, 45, 1931, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1909, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1911, 45, 45, 1902, 45, 45, 1902, 45, 45, + 45, 45, 1932, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1934, 45, 45, 1925, 45, 45, 1925, 45, 45, - 45, 45, 45, 45, 1910, 1902, 1908, 45, 45, 45, + 45, 45, 45, 45, 1933, 1925, 1931, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1912, 45, 45, 45, 45, 1902, 45, - 1902, 45, 1902, 45, 1908, 1902, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, + 45, 45, 45, 45, 45, 45, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1935, 45, 45, 45, 45, 1925, 45, + 1925, 45, 1925, 45, 1931, 1925, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 1902, 1902, 1913, 45, 45, 45, 1902, - 45, 1902, 45, 1908, 45, 45, 45, 45, 45, 45, - 1902, 45, 45, 45, 45, 45, 45, 45, 1902, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1902, + 45, 45, 1925, 1925, 1925, 1936, 45, 45, 45, 1925, + 45, 1925, 45, 1931, 45, 45, 45, 45, 45, 45, + 1925, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 1902, 45, 45, 45, 45, 45, 45, + 45, 1925, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 1902, - 1902, 45, 1902, 45, 45, 1902, 1914, 45, 1902, 1902, - 1902, 45, 45, 45, 1902, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1925, 45, 1925, + 1925, 45, 1925, 45, 45, 1925, 1937, 45, 1925, 1925, + 1925, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 1902, 45, 45, 45, 45, 45, 45, + 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 1902, - 45, 45, 45, 45, 45, 45, 45, 1902, 1902, 45, + 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 45, 1902, 45, 45, 45, 45, 45, + 1925, 1925, 45, 45, 45, 45, 45, 45, 45, 1925, + 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1925, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1902, 1902, 45, 45, 45, 1902, 45, 45, 45, 45, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1902, + 45, 45, 45, 1925, 1925, 45, 45, 45, 1925, 45, + 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1902, 45, 45, 1902, 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 1925, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 1902, 45, 1902, 45, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, - 1902, 45, 45, 45, 45, 45, 1902, 1902, 45, 1902, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 1902, 1902, 45, 45, 45, 45, 45, - 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1902, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1902, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, - 1902, 45, 1902, 45, 1902, 1902, 45, 45, 45, 1902, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 1902, + 1925, 1925, 45, 1925, 45, 1925, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1925, 45, 45, 45, 1925, 45, 45, 45, 45, + 45, 1925, 1925, 45, 1925, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 1902, + 45, 45, 1925, 45, 45, 45, 45, 45, 1925, 1925, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 1902, 45, 1902, 45, 1902, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, - 45, 45, 45, 45, 45, 45, 1902, 1902, 45, 45, - 1902, 45, 45, 45, 45, 45, 1902, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 45, 45, 1902, 45, + 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1925, 1925, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1925, + 45, 45, 45, 45, 45, 45, 1925, 45, 1925, 45, + 1925, 1925, 45, 45, 45, 1925, 45, 45, 45, 45, + 45, 1925, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1925, 45, 1925, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 1925, 45, 1925, 45, 1925, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, + 45, 45, 45, 1925, 1925, 45, 45, 1925, 45, 45, + 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 1925, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1925, 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 1902, 45, 45, 45, 45, 45, 45, 1902, - 1902, 45, 45, 45, 1902, 1902, 1902, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 1902, 45, 1902, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1902, 45, 1902, 45, 45, 45, 1902, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1902, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 1902, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1902, 45, 45, 45, 1902, 45, 45, 45, 45, 1902, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, - 45, 45, 45, 45, 45, 1902, 45, 45, 45, 45, - 1902, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1902, 45, 45, 45, 1902, 45, 45, 45, 45, - 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 1902, 1902, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 1902, 45, + 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, + 1925, 45, 45, 45, 45, 45, 45, 1925, 1925, 45, + 45, 45, 1925, 1925, 1925, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 1925, 45, 1925, 45, 45, 45, 1925, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 1902, - 45, 1902, 45, 1902, 1902, 45, 45, 45, 45, 45, - 1902, 45, 45, 45, 1902, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1902, 45, 45, 1902, 45, 45, - 45, 45, 1902, 45, 45, 45, 1902, 45, 1902, 45, - 45, 1902, 45, 45, 45, 45, 45, 45, 45, 1902, + 45, 1925, 45, 1925, 45, 45, 45, 1925, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1925, + 45, 45, 45, 45, 45, 1925, 45, 45, 45, 1925, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1925, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1925, 45, 45, 45, 1925, 45, 45, 45, 45, 1925, + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1925, 45, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 45, + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 45, 1925, 45, 45, 45, + + 45, 45, 45, 45, 45, 1925, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1925, 1925, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 45, + 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1925, 45, 1925, 45, 1925, 45, 1925, 1925, 45, 45, + 45, 45, 45, 1925, 45, 45, 45, 1925, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 1925, 45, 45, 45, 45, 1925, 45, 45, 45, + + 1925, 45, 1925, 45, 45, 1925, 45, 45, 45, 45, + 45, 45, 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 1902, - 45, 45, 1902, 45, 45, 45, 45, 1902, 1902, 1902, - 1902, 45, 1902, 1902, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 45, 1902, 45, 1902, 45, 1902, 1902, - 45, 45, 45, 45, 45, 45, 1902, 45, 45, 1902, - 45, 45, 45, 45, 45, 45, 45, 1902, 45, 45, - 45, 45, 45, 1902, 1902, 45, 45, 45, 45, 1902, - - 1902, 0, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902 + 45, 1925, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 45, 1925, 45, 45, 45, 1925, + 45, 45, 45, 45, 1925, 1925, 1925, 1925, 45, 1925, + 1925, 45, 45, 45, 1925, 45, 45, 45, 45, 45, + 45, 45, 1925, 45, 1925, 45, 1925, 45, 1925, 45, + 45, 45, 45, 45, 45, 45, 1925, 45, 45, 1925, + + 45, 45, 45, 45, 45, 45, 45, 45, 1925, 45, + 45, 45, 45, 45, 1925, 45, 1925, 1925, 45, 45, + 45, 45, 1925, 1925, 0, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925 } ; -static const flex_int16_t yy_nxt[2379] = +static const flex_int16_t yy_nxt[2402] = { 0, - 1902, 13, 14, 13, 1902, 15, 16, 1902, 17, 18, + 1925, 13, 14, 13, 1925, 15, 16, 1925, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, - 84, 766, 37, 14, 37, 85, 25, 26, 38, 100, - 1902, 27, 37, 14, 37, 42, 28, 42, 38, 90, + 84, 767, 37, 14, 37, 85, 25, 26, 38, 100, + 1925, 27, 37, 14, 37, 42, 28, 42, 38, 90, 91, 29, 197, 30, 13, 14, 13, 89, 90, 25, 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, - 767, 13, 14, 13, 33, 40, 101, 90, 91, 197, + 768, 13, 14, 13, 33, 40, 101, 90, 91, 197, 89, 34, 35, 13, 14, 13, 93, 15, 16, 94, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 13, 14, 13, 89, 39, 102, 25, 26, @@ -1405,7 +1411,7 @@ static const flex_int16_t yy_nxt[2379] = 106, 42, 41, 29, 108, 30, 111, 112, 92, 134, 41, 25, 31, 102, 135, 365, 87, 136, 87, 105, 32, 88, 88, 88, 88, 88, 33, 108, 106, 111, - 850, 112, 366, 34, 35, 44, 44, 44, 45, 45, + 852, 112, 366, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 45, 45, 48, 49, 50, 45, 51, 52, 53, 45, 45, 45, @@ -1413,13 +1419,13 @@ static const flex_int16_t yy_nxt[2379] = 58, 45, 59, 60, 61, 62, 63, 64, 65, 51, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 56, 45, 45, 45, 45, 45, 79, 851, + 76, 77, 56, 45, 45, 45, 45, 45, 79, 853, 80, 80, 80, 80, 80, 79, 102, 82, 82, 82, 82, 82, 204, 81, 83, 83, 83, 83, 83, 79, 81, 82, 82, 82, 82, 82, 105, 81, 118, 164, 109, 129, 116, 165, 81, 204, 81, 201, 117, 119, 110, 130, 120, 81, 121, 132, 122, 198, 184, 105, - 81, 185, 133, 109, 852, 233, 405, 81, 45, 406, + 81, 185, 133, 109, 854, 233, 405, 81, 45, 406, 131, 45, 45, 45, 201, 45, 45, 45, 110, 114, 137, 234, 45, 45, 184, 45, 45, 185, 199, 184, @@ -1427,132 +1433,132 @@ static const flex_int16_t yy_nxt[2379] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 123, 187, 45, 124, 125, 185, 45, 126, 127, 145, 45, 141, 142, 146, 294, 143, - 108, 147, 45, 853, 128, 144, 45, 186, 45, 115, + 108, 147, 45, 855, 128, 144, 45, 186, 45, 115, 153, 186, 295, 148, 111, 188, 196, 149, 154, 150, - 155, 151, 854, 152, 158, 156, 157, 159, 160, 166, + 155, 151, 856, 152, 158, 156, 157, 159, 160, 166, 173, 174, 228, 167, 229, 186, 168, 111, 161, 189, 109, 162, 196, 169, 170, 203, 251, 180, 171, 172, 110, 230, 181, 83, 83, 83, 83, 83, 88, 88, 88, 88, 88, 175, 242, 176, 81, 252, 177, 178, 100, 79, 203, 80, 80, 80, 80, 80, 110, 83, - 83, 83, 83, 83, 99, 179, 81, 855, 87, 81, + 83, 83, 83, 83, 99, 179, 81, 857, 87, 81, 87, 99, 81, 88, 88, 88, 88, 88, 79, 193, 82, 82, 82, 82, 82, 200, 202, 101, 243, 81, - 200, 193, 856, 81, 215, 81, 88, 88, 88, 88, + 200, 193, 858, 81, 215, 81, 88, 88, 88, 88, 88, 99, 211, 216, 217, 99, 275, 193, 208, 99, 276, 212, 508, 200, 202, 213, 81, 99, 259, 209, 231, 99, 509, 99, 192, 207, 207, 207, 207, 207, 222, 223, 278, 232, 207, 207, 207, 207, 207, 207, 224, 237, 271, 288, 238, 272, 273, 289, 239, 265, - 201, 290, 309, 307, 857, 373, 307, 207, 207, 207, + 201, 290, 309, 307, 859, 373, 307, 207, 207, 207, 207, 207, 207, 308, 266, 267, 268, 279, 280, 281, 308, 309, 315, 317, 320, 309, 318, 299, 282, 322, 283, 307, 284, 285, 310, 286, 324, 315, 386, 308, - 858, 335, 859, 414, 312, 315, 311, 320, 320, 336, + 860, 335, 861, 414, 312, 315, 311, 320, 320, 336, 437, 317, 322, 318, 337, 338, 415, 321, 374, 433, 327, 375, 425, 324, 325, 325, 325, 325, 325, 433, 439, 382, 456, 325, 325, 325, 325, 325, 325, 437, - 441, 459, 433, 860, 465, 437, 460, 441, 387, 457, + 441, 459, 433, 862, 465, 437, 460, 441, 387, 457, - 466, 522, 434, 439, 861, 630, 325, 325, 325, 325, + 466, 522, 434, 439, 863, 630, 325, 325, 325, 325, 325, 325, 480, 556, 597, 631, 557, 481, 441, 444, - 444, 444, 444, 444, 445, 510, 862, 598, 444, 444, + 444, 444, 444, 444, 445, 510, 864, 598, 444, 444, 444, 444, 444, 444, 496, 497, 498, 503, 526, 568, - 499, 535, 527, 504, 540, 536, 863, 572, 541, 573, - 864, 444, 444, 444, 444, 444, 444, 563, 607, 523, - 865, 588, 564, 608, 568, 482, 696, 568, 695, 589, + 499, 535, 527, 504, 540, 536, 865, 572, 541, 573, + 866, 444, 444, 444, 444, 444, 444, 563, 607, 523, + 867, 588, 564, 608, 568, 482, 696, 568, 695, 589, 483, 590, 591, 592, 572, 593, 573, 45, 45, 45, - 45, 45, 744, 745, 815, 866, 45, 45, 45, 45, - 45, 45, 574, 667, 696, 695, 694, 698, 668, 814, - - 777, 697, 867, 804, 699, 778, 868, 815, 869, 45, - 45, 45, 45, 45, 45, 805, 823, 824, 845, 825, - 870, 871, 846, 872, 873, 874, 847, 814, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, - 887, 888, 889, 890, 779, 891, 892, 893, 894, 895, + 45, 45, 716, 745, 746, 717, 45, 45, 45, 45, + 45, 45, 574, 667, 696, 695, 694, 698, 668, 815, + + 778, 697, 816, 805, 699, 779, 868, 869, 870, 45, + 45, 45, 45, 45, 45, 806, 824, 825, 847, 826, + 871, 872, 848, 873, 874, 816, 849, 815, 875, 876, + 878, 879, 877, 880, 881, 882, 883, 884, 885, 886, + 887, 888, 889, 890, 780, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, - 916, 918, 919, 922, 923, 924, 926, 917, 927, 920, - 928, 925, 929, 921, 930, 931, 932, 933, 934, 935, + 916, 917, 918, 920, 921, 924, 925, 926, 928, 919, + 929, 922, 930, 927, 931, 923, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, - 938, 966, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 976, 977, 978, 979, 981, 982, 983, 984, 980, - 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, + 966, 967, 940, 968, 969, 970, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 980, 981, 982, 984, 985, + 986, 987, 983, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1006, 1007, 1008, 1005, 1009, 1010, 1011, 1012, 1013, 1014, + 1005, 1006, 1007, 1009, 1010, 1011, 1008, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, - 1035, 1036, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, + 1035, 1036, 1037, 1038, 1039, 1041, 1042, 1043, 1044, 1045, - 1046, 1047, 1048, 1037, 1049, 1050, 1051, 1052, 1053, 1054, + 1046, 1047, 1048, 1049, 1050, 1051, 1040, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 1055, 1078, 1079, 1054, 1080, 1081, 1082, + 1075, 1076, 1077, 1078, 1079, 1080, 1058, 1081, 1082, 1057, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, - 1093, 1094, 1095, 1096, 1097, 1098, 1101, 1102, 1103, 1104, - 1099, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, + 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1105, 1106, 1107, 1108, 1103, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, - 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1124, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1124, 1125, 1126, 1127, 1129, 1130, 1131, 1132, 1133, 1134, + 1135, 1136, 1137, 1138, 1128, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, - 1154, 1155, 1156, 1100, 1157, 1158, 1159, 1160, 1161, 1162, - 1163, 1164, 1165, 1167, 1166, 1168, 1169, 1170, 1171, 1172, + 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1104, 1161, 1162, + 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1170, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - 1165, 1166, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, - 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1211, - 1213, 1214, 1215, 1210, 1216, 1217, 1218, 1219, 1220, 1221, + 1193, 1194, 1195, 1196, 1169, 1170, 1197, 1198, 1199, 1200, + 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, + 1211, 1212, 1213, 1214, 1216, 1218, 1219, 1220, 1215, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, - 1252, 1253, 1254, 1212, 1255, 1256, 1257, 1258, 1259, 1260, + 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1217, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, - 1291, 1292, 1293, 1294, 1272, 1295, 1296, 1297, 1298, 1299, - 1273, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, + 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1277, + 1300, 1301, 1302, 1303, 1304, 1278, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, - 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, + 1349, 1350, 1351, 1352, 1353, 1354, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, - 1370, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, + 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, - 1391, 1392, 1393, 1365, 1394, 1395, 1396, 1397, 1398, 1399, - 1400, 1401, 1349, 1402, 1403, 1404, 1405, 1406, 1407, 1408, - 1409, 1410, 1411, 1413, 1371, 1414, 1415, 1416, 1417, 1418, - 1412, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, + 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1371, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1355, 1408, + 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, + 1377, 1420, 1421, 1422, 1423, 1424, 1425, 1419, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, - 1468, 1469, 1470, 1448, 1471, 1472, 1473, 1474, 1475, 1476, - 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, + 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, + 1455, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, - 1527, 1528, 1529, 1531, 1532, 1533, 1534, 1535, 1536, 1537, + 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, - 1538, 1539, 1540, 1530, 1541, 1542, 1543, 1517, 1544, 1545, - 1546, 1547, 1548, 1550, 1551, 1552, 1553, 1554, 1555, 1556, - 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, + 1537, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, + 1548, 1538, 1549, 1550, 1551, 1525, 1552, 1553, 1554, 1555, + 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, - 1597, 1598, 1599, 1600, 1602, 1603, 1604, 1605, 1601, 1606, - 1549, 1607, 1608, 1609, 1610, 1584, 1611, 1612, 1613, 1614, - 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, + 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, + 1607, 1608, 1609, 1610, 1612, 1613, 1614, 1615, 1611, 1558, + 1616, 1617, 1618, 1619, 1593, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, @@ -1581,79 +1587,83 @@ static const flex_int16_t yy_nxt[2379] = 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, - 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1883, 1882, 1884, + 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, - 1895, 1896, 1897, 1898, 1899, 1900, 1901, 12, 12, 12, - 12, 12, 36, 36, 36, 36, 36, 78, 314, 78, - 78, 78, 97, 436, 97, 567, 97, 99, 99, 99, - 99, 99, 113, 113, 113, 113, 113, 183, 99, 183, - - 183, 183, 205, 205, 205, 849, 848, 844, 843, 842, - 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, - 831, 830, 829, 828, 827, 826, 822, 821, 820, 819, - 818, 817, 816, 813, 812, 811, 810, 809, 808, 807, - 806, 803, 802, 801, 800, 799, 798, 797, 796, 795, - 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, - 784, 783, 782, 781, 780, 776, 775, 774, 773, 772, - 771, 770, 769, 768, 765, 764, 763, 762, 761, 760, - 759, 758, 757, 756, 755, 754, 753, 752, 751, 750, - 749, 748, 747, 746, 743, 742, 741, 740, 739, 738, - - 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, - 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, - 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, - 707, 706, 705, 704, 703, 702, 701, 700, 694, 693, - 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, - 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, - 672, 671, 670, 669, 666, 665, 664, 663, 662, 661, - 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, - 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, - 640, 639, 638, 637, 636, 635, 634, 633, 632, 629, - - 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, - 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, - 606, 605, 604, 603, 602, 601, 600, 599, 596, 595, - 594, 587, 586, 585, 584, 583, 582, 581, 580, 579, - 578, 577, 576, 575, 571, 570, 569, 566, 565, 562, - 561, 560, 559, 558, 555, 554, 553, 552, 551, 550, - 549, 548, 547, 546, 545, 544, 543, 542, 539, 538, - 537, 534, 533, 532, 531, 530, 529, 528, 525, 524, - 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, - 511, 507, 506, 505, 502, 501, 500, 495, 494, 493, - - 492, 491, 490, 489, 488, 487, 486, 485, 484, 479, - 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, - 468, 467, 464, 463, 462, 461, 458, 455, 454, 453, - 452, 451, 450, 449, 448, 447, 446, 443, 442, 440, - 438, 435, 432, 431, 430, 429, 428, 427, 426, 424, - 423, 422, 421, 420, 419, 418, 417, 416, 413, 412, - 411, 410, 409, 408, 407, 404, 403, 402, 401, 400, - 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, - 389, 388, 385, 384, 383, 381, 380, 379, 378, 377, - 376, 372, 371, 370, 369, 368, 367, 364, 363, 362, - - 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, - 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, - 341, 340, 339, 334, 333, 332, 331, 330, 329, 328, - 326, 206, 323, 321, 319, 316, 313, 306, 305, 304, - 303, 302, 301, 300, 298, 297, 296, 293, 292, 291, - 287, 277, 274, 270, 269, 264, 263, 262, 261, 260, - 258, 257, 256, 255, 254, 253, 250, 249, 248, 247, - 246, 245, 244, 241, 240, 236, 235, 227, 226, 225, - 221, 220, 219, 218, 214, 210, 206, 195, 194, 191, - 190, 182, 163, 140, 107, 104, 103, 43, 98, 96, - - 95, 86, 43, 1902, 11, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902 + 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1903, 1902, 1904, + 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, + 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, + 12, 12, 12, 12, 12, 36, 36, 36, 36, 36, + + 78, 314, 78, 78, 78, 97, 436, 97, 567, 97, + 99, 99, 99, 99, 99, 113, 113, 113, 113, 113, + 183, 99, 183, 183, 183, 205, 205, 205, 851, 850, + 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, + 836, 835, 834, 833, 832, 831, 830, 829, 828, 827, + 823, 822, 821, 820, 819, 818, 817, 814, 813, 812, + 811, 810, 809, 808, 807, 804, 803, 802, 801, 800, + 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, + 789, 788, 787, 786, 785, 784, 783, 782, 781, 777, + 776, 775, 774, 773, 772, 771, 770, 769, 766, 765, + + 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, + 754, 753, 752, 751, 750, 749, 748, 747, 744, 743, + 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, + 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, + 722, 721, 720, 719, 718, 715, 714, 713, 712, 711, + 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, + 700, 694, 693, 692, 691, 690, 689, 688, 687, 686, + 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, + 675, 674, 673, 672, 671, 670, 669, 666, 665, 664, + 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, + + 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, + 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, + 633, 632, 629, 628, 627, 626, 625, 624, 623, 622, + 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, + 611, 610, 609, 606, 605, 604, 603, 602, 601, 600, + 599, 596, 595, 594, 587, 586, 585, 584, 583, 582, + 581, 580, 579, 578, 577, 576, 575, 571, 570, 569, + 566, 565, 562, 561, 560, 559, 558, 555, 554, 553, + 552, 551, 550, 549, 548, 547, 546, 545, 544, 543, + 542, 539, 538, 537, 534, 533, 532, 531, 530, 529, + + 528, 525, 524, 521, 520, 519, 518, 517, 516, 515, + 514, 513, 512, 511, 507, 506, 505, 502, 501, 500, + 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, + 485, 484, 479, 478, 477, 476, 475, 474, 473, 472, + 471, 470, 469, 468, 467, 464, 463, 462, 461, 458, + 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, + 443, 442, 440, 438, 435, 432, 431, 430, 429, 428, + 427, 426, 424, 423, 422, 421, 420, 419, 418, 417, + 416, 413, 412, 411, 410, 409, 408, 407, 404, 403, + 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, + + 392, 391, 390, 389, 388, 385, 384, 383, 381, 380, + 379, 378, 377, 376, 372, 371, 370, 369, 368, 367, + 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, + 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, + 344, 343, 342, 341, 340, 339, 334, 333, 332, 331, + 330, 329, 328, 326, 206, 323, 321, 319, 316, 313, + 306, 305, 304, 303, 302, 301, 300, 298, 297, 296, + 293, 292, 291, 287, 277, 274, 270, 269, 264, 263, + 262, 261, 260, 258, 257, 256, 255, 254, 253, 250, + 249, 248, 247, 246, 245, 244, 241, 240, 236, 235, + + 227, 226, 225, 221, 220, 219, 218, 214, 210, 206, + 195, 194, 191, 190, 182, 163, 140, 107, 104, 103, + 43, 98, 96, 95, 86, 43, 1925, 11, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + + 1925 } ; -static const flex_int16_t yy_chk[2379] = +static const flex_int16_t yy_chk[2402] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1670,7 +1680,7 @@ static const flex_int16_t yy_chk[2379] = 51, 42, 9, 2, 53, 2, 55, 56, 31, 64, 10, 2, 2, 47, 64, 245, 25, 64, 25, 50, 2, 25, 25, 25, 25, 25, 2, 53, 51, 55, - 727, 56, 245, 2, 2, 15, 15, 15, 15, 15, + 728, 56, 245, 2, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1678,13 +1688,13 @@ static const flex_int16_t yy_chk[2379] = 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 17, 728, + 15, 15, 15, 15, 15, 15, 15, 15, 17, 729, 17, 17, 17, 17, 17, 19, 58, 19, 19, 19, 19, 19, 112, 17, 20, 20, 20, 20, 20, 22, 19, 22, 22, 22, 22, 22, 62, 20, 59, 73, 54, 61, 58, 73, 22, 112, 17, 109, 58, 59, 54, 61, 59, 19, 59, 63, 59, 107, 89, 62, - 20, 90, 63, 54, 729, 131, 281, 22, 45, 281, + 20, 90, 63, 54, 730, 131, 281, 22, 45, 281, 62, 45, 45, 45, 109, 45, 45, 45, 54, 57, 65, 131, 45, 45, 89, 45, 57, 90, 107, 92, @@ -1692,230 +1702,234 @@ static const flex_int16_t yy_chk[2379] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 60, 92, 57, 60, 60, 93, 57, 60, 60, 68, 57, 67, 67, 68, 171, 67, - 69, 68, 57, 730, 60, 67, 57, 91, 57, 57, + 69, 68, 57, 731, 60, 67, 57, 91, 57, 57, 70, 94, 171, 68, 76, 93, 105, 68, 70, 69, - 70, 69, 731, 69, 71, 70, 70, 71, 71, 74, + 70, 69, 732, 69, 71, 70, 70, 71, 71, 74, 75, 75, 129, 74, 129, 91, 74, 76, 71, 94, 75, 71, 105, 74, 74, 111, 145, 76, 74, 74, 75, 129, 76, 79, 79, 79, 79, 79, 87, 87, 87, 87, 87, 75, 137, 75, 79, 145, 75, 75, 99, 80, 111, 80, 80, 80, 80, 80, 75, 83, - 83, 83, 83, 83, 101, 75, 80, 733, 81, 79, + 83, 83, 83, 83, 101, 75, 80, 734, 81, 79, 81, 101, 83, 81, 81, 81, 81, 81, 82, 102, 82, 82, 82, 82, 82, 108, 110, 99, 137, 80, - 152, 116, 734, 82, 120, 83, 88, 88, 88, 88, + 152, 116, 735, 82, 120, 83, 88, 88, 88, 88, 88, 101, 118, 120, 120, 101, 163, 102, 116, 101, 163, 118, 381, 108, 110, 118, 82, 101, 152, 116, 130, 101, 381, 101, 101, 115, 115, 115, 115, 115, 125, 125, 165, 130, 115, 115, 115, 115, 115, 115, 125, 134, 161, 167, 134, 161, 161, 167, 134, 158, - 175, 167, 186, 184, 735, 252, 187, 115, 115, 115, + 175, 167, 186, 184, 736, 252, 187, 115, 115, 115, 115, 115, 115, 185, 158, 158, 158, 165, 165, 165, 188, 189, 193, 196, 200, 186, 197, 175, 165, 202, 165, 184, 165, 165, 187, 165, 204, 209, 263, 185, - 736, 217, 737, 289, 189, 193, 188, 200, 259, 217, + 737, 217, 738, 289, 189, 193, 188, 200, 259, 217, 315, 196, 202, 197, 217, 217, 289, 299, 252, 307, 209, 252, 299, 204, 207, 207, 207, 207, 207, 310, 317, 259, 338, 207, 207, 207, 207, 207, 207, 315, - 320, 341, 307, 738, 346, 327, 341, 382, 263, 338, + 320, 341, 307, 739, 346, 327, 341, 382, 263, 338, - 346, 395, 310, 317, 739, 498, 207, 207, 207, 207, + 346, 395, 310, 317, 740, 498, 207, 207, 207, 207, 207, 207, 360, 425, 465, 498, 425, 360, 320, 325, - 325, 325, 325, 325, 327, 382, 740, 465, 325, 325, + 325, 325, 325, 325, 327, 382, 741, 465, 325, 325, 325, 325, 325, 325, 373, 373, 373, 377, 398, 437, - 373, 406, 398, 377, 410, 406, 741, 443, 410, 443, - 742, 325, 325, 325, 325, 325, 325, 431, 475, 395, - 743, 461, 431, 475, 445, 360, 573, 437, 572, 461, + 373, 406, 398, 377, 410, 406, 742, 443, 410, 443, + 743, 325, 325, 325, 325, 325, 325, 431, 475, 395, + 744, 461, 431, 475, 445, 360, 573, 437, 572, 461, 360, 461, 461, 461, 443, 461, 443, 444, 444, 444, - 444, 444, 623, 623, 696, 744, 444, 444, 444, 444, + 444, 444, 593, 623, 623, 593, 444, 444, 444, 444, 444, 444, 445, 537, 573, 572, 574, 576, 537, 695, - 657, 574, 745, 684, 576, 657, 746, 696, 747, 444, - 444, 444, 444, 444, 444, 684, 704, 704, 724, 704, - 748, 749, 724, 750, 751, 752, 724, 695, 752, 753, - 754, 755, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 767, 768, 769, 657, 770, 771, 772, 773, 774, - 775, 776, 778, 779, 780, 781, 782, 783, 784, 785, - 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 796, 803, 798, - 805, 801, 806, 798, 807, 808, 809, 810, 811, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 823, - - 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, - 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, - 815, 844, 845, 846, 847, 848, 849, 850, 851, 853, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 858, - 863, 864, 865, 866, 867, 868, 871, 872, 873, 874, - 875, 876, 877, 880, 881, 882, 883, 884, 885, 886, - 887, 888, 889, 886, 890, 891, 892, 894, 896, 897, - 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, - 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, - 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, - - 929, 930, 931, 919, 932, 933, 934, 935, 936, 937, - 938, 939, 940, 941, 942, 944, 945, 946, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 938, 962, 963, 937, 964, 965, 967, - 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, - 978, 980, 981, 982, 983, 984, 985, 986, 988, 989, - 984, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1013, 1014, 1015, 1017, 1018, 1019, 1020, 1022, - 1008, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, - - 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1042, - 1043, 1044, 1045, 984, 1046, 1047, 1048, 1049, 1050, 1051, - 1052, 1053, 1054, 1056, 1055, 1057, 1058, 1059, 1060, 1061, - 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, - 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1080, 1081, 1082, - 1054, 1055, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1099, 1100, 1101, - 1102, 1103, 1104, 1100, 1105, 1106, 1107, 1108, 1109, 1110, - 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, - 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, - - 1131, 1132, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, - 1142, 1143, 1144, 1101, 1146, 1147, 1150, 1151, 1152, 1153, - 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, - 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, - 1174, 1175, 1176, 1177, 1178, 1180, 1181, 1182, 1183, 1184, - 1185, 1186, 1188, 1189, 1165, 1190, 1191, 1192, 1193, 1194, - 1166, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, - 1204, 1205, 1208, 1210, 1212, 1213, 1214, 1215, 1216, 1217, - 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1228, - 1229, 1230, 1232, 1233, 1234, 1235, 1236, 1239, 1241, 1243, - - 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, - 1254, 1255, 1256, 1257, 1259, 1260, 1261, 1262, 1263, 1266, - 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1275, 1276, 1277, - 1278, 1279, 1280, 1281, 1282, 1284, 1285, 1286, 1287, 1288, - 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 1299, 1301, 1302, 1272, 1303, 1304, 1305, 1306, 1307, 1308, - 1309, 1310, 1253, 1311, 1312, 1313, 1314, 1315, 1316, 1317, - 1319, 1320, 1321, 1322, 1278, 1323, 1324, 1325, 1326, 1327, - 1321, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1338, - 1339, 1340, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, - - 1350, 1352, 1354, 1357, 1358, 1359, 1361, 1362, 1363, 1364, - 1365, 1367, 1368, 1369, 1371, 1372, 1373, 1374, 1375, 1376, - 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, - 1387, 1389, 1391, 1365, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1403, 1405, 1407, 1409, 1410, 1411, - 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1420, 1421, 1422, - 1423, 1424, 1425, 1426, 1429, 1430, 1432, 1433, 1434, 1435, - 1436, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1447, - 1448, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, - 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1468, 1469, - - 1470, 1472, 1473, 1461, 1474, 1475, 1476, 1448, 1477, 1478, - 1479, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, - 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, - 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, - 1509, 1510, 1511, 1512, 1514, 1515, 1516, 1517, 1518, 1519, - 1522, 1523, 1524, 1528, 1529, 1530, 1531, 1532, 1533, 1534, - 1535, 1536, 1537, 1539, 1540, 1541, 1542, 1543, 1539, 1544, - 1480, 1545, 1546, 1547, 1549, 1517, 1550, 1551, 1553, 1555, - 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1565, 1566, 1567, - 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, - - 1578, 1579, 1580, 1581, 1582, 1584, 1586, 1587, 1588, 1590, - 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1601, - 1602, 1603, 1604, 1605, 1607, 1608, 1609, 1611, 1612, 1613, - 1614, 1615, 1616, 1617, 1618, 1619, 1621, 1622, 1623, 1624, - 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1634, 1636, - 1637, 1638, 1639, 1641, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1658, 1659, - 1660, 1661, 1662, 1663, 1664, 1665, 1667, 1668, 1669, 1670, - 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, - 1683, 1684, 1685, 1687, 1688, 1689, 1690, 1691, 1692, 1693, - - 1694, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, - 1705, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, - 1718, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, - 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1739, - 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1749, 1751, - 1753, 1756, 1757, 1758, 1759, 1760, 1762, 1763, 1764, 1766, - 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1776, 1777, - 1779, 1780, 1781, 1782, 1784, 1785, 1786, 1788, 1790, 1791, - 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1801, 1802, 1803, - 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, - - 1814, 1815, 1816, 1818, 1819, 1820, 1821, 1822, 1823, 1824, - 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, - 1835, 1836, 1838, 1839, 1841, 1842, 1844, 1845, 1846, 1847, - 1852, 1855, 1856, 1857, 1859, 1860, 1861, 1862, 1863, 1864, - 1866, 1868, 1871, 1872, 1873, 1874, 1875, 1876, 1875, 1878, - 1879, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1889, 1890, - 1891, 1892, 1893, 1896, 1897, 1898, 1899, 1903, 1903, 1903, - 1903, 1903, 1904, 1904, 1904, 1904, 1904, 1905, 1911, 1905, - 1905, 1905, 1906, 1912, 1906, 1913, 1906, 1907, 1907, 1907, - 1907, 1907, 1908, 1908, 1908, 1908, 1908, 1909, 1914, 1909, - - 1909, 1909, 1910, 1910, 1910, 726, 725, 723, 722, 721, - 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, - 710, 709, 708, 707, 706, 705, 703, 702, 701, 700, - 699, 698, 697, 692, 691, 690, 689, 688, 687, 686, - 685, 683, 682, 680, 679, 678, 677, 676, 675, 674, - 673, 672, 671, 670, 669, 668, 666, 665, 664, 663, - 662, 661, 660, 659, 658, 656, 655, 653, 652, 651, - 650, 649, 648, 647, 645, 644, 643, 641, 640, 638, - 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, - 627, 626, 625, 624, 622, 621, 620, 619, 618, 617, - - 615, 614, 613, 612, 611, 610, 609, 608, 606, 605, - 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, - 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 584, 583, 582, 581, 580, 579, 578, 577, 568, 566, - 565, 564, 562, 559, 557, 556, 555, 554, 553, 552, - 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, - 541, 540, 539, 538, 536, 535, 534, 533, 532, 531, - 530, 529, 528, 527, 526, 525, 523, 521, 520, 519, - 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, - 508, 506, 505, 504, 503, 502, 501, 500, 499, 497, - - 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, - 486, 485, 484, 483, 482, 481, 479, 478, 477, 476, - 474, 473, 472, 471, 470, 469, 467, 466, 464, 463, - 462, 460, 458, 457, 456, 455, 454, 453, 452, 450, - 449, 448, 447, 446, 441, 439, 438, 435, 432, 430, - 429, 428, 427, 426, 424, 423, 422, 421, 420, 419, - 418, 417, 416, 415, 414, 413, 412, 411, 409, 408, - 407, 405, 404, 403, 402, 401, 400, 399, 397, 396, - 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, - 384, 380, 379, 378, 376, 375, 374, 372, 371, 370, - - 369, 368, 367, 366, 365, 364, 363, 362, 361, 359, - 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, - 348, 347, 345, 344, 343, 342, 340, 337, 336, 335, - 334, 333, 332, 331, 330, 329, 328, 324, 322, 318, - 316, 313, 306, 305, 304, 303, 302, 301, 300, 298, - 297, 296, 295, 294, 293, 292, 291, 290, 288, 287, - 286, 285, 284, 283, 282, 280, 279, 278, 277, 276, - 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, - 265, 264, 262, 261, 260, 258, 257, 256, 255, 254, - 253, 251, 250, 249, 248, 247, 246, 244, 243, 241, - - 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, - 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, - 220, 219, 218, 216, 215, 214, 213, 212, 211, 210, - 208, 205, 203, 201, 199, 194, 190, 182, 181, 180, - 179, 178, 177, 176, 174, 173, 172, 170, 169, 168, - 166, 164, 162, 160, 159, 157, 156, 155, 154, 153, - 151, 150, 149, 148, 147, 146, 144, 143, 142, 141, - 140, 139, 138, 136, 135, 133, 132, 128, 127, 126, - 124, 123, 122, 121, 119, 117, 113, 104, 103, 97, - 96, 77, 72, 66, 52, 49, 48, 43, 41, 39, - - 38, 24, 14, 11, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902 + 657, 574, 696, 684, 576, 657, 745, 746, 747, 444, + 444, 444, 444, 444, 444, 684, 704, 704, 725, 704, + 748, 749, 725, 750, 751, 696, 725, 695, 752, 753, + 754, 755, 753, 756, 758, 759, 760, 761, 762, 763, + 764, 765, 766, 768, 657, 769, 770, 771, 772, 773, + 774, 775, 776, 777, 779, 780, 781, 782, 783, 784, + 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, + 795, 796, 797, 798, 799, 800, 801, 802, 803, 797, + 804, 799, 806, 802, 807, 799, 808, 809, 810, 811, + 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, + + 822, 824, 825, 826, 827, 828, 829, 830, 831, 832, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, + 843, 844, 816, 845, 846, 847, 848, 849, 850, 851, + 852, 853, 855, 856, 857, 858, 859, 860, 861, 862, + 863, 864, 860, 865, 866, 867, 868, 869, 870, 873, + 874, 875, 876, 877, 878, 879, 882, 883, 884, 885, + 886, 887, 888, 889, 890, 891, 888, 892, 893, 894, + 896, 898, 899, 900, 901, 902, 903, 904, 905, 906, + 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + + 927, 928, 929, 931, 932, 933, 921, 934, 935, 936, + 937, 938, 939, 940, 941, 942, 943, 944, 946, 947, + 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, + 958, 959, 960, 961, 962, 963, 940, 964, 965, 939, + 966, 967, 968, 970, 971, 972, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 983, 984, 985, 986, 987, + 988, 989, 991, 992, 987, 993, 994, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, + 1008, 1009, 1010, 1011, 1012, 1013, 1016, 1017, 1018, 1020, + 1021, 1022, 1023, 1025, 1011, 1026, 1027, 1028, 1029, 1030, + + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1041, 1042, 1044, 1045, 1046, 1047, 1048, 987, 1049, 1050, + 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1058, 1060, + 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, + 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, + 1081, 1082, 1084, 1085, 1057, 1058, 1086, 1087, 1088, 1089, + 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, + 1100, 1101, 1103, 1104, 1105, 1106, 1107, 1108, 1104, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, + 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, + + 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1138, 1139, 1140, + 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1105, 1150, + 1151, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, + 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, + 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, + 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1193, 1169, + 1194, 1195, 1196, 1197, 1198, 1170, 1199, 1200, 1201, 1202, + 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1213, 1215, + 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, + 1227, 1228, 1229, 1230, 1231, 1233, 1234, 1235, 1237, 1238, + + 1239, 1240, 1241, 1244, 1246, 1248, 1249, 1250, 1251, 1252, + 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, + 1264, 1265, 1266, 1267, 1268, 1271, 1272, 1273, 1274, 1275, + 1276, 1277, 1278, 1280, 1281, 1282, 1283, 1284, 1285, 1286, + 1287, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, + 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1307, 1277, + 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1258, 1316, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1326, 1327, + 1283, 1328, 1329, 1330, 1331, 1332, 1333, 1327, 1334, 1335, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, + + 1348, 1349, 1351, 1352, 1353, 1354, 1355, 1356, 1358, 1360, + 1363, 1364, 1365, 1367, 1368, 1369, 1370, 1371, 1373, 1374, + 1375, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, + 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1396, + 1371, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, + 1407, 1408, 1410, 1412, 1414, 1416, 1417, 1418, 1419, 1420, + 1421, 1422, 1423, 1424, 1425, 1427, 1428, 1429, 1430, 1431, + 1432, 1433, 1436, 1437, 1439, 1440, 1441, 1442, 1443, 1445, + 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1454, 1455, 1457, + 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, + + 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1476, 1477, 1478, + 1480, 1468, 1481, 1482, 1483, 1455, 1484, 1485, 1486, 1487, + 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, + 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, + 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1517, + 1518, 1519, 1520, 1522, 1523, 1524, 1525, 1526, 1527, 1530, + 1531, 1532, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, + 1544, 1545, 1546, 1548, 1549, 1550, 1551, 1552, 1548, 1488, + 1553, 1554, 1555, 1556, 1525, 1558, 1559, 1560, 1562, 1564, + 1565, 1566, 1568, 1569, 1570, 1571, 1572, 1574, 1575, 1576, + + 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, + 1587, 1588, 1589, 1590, 1591, 1593, 1595, 1596, 1597, 1599, + 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, + 1611, 1612, 1613, 1614, 1615, 1617, 1618, 1619, 1621, 1622, + 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1631, 1632, 1633, + 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1642, 1643, 1644, + 1646, 1647, 1648, 1649, 1651, 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, + 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1678, 1679, + 1680, 1681, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, + + 1691, 1692, 1694, 1695, 1696, 1698, 1699, 1700, 1701, 1702, + 1703, 1704, 1705, 1707, 1708, 1709, 1710, 1711, 1712, 1713, + 1714, 1715, 1716, 1717, 1720, 1721, 1722, 1723, 1724, 1725, + 1726, 1727, 1728, 1730, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1752, 1753, 1754, 1755, 1756, 1757, 1758, + 1759, 1760, 1762, 1764, 1766, 1769, 1770, 1771, 1772, 1773, + 1775, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785, + 1786, 1787, 1788, 1790, 1791, 1793, 1794, 1795, 1796, 1798, + 1799, 1800, 1802, 1804, 1805, 1807, 1808, 1809, 1810, 1811, + + 1812, 1813, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, + 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1833, + 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, + 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1854, + 1855, 1857, 1858, 1859, 1861, 1862, 1863, 1864, 1869, 1872, + 1873, 1874, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1884, + 1886, 1888, 1890, 1891, 1892, 1893, 1894, 1895, 1894, 1896, + 1898, 1899, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, + 1910, 1911, 1912, 1913, 1914, 1916, 1919, 1920, 1921, 1922, + 1926, 1926, 1926, 1926, 1926, 1927, 1927, 1927, 1927, 1927, + + 1928, 1934, 1928, 1928, 1928, 1929, 1935, 1929, 1936, 1929, + 1930, 1930, 1930, 1930, 1930, 1931, 1931, 1931, 1931, 1931, + 1932, 1937, 1932, 1932, 1932, 1933, 1933, 1933, 727, 726, + 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, + 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, + 703, 702, 701, 700, 699, 698, 697, 692, 691, 690, + 689, 688, 687, 686, 685, 683, 682, 680, 679, 678, + 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, + 666, 665, 664, 663, 662, 661, 660, 659, 658, 656, + 655, 653, 652, 651, 650, 649, 648, 647, 645, 644, + + 643, 641, 640, 638, 637, 636, 635, 634, 633, 632, + 631, 630, 629, 628, 627, 626, 625, 624, 622, 621, + 620, 619, 618, 617, 615, 614, 613, 612, 611, 610, + 609, 608, 606, 605, 604, 603, 602, 601, 600, 599, + 598, 597, 596, 595, 594, 592, 591, 590, 589, 588, + 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, + 577, 568, 566, 565, 564, 562, 559, 557, 556, 555, + 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, + 544, 543, 542, 541, 540, 539, 538, 536, 535, 534, + 533, 532, 531, 530, 529, 528, 527, 526, 525, 523, + + 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, + 511, 510, 509, 508, 506, 505, 504, 503, 502, 501, + 500, 499, 497, 496, 495, 494, 493, 492, 491, 490, + 489, 488, 487, 486, 485, 484, 483, 482, 481, 479, + 478, 477, 476, 474, 473, 472, 471, 470, 469, 467, + 466, 464, 463, 462, 460, 458, 457, 456, 455, 454, + 453, 452, 450, 449, 448, 447, 446, 441, 439, 438, + 435, 432, 430, 429, 428, 427, 426, 424, 423, 422, + 421, 420, 419, 418, 417, 416, 415, 414, 413, 412, + 411, 409, 408, 407, 405, 404, 403, 402, 401, 400, + + 399, 397, 396, 394, 393, 392, 391, 390, 389, 388, + 387, 386, 385, 384, 380, 379, 378, 376, 375, 374, + 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, + 362, 361, 359, 358, 357, 356, 355, 354, 353, 352, + 351, 350, 349, 348, 347, 345, 344, 343, 342, 340, + 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, + 324, 322, 318, 316, 313, 306, 305, 304, 303, 302, + 301, 300, 298, 297, 296, 295, 294, 293, 292, 291, + 290, 288, 287, 286, 285, 284, 283, 282, 280, 279, + 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, + + 268, 267, 266, 265, 264, 262, 261, 260, 258, 257, + 256, 255, 254, 253, 251, 250, 249, 248, 247, 246, + 244, 243, 241, 240, 239, 238, 237, 236, 235, 234, + 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, + 223, 222, 221, 220, 219, 218, 216, 215, 214, 213, + 212, 211, 210, 208, 205, 203, 201, 199, 194, 190, + 182, 181, 180, 179, 178, 177, 176, 174, 173, 172, + 170, 169, 168, 166, 164, 162, 160, 159, 157, 156, + 155, 154, 153, 151, 150, 149, 148, 147, 146, 144, + 143, 142, 141, 140, 139, 138, 136, 135, 133, 132, + + 128, 127, 126, 124, 123, 122, 121, 119, 117, 113, + 104, 103, 97, 96, 77, 72, 66, 52, 49, 48, + 43, 41, 39, 38, 24, 14, 11, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + + 1925 } ; static yy_state_type yy_last_accepting_state; @@ -1924,7 +1938,7 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[208] = +static const flex_int16_t yy_rule_linenum[209] = { 0, 147, 149, 151, 156, 157, 162, 163, 164, 176, 179, 184, 191, 200, 209, 218, 227, 236, 245, 254, 263, @@ -1935,20 +1949,20 @@ static const flex_int16_t yy_rule_linenum[208] = 662, 673, 684, 695, 706, 717, 728, 739, 750, 761, 772, 783, 792, 803, 814, 825, 836, 847, 858, 869, 880, 889, 898, 907, 916, 927, 938, 949, 960, 971, - 982, 993, 1003, 1014, 1023, 1032, 1047, 1063, 1072, 1081, - - 1090, 1099, 1108, 1117, 1126, 1135, 1144, 1153, 1177, 1201, - 1210, 1220, 1230, 1239, 1249, 1260, 1269, 1278, 1287, 1296, - 1305, 1315, 1324, 1333, 1342, 1353, 1364, 1375, 1386, 1397, - 1406, 1415, 1424, 1433, 1442, 1451, 1460, 1469, 1478, 1488, - 1500, 1513, 1522, 1531, 1541, 1551, 1560, 1571, 1581, 1590, - 1600, 1610, 1619, 1628, 1637, 1646, 1656, 1665, 1674, 1683, - 1692, 1701, 1710, 1719, 1728, 1737, 1746, 1755, 1764, 1773, - 1782, 1791, 1800, 1809, 1818, 1827, 1836, 1845, 1854, 1863, - 1872, 1881, 1890, 1899, 1908, 1917, 1926, 1935, 1944, 1953, - 2052, 2057, 2062, 2067, 2068, 2069, 2070, 2071, 2072, 2074, - - 2092, 2105, 2110, 2114, 2116, 2118, 2120 + 982, 993, 1005, 1015, 1026, 1035, 1044, 1059, 1075, 1084, + + 1093, 1102, 1111, 1120, 1129, 1138, 1147, 1156, 1165, 1189, + 1213, 1222, 1232, 1242, 1251, 1261, 1272, 1281, 1290, 1299, + 1308, 1317, 1327, 1336, 1345, 1354, 1365, 1376, 1387, 1398, + 1409, 1418, 1427, 1436, 1445, 1454, 1463, 1472, 1481, 1490, + 1500, 1512, 1525, 1534, 1543, 1553, 1563, 1572, 1583, 1593, + 1602, 1612, 1622, 1631, 1640, 1649, 1658, 1668, 1677, 1686, + 1695, 1704, 1713, 1722, 1731, 1740, 1749, 1758, 1767, 1776, + 1785, 1794, 1803, 1812, 1821, 1830, 1839, 1848, 1857, 1866, + 1875, 1884, 1893, 1902, 1911, 1920, 1929, 1938, 1947, 1956, + 1965, 2064, 2069, 2074, 2079, 2080, 2081, 2082, 2083, 2084, + + 2086, 2104, 2117, 2122, 2126, 2128, 2130, 2132 } ; /* The intent behind this definition is that it'll catch @@ -2001,7 +2015,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 2004 "dhcp6_lexer.cc" +#line 2018 "dhcp6_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And using yywrap requires linking with -lfl, which provides the default yywrap @@ -2027,8 +2041,8 @@ using namespace isc::dhcp; by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 2030 "dhcp6_lexer.cc" -#line 2031 "dhcp6_lexer.cc" +#line 2044 "dhcp6_lexer.cc" +#line 2045 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2358,7 +2372,7 @@ YY_DECL } -#line 2361 "dhcp6_lexer.cc" +#line 2375 "dhcp6_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2387,13 +2401,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1903 ) + if ( yy_current_state >= 1926 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1902 ); + while ( yy_current_state != 1925 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2412,13 +2426,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 208 ) + else if ( yy_act < 209 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 208 ) + else if ( yy_act == 209 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 209 ) + else if ( yy_act == 210 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -3567,6 +3581,20 @@ YY_RULE_SETUP case 92: YY_RULE_SETUP #line 993 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: + case isc::dhcp::Parser6Context::SUBNET6: + case isc::dhcp::Parser6Context::SHARED_NETWORK: + return isc::dhcp::Dhcp6Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_); + } +} + YY_BREAK +case 93: +YY_RULE_SETUP +#line 1005 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3577,9 +3605,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 94: YY_RULE_SETUP -#line 1003 "dhcp6_lexer.ll" +#line 1015 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3591,9 +3619,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 95: YY_RULE_SETUP -#line 1014 "dhcp6_lexer.ll" +#line 1026 "dhcp6_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3603,9 +3631,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 96: YY_RULE_SETUP -#line 1023 "dhcp6_lexer.ll" +#line 1035 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3615,9 +3643,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 97: YY_RULE_SETUP -#line 1032 "dhcp6_lexer.ll" +#line 1044 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3633,9 +3661,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 98: YY_RULE_SETUP -#line 1047 "dhcp6_lexer.ll" +#line 1059 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3652,9 +3680,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 99: YY_RULE_SETUP -#line 1063 "dhcp6_lexer.ll" +#line 1075 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3664,9 +3692,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 100: YY_RULE_SETUP -#line 1072 "dhcp6_lexer.ll" +#line 1084 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3676,9 +3704,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 101: YY_RULE_SETUP -#line 1081 "dhcp6_lexer.ll" +#line 1093 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3688,9 +3716,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 102: YY_RULE_SETUP -#line 1090 "dhcp6_lexer.ll" +#line 1102 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3700,9 +3728,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 103: YY_RULE_SETUP -#line 1099 "dhcp6_lexer.ll" +#line 1111 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3712,9 +3740,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 104: YY_RULE_SETUP -#line 1108 "dhcp6_lexer.ll" +#line 1120 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3724,9 +3752,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 105: YY_RULE_SETUP -#line 1117 "dhcp6_lexer.ll" +#line 1129 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3736,9 +3764,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 106: YY_RULE_SETUP -#line 1126 "dhcp6_lexer.ll" +#line 1138 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3748,9 +3776,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 107: YY_RULE_SETUP -#line 1135 "dhcp6_lexer.ll" +#line 1147 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3760,9 +3788,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 1144 "dhcp6_lexer.ll" +#line 1156 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::POOLS: @@ -3772,9 +3800,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 109: YY_RULE_SETUP -#line 1153 "dhcp6_lexer.ll" +#line 1165 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3799,9 +3827,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 1177 "dhcp6_lexer.ll" +#line 1189 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3826,9 +3854,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 1201 "dhcp6_lexer.ll" +#line 1213 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3838,9 +3866,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 1210 "dhcp6_lexer.ll" +#line 1222 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3851,9 +3879,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 113: YY_RULE_SETUP -#line 1220 "dhcp6_lexer.ll" +#line 1232 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3864,9 +3892,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 1230 "dhcp6_lexer.ll" +#line 1242 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3876,9 +3904,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 115: YY_RULE_SETUP -#line 1239 "dhcp6_lexer.ll" +#line 1251 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3889,9 +3917,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 1249 "dhcp6_lexer.ll" +#line 1261 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3903,9 +3931,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 1260 "dhcp6_lexer.ll" +#line 1272 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3915,9 +3943,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 118: YY_RULE_SETUP -#line 1269 "dhcp6_lexer.ll" +#line 1281 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3927,9 +3955,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 1278 "dhcp6_lexer.ll" +#line 1290 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3939,9 +3967,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 1287 "dhcp6_lexer.ll" +#line 1299 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3951,9 +3979,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 121: YY_RULE_SETUP -#line 1296 "dhcp6_lexer.ll" +#line 1308 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3963,9 +3991,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 1305 "dhcp6_lexer.ll" +#line 1317 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3976,9 +4004,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 1315 "dhcp6_lexer.ll" +#line 1327 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3988,9 +4016,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 1324 "dhcp6_lexer.ll" +#line 1336 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4000,9 +4028,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 1333 "dhcp6_lexer.ll" +#line 1345 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4012,9 +4040,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 1342 "dhcp6_lexer.ll" +#line 1354 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4026,9 +4054,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 1353 "dhcp6_lexer.ll" +#line 1365 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4040,9 +4068,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 1364 "dhcp6_lexer.ll" +#line 1376 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4054,9 +4082,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 129: YY_RULE_SETUP -#line 1375 "dhcp6_lexer.ll" +#line 1387 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4068,9 +4096,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 1386 "dhcp6_lexer.ll" +#line 1398 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4082,9 +4110,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 1397 "dhcp6_lexer.ll" +#line 1409 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4094,9 +4122,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 132: YY_RULE_SETUP -#line 1406 "dhcp6_lexer.ll" +#line 1418 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -4106,9 +4134,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 1415 "dhcp6_lexer.ll" +#line 1427 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4118,9 +4146,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 134: YY_RULE_SETUP -#line 1424 "dhcp6_lexer.ll" +#line 1436 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4130,9 +4158,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 135: YY_RULE_SETUP -#line 1433 "dhcp6_lexer.ll" +#line 1445 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4142,9 +4170,9 @@ YY_RULE_SETUP } } YY_BREAK -case 135: +case 136: YY_RULE_SETUP -#line 1442 "dhcp6_lexer.ll" +#line 1454 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4154,9 +4182,9 @@ YY_RULE_SETUP } } YY_BREAK -case 136: +case 137: YY_RULE_SETUP -#line 1451 "dhcp6_lexer.ll" +#line 1463 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4166,9 +4194,9 @@ YY_RULE_SETUP } } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 1460 "dhcp6_lexer.ll" +#line 1472 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -4178,9 +4206,9 @@ YY_RULE_SETUP } } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 1469 "dhcp6_lexer.ll" +#line 1481 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -4190,9 +4218,9 @@ YY_RULE_SETUP } } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 1478 "dhcp6_lexer.ll" +#line 1490 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4203,9 +4231,9 @@ YY_RULE_SETUP } } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 1488 "dhcp6_lexer.ll" +#line 1500 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4218,9 +4246,9 @@ YY_RULE_SETUP } } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 1500 "dhcp6_lexer.ll" +#line 1512 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4234,9 +4262,9 @@ YY_RULE_SETUP } } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 1513 "dhcp6_lexer.ll" +#line 1525 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -4246,9 +4274,9 @@ YY_RULE_SETUP } } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 1522 "dhcp6_lexer.ll" +#line 1534 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -4258,9 +4286,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 1531 "dhcp6_lexer.ll" +#line 1543 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4271,9 +4299,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 1541 "dhcp6_lexer.ll" +#line 1553 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -4284,9 +4312,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 1551 "dhcp6_lexer.ll" +#line 1563 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -4296,9 +4324,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 1560 "dhcp6_lexer.ll" +#line 1572 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::MAC_SOURCES: @@ -4310,9 +4338,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 1571 "dhcp6_lexer.ll" +#line 1583 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS: @@ -4323,9 +4351,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 1581 "dhcp6_lexer.ll" +#line 1593 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -4335,9 +4363,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 1590 "dhcp6_lexer.ll" +#line 1602 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS: @@ -4348,9 +4376,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 1600 "dhcp6_lexer.ll" +#line 1612 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4361,9 +4389,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 1610 "dhcp6_lexer.ll" +#line 1622 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -4373,9 +4401,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 1619 "dhcp6_lexer.ll" +#line 1631 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4385,9 +4413,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 1628 "dhcp6_lexer.ll" +#line 1640 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4397,9 +4425,9 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 156: YY_RULE_SETUP -#line 1637 "dhcp6_lexer.ll" +#line 1649 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4409,9 +4437,9 @@ YY_RULE_SETUP } } YY_BREAK -case 156: +case 157: YY_RULE_SETUP -#line 1646 "dhcp6_lexer.ll" +#line 1658 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4422,9 +4450,9 @@ YY_RULE_SETUP } } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 1656 "dhcp6_lexer.ll" +#line 1668 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RELAY: @@ -4434,9 +4462,9 @@ YY_RULE_SETUP } } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 1665 "dhcp6_lexer.ll" +#line 1677 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4446,9 +4474,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 1674 "dhcp6_lexer.ll" +#line 1686 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: @@ -4458,9 +4486,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 1683 "dhcp6_lexer.ll" +#line 1695 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: @@ -4470,9 +4498,9 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 1692 "dhcp6_lexer.ll" +#line 1704 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4482,9 +4510,9 @@ YY_RULE_SETUP } } YY_BREAK -case 162: +case 163: YY_RULE_SETUP -#line 1701 "dhcp6_lexer.ll" +#line 1713 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -4494,9 +4522,9 @@ YY_RULE_SETUP } } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 1710 "dhcp6_lexer.ll" +#line 1722 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -4506,9 +4534,9 @@ YY_RULE_SETUP } } YY_BREAK -case 164: +case 165: YY_RULE_SETUP -#line 1719 "dhcp6_lexer.ll" +#line 1731 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -4518,9 +4546,9 @@ YY_RULE_SETUP } } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 1728 "dhcp6_lexer.ll" +#line 1740 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4530,9 +4558,9 @@ YY_RULE_SETUP } } YY_BREAK -case 166: +case 167: YY_RULE_SETUP -#line 1737 "dhcp6_lexer.ll" +#line 1749 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4542,9 +4570,9 @@ YY_RULE_SETUP } } YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 1746 "dhcp6_lexer.ll" +#line 1758 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4554,9 +4582,9 @@ YY_RULE_SETUP } } YY_BREAK -case 168: +case 169: YY_RULE_SETUP -#line 1755 "dhcp6_lexer.ll" +#line 1767 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4566,9 +4594,9 @@ YY_RULE_SETUP } } YY_BREAK -case 169: +case 170: YY_RULE_SETUP -#line 1764 "dhcp6_lexer.ll" +#line 1776 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4578,9 +4606,9 @@ YY_RULE_SETUP } } YY_BREAK -case 170: +case 171: YY_RULE_SETUP -#line 1773 "dhcp6_lexer.ll" +#line 1785 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4590,9 +4618,9 @@ YY_RULE_SETUP } } YY_BREAK -case 171: +case 172: YY_RULE_SETUP -#line 1782 "dhcp6_lexer.ll" +#line 1794 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4602,9 +4630,9 @@ YY_RULE_SETUP } } YY_BREAK -case 172: +case 173: YY_RULE_SETUP -#line 1791 "dhcp6_lexer.ll" +#line 1803 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4614,9 +4642,9 @@ YY_RULE_SETUP } } YY_BREAK -case 173: +case 174: YY_RULE_SETUP -#line 1800 "dhcp6_lexer.ll" +#line 1812 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4626,9 +4654,9 @@ YY_RULE_SETUP } } YY_BREAK -case 174: +case 175: YY_RULE_SETUP -#line 1809 "dhcp6_lexer.ll" +#line 1821 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4638,9 +4666,9 @@ YY_RULE_SETUP } } YY_BREAK -case 175: +case 176: YY_RULE_SETUP -#line 1818 "dhcp6_lexer.ll" +#line 1830 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4650,9 +4678,9 @@ YY_RULE_SETUP } } YY_BREAK -case 176: +case 177: YY_RULE_SETUP -#line 1827 "dhcp6_lexer.ll" +#line 1839 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4662,9 +4690,9 @@ YY_RULE_SETUP } } YY_BREAK -case 177: +case 178: YY_RULE_SETUP -#line 1836 "dhcp6_lexer.ll" +#line 1848 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4674,9 +4702,9 @@ YY_RULE_SETUP } } YY_BREAK -case 178: +case 179: YY_RULE_SETUP -#line 1845 "dhcp6_lexer.ll" +#line 1857 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING: @@ -4686,9 +4714,9 @@ YY_RULE_SETUP } } YY_BREAK -case 179: +case 180: YY_RULE_SETUP -#line 1854 "dhcp6_lexer.ll" +#line 1866 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING: @@ -4698,9 +4726,9 @@ YY_RULE_SETUP } } YY_BREAK -case 180: +case 181: YY_RULE_SETUP -#line 1863 "dhcp6_lexer.ll" +#line 1875 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING: @@ -4710,9 +4738,9 @@ YY_RULE_SETUP } } YY_BREAK -case 181: +case 182: YY_RULE_SETUP -#line 1872 "dhcp6_lexer.ll" +#line 1884 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4722,9 +4750,9 @@ YY_RULE_SETUP } } YY_BREAK -case 182: +case 183: YY_RULE_SETUP -#line 1881 "dhcp6_lexer.ll" +#line 1893 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONTROL_SOCKET: @@ -4734,9 +4762,9 @@ YY_RULE_SETUP } } YY_BREAK -case 183: +case 184: YY_RULE_SETUP -#line 1890 "dhcp6_lexer.ll" +#line 1902 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONTROL_SOCKET: @@ -4746,9 +4774,9 @@ YY_RULE_SETUP } } YY_BREAK -case 184: +case 185: YY_RULE_SETUP -#line 1899 "dhcp6_lexer.ll" +#line 1911 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4758,9 +4786,9 @@ YY_RULE_SETUP } } YY_BREAK -case 185: +case 186: YY_RULE_SETUP -#line 1908 "dhcp6_lexer.ll" +#line 1920 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL: @@ -4770,9 +4798,9 @@ YY_RULE_SETUP } } YY_BREAK -case 186: +case 187: YY_RULE_SETUP -#line 1917 "dhcp6_lexer.ll" +#line 1929 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL: @@ -4782,9 +4810,9 @@ YY_RULE_SETUP } } YY_BREAK -case 187: +case 188: YY_RULE_SETUP -#line 1926 "dhcp6_lexer.ll" +#line 1938 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL: @@ -4794,9 +4822,9 @@ YY_RULE_SETUP } } YY_BREAK -case 188: +case 189: YY_RULE_SETUP -#line 1935 "dhcp6_lexer.ll" +#line 1947 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4806,9 +4834,9 @@ YY_RULE_SETUP } } YY_BREAK -case 189: +case 190: YY_RULE_SETUP -#line 1944 "dhcp6_lexer.ll" +#line 1956 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4818,9 +4846,9 @@ YY_RULE_SETUP } } YY_BREAK -case 190: +case 191: YY_RULE_SETUP -#line 1953 "dhcp6_lexer.ll" +#line 1965 "dhcp6_lexer.ll" { /* 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. @@ -4920,65 +4948,65 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 191: -/* rule 191 can match eol */ +case 192: +/* rule 192 can match eol */ YY_RULE_SETUP -#line 2052 "dhcp6_lexer.ll" +#line 2064 "dhcp6_lexer.ll" { /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); } YY_BREAK -case 192: -/* rule 192 can match eol */ +case 193: +/* rule 193 can match eol */ YY_RULE_SETUP -#line 2057 "dhcp6_lexer.ll" +#line 2069 "dhcp6_lexer.ll" { /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); } YY_BREAK -case 193: +case 194: YY_RULE_SETUP -#line 2062 "dhcp6_lexer.ll" +#line 2074 "dhcp6_lexer.ll" { /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); } YY_BREAK -case 194: +case 195: YY_RULE_SETUP -#line 2067 "dhcp6_lexer.ll" +#line 2079 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 195: +case 196: YY_RULE_SETUP -#line 2068 "dhcp6_lexer.ll" +#line 2080 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 196: +case 197: YY_RULE_SETUP -#line 2069 "dhcp6_lexer.ll" +#line 2081 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 197: +case 198: YY_RULE_SETUP -#line 2070 "dhcp6_lexer.ll" +#line 2082 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 198: +case 199: YY_RULE_SETUP -#line 2071 "dhcp6_lexer.ll" +#line 2083 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); } YY_BREAK -case 199: +case 200: YY_RULE_SETUP -#line 2072 "dhcp6_lexer.ll" +#line 2084 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } YY_BREAK -case 200: +case 201: YY_RULE_SETUP -#line 2074 "dhcp6_lexer.ll" +#line 2086 "dhcp6_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -4997,9 +5025,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 201: +case 202: YY_RULE_SETUP -#line 2092 "dhcp6_lexer.ll" +#line 2104 "dhcp6_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5013,43 +5041,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 202: +case 203: YY_RULE_SETUP -#line 2105 "dhcp6_lexer.ll" +#line 2117 "dhcp6_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 203: +case 204: YY_RULE_SETUP -#line 2110 "dhcp6_lexer.ll" +#line 2122 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 204: +case 205: YY_RULE_SETUP -#line 2114 "dhcp6_lexer.ll" +#line 2126 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 205: +case 206: YY_RULE_SETUP -#line 2116 "dhcp6_lexer.ll" +#line 2128 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 206: +case 207: YY_RULE_SETUP -#line 2118 "dhcp6_lexer.ll" +#line 2130 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 207: +case 208: YY_RULE_SETUP -#line 2120 "dhcp6_lexer.ll" +#line 2132 "dhcp6_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2122 "dhcp6_lexer.ll" +#line 2134 "dhcp6_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp6Parser::make_END(driver.loc_); @@ -5073,12 +5101,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 208: +case 209: YY_RULE_SETUP -#line 2145 "dhcp6_lexer.ll" +#line 2157 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 5081 "dhcp6_lexer.cc" +#line 5109 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -5397,7 +5425,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1903 ) + if ( yy_current_state >= 1926 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5430,11 +5458,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1903 ) + if ( yy_current_state >= 1926 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1902); + yy_is_jam = (yy_current_state == 1925); return yy_is_jam ? 0 : yy_current_state; } @@ -6183,7 +6211,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2145 "dhcp6_lexer.ll" +#line 2157 "dhcp6_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index a5971816c7..b89c1ce95b 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -989,6 +989,18 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"ddns-use-conflict-resolution\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: + case isc::dhcp::Parser6Context::SUBNET6: + case isc::dhcp::Parser6Context::SHARED_NETWORK: + return isc::dhcp::Dhcp6Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_); + } +} + + \"subnet6\" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 521b525603..06d5fd3ecb 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.0.4. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. +// Copyright (C) 2002-2015 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,25 +30,32 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. -// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, -// especially those whose name start with YY_ or yy_. They are -// private implementation details that can be changed or removed. - - // Take the name prefix into account. #define yylex parser6_lex +// First part of user declarations. + +#line 39 "dhcp6_parser.cc" // lalr1.cc:404 +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif #include "dhcp6_parser.h" +// User implementation prologue. +#line 53 "dhcp6_parser.cc" // lalr1.cc:412 // Unqualified %code blocks. -#line 34 "dhcp6_parser.yy" +#line 34 "dhcp6_parser.yy" // lalr1.cc:413 #include -#line 52 "dhcp6_parser.cc" +#line 59 "dhcp6_parser.cc" // lalr1.cc:413 #ifndef YY_ @@ -63,16 +70,6 @@ # endif #endif - -// Whether we are compiled with exception support. -#ifndef YY_EXCEPTIONS -# if defined __GNUC__ && !defined __EXCEPTIONS -# define YY_EXCEPTIONS 0 -# else -# define YY_EXCEPTIONS 1 -# endif -#endif - #define YYRHSLOC(Rhs, K) ((Rhs)[K].location) /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends @@ -90,10 +87,13 @@ { \ (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ } \ - while (false) + while (/*CONSTCOND*/ false) # endif +// Suppress unused-variable warnings by "using" E. +#define YYUSE(E) ((void) (E)) + // Enable debugging if requested. #if PARSER6_DEBUG @@ -106,7 +106,7 @@ { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << '\n'; \ + *yycdebug_ << std::endl; \ } \ } while (false) @@ -119,15 +119,15 @@ # define YY_STACK_PRINT() \ do { \ if (yydebug_) \ - yy_stack_print_ (); \ + yystack_print_ (); \ } while (false) #else // !PARSER6_DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast (0) -# define YY_STACK_PRINT() static_cast (0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast(0) +# define YY_STACK_PRINT() static_cast(0) #endif // !PARSER6_DEBUG @@ -139,17 +139,54 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "dhcp6_parser.yy" +#line 14 "dhcp6_parser.yy" // lalr1.cc:479 namespace isc { namespace dhcp { -#line 145 "dhcp6_parser.cc" +#line 145 "dhcp6_parser.cc" // lalr1.cc:479 + + /* Return YYSTR after stripping away unnecessary quotes and + backslashes, so that it's suitable for yyerror. The heuristic is + that double-quoting is unnecessary unless the string contains an + apostrophe, a comma, or backslash (other than backslash-backslash). + YYSTR is taken from yytname. */ + std::string + Dhcp6Parser::yytnamerr_ (const char *yystr) + { + if (*yystr == '"') + { + std::string yyr = ""; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + // Fall through. + default: + yyr += *yyp; + break; + + case '"': + return yyr; + } + do_not_strip_quotes: ; + } + + return yystr; + } + /// Build a parser object. Dhcp6Parser::Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg) + : #if PARSER6_DEBUG - : yydebug_ (false), + yydebug_ (false), yycdebug_ (&std::cerr), -#else - : #endif ctx (ctx_yyarg) {} @@ -157,30 +194,32 @@ namespace isc { namespace dhcp { Dhcp6Parser::~Dhcp6Parser () {} - Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW - {} /*---------------. - | symbol kinds. | + | Symbol types. | `---------------*/ // by_state. - Dhcp6Parser::by_state::by_state () YY_NOEXCEPT + inline + Dhcp6Parser::by_state::by_state () : state (empty_state) {} - Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT - : state (that.state) + inline + Dhcp6Parser::by_state::by_state (const by_state& other) + : state (other.state) {} + inline void - Dhcp6Parser::by_state::clear () YY_NOEXCEPT + Dhcp6Parser::by_state::clear () { state = empty_state; } + inline void Dhcp6Parser::by_state::move (by_state& that) { @@ -188,92 +227,56 @@ namespace isc { namespace dhcp { that.clear (); } - Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT + inline + Dhcp6Parser::by_state::by_state (state_type s) : state (s) {} - Dhcp6Parser::symbol_kind_type - Dhcp6Parser::by_state::kind () const YY_NOEXCEPT + inline + Dhcp6Parser::symbol_number_type + Dhcp6Parser::by_state::type_get () const { if (state == empty_state) - return symbol_kind::S_YYEMPTY; + return empty_symbol; else - return YY_CAST (symbol_kind_type, yystos_[+state]); + return yystos_[state]; } + inline Dhcp6Parser::stack_symbol_type::stack_symbol_type () {} - Dhcp6Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that) - : super_type (YY_MOVE (that.state), YY_MOVE (that.location)) - { - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_BOOLEAN: // "boolean" - value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_FLOAT: // "floating point" - value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_INTEGER: // "integer" - value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value)); - break; - - case symbol_kind::S_STRING: // "constant string" - value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); - break; - - default: - break; - } - -#if 201103L <= YY_CPLUSPLUS - // that is emptied. - that.state = empty_state; -#endif - } - Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that) - : super_type (s, YY_MOVE (that.location)) + inline + Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) + : super_type (s, that.location) { - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (YY_MOVE (that.value)); + switch (that.type_get ()) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value + value.move< ElementPtr > (that.value); break; - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (YY_MOVE (that.value)); + case 202: // "boolean" + value.move< bool > (that.value); break; - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (YY_MOVE (that.value)); + case 201: // "floating point" + value.move< double > (that.value); break; - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (YY_MOVE (that.value)); + case 200: // "integer" + value.move< int64_t > (that.value); break; - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (YY_MOVE (that.value)); + case 199: // "constant string" + value.move< std::string > (that.value); break; default: @@ -281,39 +284,39 @@ namespace isc { namespace dhcp { } // that is emptied. - that.kind_ = symbol_kind::S_YYEMPTY; + that.type = empty_symbol; } -#if YY_CPLUSPLUS < 201103L + inline Dhcp6Parser::stack_symbol_type& Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value + switch (that.type_get ()) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value value.copy< ElementPtr > (that.value); break; - case symbol_kind::S_BOOLEAN: // "boolean" + case 202: // "boolean" value.copy< bool > (that.value); break; - case symbol_kind::S_FLOAT: // "floating point" + case 201: // "floating point" value.copy< double > (that.value); break; - case symbol_kind::S_INTEGER: // "integer" + case 200: // "integer" value.copy< int64_t > (that.value); break; - case symbol_kind::S_STRING: // "constant string" + case 199: // "constant string" value.copy< std::string > (that.value); break; @@ -325,50 +328,9 @@ namespace isc { namespace dhcp { return *this; } - Dhcp6Parser::stack_symbol_type& - Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that) - { - state = that.state; - switch (that.kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (that.value); - break; - - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (that.value); - break; - - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (that.value); - break; - - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (that.value); - break; - - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (that.value); - break; - - default: - break; - } - - location = that.location; - // that is emptied. - that.state = empty_state; - return *this; - } -#endif template + inline void Dhcp6Parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -379,115 +341,126 @@ namespace isc { namespace dhcp { #if PARSER6_DEBUG template void - Dhcp6Parser::yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const + Dhcp6Parser::yy_print_ (std::ostream& yyo, + const basic_symbol& yysym) const { std::ostream& yyoutput = yyo; YYUSE (yyoutput); + symbol_number_type yytype = yysym.type_get (); + // Avoid a (spurious) G++ 4.8 warning about "array subscript is + // below array bounds". if (yysym.empty ()) - yyo << "empty symbol"; - else - { - symbol_kind_type yykind = yysym.kind (); - yyo << (yykind < YYNTOKENS ? "token" : "nterm") - << ' ' << yysym.name () << " (" - << yysym.location << ": "; - switch (yykind) - { - case symbol_kind::S_STRING: // "constant string" -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < std::string > (); } -#line 400 "dhcp6_parser.cc" + std::abort (); + yyo << (yytype < yyntokens_ ? "token" : "nterm") + << ' ' << yytname_[yytype] << " (" + << yysym.location << ": "; + switch (yytype) + { + case 199: // "constant string" + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< std::string > (); } +#line 364 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_INTEGER: // "integer" -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < int64_t > (); } -#line 406 "dhcp6_parser.cc" + case 200: // "integer" + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< int64_t > (); } +#line 371 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_FLOAT: // "floating point" -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < double > (); } -#line 412 "dhcp6_parser.cc" + case 201: // "floating point" + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< double > (); } +#line 378 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_BOOLEAN: // "boolean" -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < bool > (); } -#line 418 "dhcp6_parser.cc" + case 202: // "boolean" + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< bool > (); } +#line 385 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_value: // value -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 424 "dhcp6_parser.cc" + case 219: // value + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 392 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_map_value: // map_value -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 430 "dhcp6_parser.cc" + case 223: // map_value + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 399 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 436 "dhcp6_parser.cc" + case 264: // ddns_replace_client_name_value + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 406 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_db_type: // db_type -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 442 "dhcp6_parser.cc" + case 304: // db_type + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 413 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_hr_mode: // hr_mode -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 448 "dhcp6_parser.cc" + case 405: // hr_mode + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 420 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_duid_type: // duid_type -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 454 "dhcp6_parser.cc" + case 541: // duid_type + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 427 "dhcp6_parser.cc" // lalr1.cc:636 break; - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 278 "dhcp6_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 460 "dhcp6_parser.cc" + case 584: // ncr_protocol_value + +#line 279 "dhcp6_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 434 "dhcp6_parser.cc" // lalr1.cc:636 break; + default: break; } - yyo << ')'; - } + yyo << ')'; } #endif + inline void - Dhcp6Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym) + Dhcp6Parser::yypush_ (const char* m, state_type s, symbol_type& sym) { - if (m) - YY_SYMBOL_PRINT (m, sym); - yystack_.push (YY_MOVE (sym)); + stack_symbol_type t (s, sym); + yypush_ (m, t); } + inline void - Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym) + Dhcp6Parser::yypush_ (const char* m, stack_symbol_type& s) { -#if 201103L <= YY_CPLUSPLUS - yypush_ (m, stack_symbol_type (s, std::move (sym))); -#else - stack_symbol_type ss (s, sym); - yypush_ (m, ss); -#endif + if (m) + YY_SYMBOL_PRINT (m, s); + yystack_.push (s); } + inline void - Dhcp6Parser::yypop_ (int n) + Dhcp6Parser::yypop_ (unsigned int n) { yystack_.pop (n); } @@ -519,37 +492,32 @@ namespace isc { namespace dhcp { } #endif // PARSER6_DEBUG - Dhcp6Parser::state_type + inline Dhcp6Parser::state_type Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym) { - int yyr = yypgoto_[yysym - YYNTOKENS] + yystate; + int yyr = yypgoto_[yysym - yyntokens_] + yystate; if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate) return yytable_[yyr]; else - return yydefgoto_[yysym - YYNTOKENS]; + return yydefgoto_[yysym - yyntokens_]; } - bool + inline bool Dhcp6Parser::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } - bool + inline bool Dhcp6Parser::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; } - int - Dhcp6Parser::operator() () - { - return parse (); - } - int Dhcp6Parser::parse () { + // State. int yyn; /// Length of the RHS of the rule being reduced. int yylen = 0; @@ -567,11 +535,11 @@ namespace isc { namespace dhcp { /// The return value of parse (). int yyresult; -#if YY_EXCEPTIONS + // FIXME: This shoud be completely indented. It is not yet to + // avoid gratuitous conflicts when merging into the master branch. try -#endif // YY_EXCEPTIONS { - YYCDEBUG << "Starting parse\n"; + YYCDEBUG << "Starting parse" << std::endl; /* Initialize the stack. The initial state will be set in @@ -579,70 +547,48 @@ namespace isc { namespace dhcp { location values to have been already stored, initialize these stacks with a primary value. */ yystack_.clear (); - yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla)); + yypush_ (YY_NULLPTR, 0, yyla); - /*-----------------------------------------------. - | yynewstate -- push a new symbol on the stack. | - `-----------------------------------------------*/ + // A new symbol was pushed on the stack. yynewstate: - YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n'; - YY_STACK_PRINT (); + YYCDEBUG << "Entering state " << yystack_[0].state << std::endl; // Accept? if (yystack_[0].state == yyfinal_) - YYACCEPT; + goto yyacceptlab; goto yybackup; - - /*-----------. - | yybackup. | - `-----------*/ + // Backup. yybackup: + // Try to take a decision without lookahead. - yyn = yypact_[+yystack_[0].state]; + yyn = yypact_[yystack_[0].state]; if (yy_pact_value_is_default_ (yyn)) goto yydefault; // Read a lookahead token. if (yyla.empty ()) { - YYCDEBUG << "Reading a token\n"; -#if YY_EXCEPTIONS + YYCDEBUG << "Reading a token: "; try -#endif // YY_EXCEPTIONS { symbol_type yylookahead (yylex (ctx)); yyla.move (yylookahead); } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); goto yyerrlab1; } -#endif // YY_EXCEPTIONS } YY_SYMBOL_PRINT ("Next token is", yyla); - if (yyla.kind () == symbol_kind::S_YYerror) - { - // The scanner already issued an error message, process directly - // to error recovery. But do not keep the error token as - // lookahead, it is too special and may lead us to an endless - // loop in error recovery. */ - yyla.kind_ = symbol_kind::S_YYUNDEF; - goto yyerrlab1; - } - /* If the proper action on seeing token YYLA.TYPE is to reduce or to detect an error, take that action. */ - yyn += yyla.kind (); - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ()) - { - goto yydefault; - } + yyn += yyla.type_get (); + if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ()) + goto yydefault; // Reduce or error. yyn = yytable_[yyn]; @@ -659,57 +605,55 @@ namespace isc { namespace dhcp { --yyerrstatus_; // Shift the lookahead token. - yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla)); + yypush_ ("Shifting", yyn, yyla); goto yynewstate; - /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: - yyn = yydefact_[+yystack_[0].state]; + yyn = yydefact_[yystack_[0].state]; if (yyn == 0) goto yyerrlab; goto yyreduce; - /*-----------------------------. - | yyreduce -- do a reduction. | + | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: yylen = yyr2_[yyn]; { stack_symbol_type yylhs; - yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]); + yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]); /* Variants are always initialized to an empty instance of the correct type. The default '$$ = $1' action is NOT applied when using variants. */ - switch (yyr1_[yyn]) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - yylhs.value.emplace< ElementPtr > (); + switch (yyr1_[yyn]) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value + yylhs.value.build< ElementPtr > (); break; - case symbol_kind::S_BOOLEAN: // "boolean" - yylhs.value.emplace< bool > (); + case 202: // "boolean" + yylhs.value.build< bool > (); break; - case symbol_kind::S_FLOAT: // "floating point" - yylhs.value.emplace< double > (); + case 201: // "floating point" + yylhs.value.build< double > (); break; - case symbol_kind::S_INTEGER: // "integer" - yylhs.value.emplace< int64_t > (); + case 200: // "integer" + yylhs.value.build< int64_t > (); break; - case symbol_kind::S_STRING: // "constant string" - yylhs.value.emplace< std::string > (); + case 199: // "constant string" + yylhs.value.build< std::string > (); break; default: @@ -717,299 +661,296 @@ namespace isc { namespace dhcp { } - // Default location. + // Compute the default @$. { - stack_type::slice range (yystack_, yylen); - YYLLOC_DEFAULT (yylhs.location, range, yylen); - yyerror_range[1].location = yylhs.location; + slice slice (yystack_, yylen); + YYLLOC_DEFAULT (yylhs.location, slice, yylen); } // Perform the reduction. YY_REDUCE_PRINT (yyn); -#if YY_EXCEPTIONS try -#endif // YY_EXCEPTIONS { switch (yyn) { - case 2: // $@1: %empty -#line 287 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 739 "dhcp6_parser.cc" + case 2: +#line 288 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.NO_KEYWORD; } +#line 680 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 4: // $@2: %empty -#line 288 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.CONFIG; } -#line 745 "dhcp6_parser.cc" + case 4: +#line 289 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.CONFIG; } +#line 686 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 6: // $@3: %empty -#line 289 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.DHCP6; } -#line 751 "dhcp6_parser.cc" + case 6: +#line 290 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.DHCP6; } +#line 692 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 8: // $@4: %empty -#line 290 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 757 "dhcp6_parser.cc" + case 8: +#line 291 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.INTERFACES_CONFIG; } +#line 698 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 10: // $@5: %empty -#line 291 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.SUBNET6; } -#line 763 "dhcp6_parser.cc" + case 10: +#line 292 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.SUBNET6; } +#line 704 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 12: // $@6: %empty -#line 292 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.POOLS; } -#line 769 "dhcp6_parser.cc" + case 12: +#line 293 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.POOLS; } +#line 710 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 14: // $@7: %empty -#line 293 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.PD_POOLS; } -#line 775 "dhcp6_parser.cc" + case 14: +#line 294 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.PD_POOLS; } +#line 716 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 16: // $@8: %empty -#line 294 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.RESERVATIONS; } -#line 781 "dhcp6_parser.cc" + case 16: +#line 295 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.RESERVATIONS; } +#line 722 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 18: // $@9: %empty -#line 295 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.DHCP6; } -#line 787 "dhcp6_parser.cc" + case 18: +#line 296 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.DHCP6; } +#line 728 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 20: // $@10: %empty -#line 296 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.OPTION_DEF; } -#line 793 "dhcp6_parser.cc" + case 20: +#line 297 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.OPTION_DEF; } +#line 734 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 22: // $@11: %empty -#line 297 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.OPTION_DATA; } -#line 799 "dhcp6_parser.cc" + case 22: +#line 298 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.OPTION_DATA; } +#line 740 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 24: // $@12: %empty -#line 298 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 805 "dhcp6_parser.cc" + case 24: +#line 299 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } +#line 746 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 26: // $@13: %empty -#line 299 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 811 "dhcp6_parser.cc" + case 26: +#line 300 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.DHCP_DDNS; } +#line 752 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 28: // $@14: %empty -#line 300 "dhcp6_parser.yy" - { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 817 "dhcp6_parser.cc" + case 28: +#line 301 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.ctx_ = ctx.CONFIG_CONTROL; } +#line 758 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 30: // value: "integer" -#line 308 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 823 "dhcp6_parser.cc" + case 30: +#line 309 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } +#line 764 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 31: // value: "floating point" -#line 309 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 829 "dhcp6_parser.cc" + case 31: +#line 310 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } +#line 770 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 32: // value: "boolean" -#line 310 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 835 "dhcp6_parser.cc" + case 32: +#line 311 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } +#line 776 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 33: // value: "constant string" -#line 311 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 841 "dhcp6_parser.cc" + case 33: +#line 312 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } +#line 782 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 34: // value: "null" -#line 312 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 847 "dhcp6_parser.cc" + case 34: +#line 313 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } +#line 788 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 35: // value: map2 -#line 313 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 853 "dhcp6_parser.cc" + case 35: +#line 314 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 794 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 36: // value: list_generic -#line 314 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 859 "dhcp6_parser.cc" + case 36: +#line 315 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 800 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 37: // sub_json: value -#line 317 "dhcp6_parser.yy" - { + case 37: +#line 318 "dhcp6_parser.yy" // lalr1.cc:859 + { // Push back the JSON value on the stack - ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 868 "dhcp6_parser.cc" +#line 809 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 38: // $@15: %empty -#line 322 "dhcp6_parser.yy" - { + case 38: +#line 323 "dhcp6_parser.yy" // lalr1.cc:859 + { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 879 "dhcp6_parser.cc" +#line 820 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 39: // map2: "{" $@15 map_content "}" -#line 327 "dhcp6_parser.yy" - { + case 39: +#line 328 "dhcp6_parser.yy" // lalr1.cc:859 + { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 889 "dhcp6_parser.cc" +#line 830 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 40: // map_value: map2 -#line 333 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 895 "dhcp6_parser.cc" + case 40: +#line 334 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 836 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 43: // not_empty_map: "constant string" ":" value -#line 340 "dhcp6_parser.yy" - { + case 43: +#line 341 "dhcp6_parser.yy" // lalr1.cc:859 + { // map containing a single entry - ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); - ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location)); + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 905 "dhcp6_parser.cc" +#line 846 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 44: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 345 "dhcp6_parser.yy" - { + case 44: +#line 346 "dhcp6_parser.yy" // lalr1.cc:859 + { // map consisting of a shorter map followed by // comma and string:value - ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); - ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location)); + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 916 "dhcp6_parser.cc" +#line 857 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 45: // $@16: %empty -#line 353 "dhcp6_parser.yy" - { + case 45: +#line 354 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 925 "dhcp6_parser.cc" +#line 866 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 46: // list_generic: "[" $@16 list_content "]" -#line 356 "dhcp6_parser.yy" - { + case 46: +#line 357 "dhcp6_parser.yy" // lalr1.cc:859 + { // list parsing complete. Put any sanity checking here } -#line 933 "dhcp6_parser.cc" +#line 874 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 49: // not_empty_list: value -#line 364 "dhcp6_parser.yy" - { + case 49: +#line 365 "dhcp6_parser.yy" // lalr1.cc:859 + { // List consisting of a single element. - ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 942 "dhcp6_parser.cc" +#line 883 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 50: // not_empty_list: not_empty_list "," value -#line 368 "dhcp6_parser.yy" - { + case 50: +#line 369 "dhcp6_parser.yy" // lalr1.cc:859 + { // List ending with , and a value. - ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 951 "dhcp6_parser.cc" +#line 892 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 51: // $@17: %empty -#line 375 "dhcp6_parser.yy" - { + case 51: +#line 376 "dhcp6_parser.yy" // lalr1.cc:859 + { // List parsing about to start } -#line 959 "dhcp6_parser.cc" +#line 900 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 52: // list_strings: "[" $@17 list_strings_content "]" -#line 377 "dhcp6_parser.yy" - { + case 52: +#line 378 "dhcp6_parser.yy" // lalr1.cc:859 + { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 968 "dhcp6_parser.cc" +#line 909 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 55: // not_empty_list_strings: "constant string" -#line 386 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 55: +#line 387 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 977 "dhcp6_parser.cc" +#line 918 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 390 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 56: +#line 391 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 986 "dhcp6_parser.cc" +#line 927 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 57: // unknown_map_entry: "constant string" ":" -#line 401 "dhcp6_parser.yy" - { + case 57: +#line 402 "dhcp6_parser.yy" // lalr1.cc:859 + { const std::string& where = ctx.contextName(); - const std::string& keyword = yystack_[1].value.as < std::string > (); + const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 997 "dhcp6_parser.cc" +#line 938 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 58: // $@18: %empty -#line 410 "dhcp6_parser.yy" - { + case 58: +#line 411 "dhcp6_parser.yy" // lalr1.cc:859 + { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1008 "dhcp6_parser.cc" +#line 949 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 59: // syntax_map: "{" $@18 global_object "}" -#line 415 "dhcp6_parser.yy" - { + case 59: +#line 416 "dhcp6_parser.yy" // lalr1.cc:859 + { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. @@ -1017,12 +958,12 @@ namespace isc { namespace dhcp { // Dhcp6 is required ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 1021 "dhcp6_parser.cc" +#line 962 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 60: // $@19: %empty -#line 425 "dhcp6_parser.yy" - { + case 60: +#line 426 "dhcp6_parser.yy" // lalr1.cc:859 + { // This code is executed when we're about to start parsing // the content of the map // Prevent against duplicate. @@ -1032,1310 +973,1320 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP6); } -#line 1036 "dhcp6_parser.cc" +#line 977 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 61: // global_object: "Dhcp6" $@19 ":" "{" global_params "}" -#line 434 "dhcp6_parser.yy" - { + case 61: +#line 435 "dhcp6_parser.yy" // lalr1.cc:859 + { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1046 "dhcp6_parser.cc" +#line 987 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 62: // $@20: %empty -#line 442 "dhcp6_parser.yy" - { + case 62: +#line 443 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1056 "dhcp6_parser.cc" +#line 997 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 63: // sub_dhcp6: "{" $@20 global_params "}" -#line 446 "dhcp6_parser.yy" - { + case 63: +#line 447 "dhcp6_parser.yy" // lalr1.cc:859 + { // No global parameter is required // parsing completed } -#line 1065 "dhcp6_parser.cc" +#line 1006 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 123: // $@21: %empty -#line 516 "dhcp6_parser.yy" - { + case 124: +#line 518 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1074 "dhcp6_parser.cc" +#line 1015 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 124: // data_directory: "data-directory" $@21 ":" "constant string" -#line 519 "dhcp6_parser.yy" - { - ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 125: +#line 521 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data-directory", datadir); ctx.leave(); } -#line 1084 "dhcp6_parser.cc" +#line 1025 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 125: // preferred_lifetime: "preferred-lifetime" ":" "integer" -#line 525 "dhcp6_parser.yy" - { + case 126: +#line 527 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("preferred-lifetime", prf); } -#line 1094 "dhcp6_parser.cc" +#line 1035 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 126: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" -#line 531 "dhcp6_parser.yy" - { + case 127: +#line 533 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("min-preferred-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("min-preferred-lifetime", prf); } -#line 1104 "dhcp6_parser.cc" +#line 1045 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 127: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" -#line 537 "dhcp6_parser.yy" - { + case 128: +#line 539 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-preferred-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-preferred-lifetime", prf); } -#line 1114 "dhcp6_parser.cc" +#line 1055 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 128: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 543 "dhcp6_parser.yy" - { + case 129: +#line 545 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 1124 "dhcp6_parser.cc" +#line 1065 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 129: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 549 "dhcp6_parser.yy" - { + case 130: +#line 551 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("min-valid-lifetime", prf); } -#line 1134 "dhcp6_parser.cc" +#line 1075 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 130: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 555 "dhcp6_parser.yy" - { + case 131: +#line 557 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-valid-lifetime", prf); } -#line 1144 "dhcp6_parser.cc" +#line 1085 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 131: // renew_timer: "renew-timer" ":" "integer" -#line 561 "dhcp6_parser.yy" - { + case 132: +#line 563 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1154 "dhcp6_parser.cc" +#line 1095 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 132: // rebind_timer: "rebind-timer" ":" "integer" -#line 567 "dhcp6_parser.yy" - { + case 133: +#line 569 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1164 "dhcp6_parser.cc" +#line 1105 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 133: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 573 "dhcp6_parser.yy" - { + case 134: +#line 575 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); - ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("calculate-tee-times", ctt); } -#line 1174 "dhcp6_parser.cc" +#line 1115 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 134: // t1_percent: "t1-percent" ":" "floating point" -#line 579 "dhcp6_parser.yy" - { + case 135: +#line 581 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); - ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t1-percent", t1); } -#line 1184 "dhcp6_parser.cc" +#line 1125 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 135: // t2_percent: "t2-percent" ":" "floating point" -#line 585 "dhcp6_parser.yy" - { + case 136: +#line 587 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); - ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t2-percent", t2); } -#line 1194 "dhcp6_parser.cc" +#line 1135 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 136: // cache_threshold: "cache-threshold" ":" "floating point" -#line 591 "dhcp6_parser.yy" - { + case 137: +#line 593 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); - ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr ct(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-threshold", ct); } -#line 1204 "dhcp6_parser.cc" +#line 1145 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 137: // cache_max_age: "cache-max-age" ":" "integer" -#line 597 "dhcp6_parser.yy" - { + case 138: +#line 599 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); - ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr cm(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-max-age", cm); } -#line 1214 "dhcp6_parser.cc" +#line 1155 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 138: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 603 "dhcp6_parser.yy" - { + case 139: +#line 605 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); - ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1224 "dhcp6_parser.cc" +#line 1165 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 139: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 609 "dhcp6_parser.yy" - { + case 140: +#line 611 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-send-updates", b); } -#line 1234 "dhcp6_parser.cc" +#line 1175 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 140: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 615 "dhcp6_parser.yy" - { + case 141: +#line 617 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-no-update", b); } -#line 1244 "dhcp6_parser.cc" +#line 1185 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 141: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 621 "dhcp6_parser.yy" - { + case 142: +#line 623 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-client-update", b); } -#line 1254 "dhcp6_parser.cc" +#line 1195 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 142: // $@22: %empty -#line 627 "dhcp6_parser.yy" - { + case 143: +#line 629 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 1263 "dhcp6_parser.cc" +#line 1204 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 143: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value -#line 630 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); + case 144: +#line 632 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1272 "dhcp6_parser.cc" +#line 1213 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 144: // ddns_replace_client_name_value: "when-present" -#line 636 "dhcp6_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); + case 145: +#line 638 "dhcp6_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 1280 "dhcp6_parser.cc" +#line 1221 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 145: // ddns_replace_client_name_value: "never" -#line 639 "dhcp6_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); + case 146: +#line 641 "dhcp6_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 1288 "dhcp6_parser.cc" +#line 1229 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 146: // ddns_replace_client_name_value: "always" -#line 642 "dhcp6_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); + case 147: +#line 644 "dhcp6_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 1296 "dhcp6_parser.cc" +#line 1237 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 147: // ddns_replace_client_name_value: "when-not-present" -#line 645 "dhcp6_parser.yy" - { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); + case 148: +#line 647 "dhcp6_parser.yy" // lalr1.cc:859 + { + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 1304 "dhcp6_parser.cc" +#line 1245 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 148: // ddns_replace_client_name_value: "boolean" -#line 648 "dhcp6_parser.yy" - { + case 149: +#line 650 "dhcp6_parser.yy" // lalr1.cc:859 + { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 1313 "dhcp6_parser.cc" +#line 1254 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 149: // $@23: %empty -#line 654 "dhcp6_parser.yy" - { + case 150: +#line 656 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1322 "dhcp6_parser.cc" +#line 1263 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 150: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" -#line 657 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 151: +#line 659 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); ctx.leave(); } -#line 1332 "dhcp6_parser.cc" +#line 1273 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 151: // $@24: %empty -#line 663 "dhcp6_parser.yy" - { + case 152: +#line 665 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1341 "dhcp6_parser.cc" +#line 1282 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 152: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" -#line 666 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 153: +#line 668 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); ctx.leave(); } -#line 1351 "dhcp6_parser.cc" +#line 1292 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 153: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 672 "dhcp6_parser.yy" - { + case 154: +#line 674 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-update-on-renew", b); } -#line 1361 "dhcp6_parser.cc" +#line 1302 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 154: // $@25: %empty -#line 678 "dhcp6_parser.yy" - { + case 155: +#line 680 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("ddns-use-conflict-resolution", b); +} +#line 1312 "dhcp6_parser.cc" // lalr1.cc:859 + break; + + case 156: +#line 686 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1370 "dhcp6_parser.cc" +#line 1321 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 155: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" -#line 681 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 157: +#line 689 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 1380 "dhcp6_parser.cc" +#line 1331 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 156: // $@26: %empty -#line 687 "dhcp6_parser.yy" - { + case 158: +#line 695 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1389 "dhcp6_parser.cc" +#line 1340 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 157: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" -#line 690 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 159: +#line 698 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 1399 "dhcp6_parser.cc" +#line 1350 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 158: // store_extended_info: "store-extended-info" ":" "boolean" -#line 696 "dhcp6_parser.yy" - { + case 160: +#line 704 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("store-extended-info", b); } -#line 1409 "dhcp6_parser.cc" +#line 1360 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 159: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 702 "dhcp6_parser.yy" - { + case 161: +#line 710 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); - ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr count(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-count", count); } -#line 1419 "dhcp6_parser.cc" +#line 1370 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 160: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 708 "dhcp6_parser.yy" - { + case 162: +#line 716 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); - ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr age(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-age", age); } -#line 1429 "dhcp6_parser.cc" +#line 1380 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 161: // $@27: %empty -#line 714 "dhcp6_parser.yy" - { + case 163: +#line 722 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1438 "dhcp6_parser.cc" +#line 1389 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 162: // server_tag: "server-tag" $@27 ":" "constant string" -#line 717 "dhcp6_parser.yy" - { - ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 164: +#line 725 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); ctx.leave(); } -#line 1448 "dhcp6_parser.cc" +#line 1399 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 163: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 723 "dhcp6_parser.yy" - { + case 165: +#line 731 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); - ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr unique(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-reservations-unique", unique); } -#line 1458 "dhcp6_parser.cc" +#line 1409 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 164: // $@28: %empty -#line 729 "dhcp6_parser.yy" - { + case 166: +#line 737 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1470 "dhcp6_parser.cc" +#line 1421 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 165: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}" -#line 735 "dhcp6_parser.yy" - { + case 167: +#line 743 "dhcp6_parser.yy" // lalr1.cc:859 + { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1480 "dhcp6_parser.cc" +#line 1431 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 166: // $@29: %empty -#line 741 "dhcp6_parser.yy" - { + case 168: +#line 749 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1490 "dhcp6_parser.cc" +#line 1441 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 167: // sub_interfaces6: "{" $@29 interfaces_config_params "}" -#line 745 "dhcp6_parser.yy" - { + case 169: +#line 753 "dhcp6_parser.yy" // lalr1.cc:859 + { // No interfaces config param is required // parsing completed } -#line 1499 "dhcp6_parser.cc" +#line 1450 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 175: // $@30: %empty -#line 761 "dhcp6_parser.yy" - { + case 177: +#line 769 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1511 "dhcp6_parser.cc" +#line 1462 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 176: // interfaces_list: "interfaces" $@30 ":" list_strings -#line 767 "dhcp6_parser.yy" - { + case 178: +#line 775 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1520 "dhcp6_parser.cc" +#line 1471 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 177: // re_detect: "re-detect" ":" "boolean" -#line 772 "dhcp6_parser.yy" - { + case 179: +#line 780 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1530 "dhcp6_parser.cc" +#line 1481 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 178: // $@31: %empty -#line 778 "dhcp6_parser.yy" - { + case 180: +#line 786 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-database", i); ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1542 "dhcp6_parser.cc" +#line 1493 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 179: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 784 "dhcp6_parser.yy" - { + case 181: +#line 792 "dhcp6_parser.yy" // lalr1.cc:859 + { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1553 "dhcp6_parser.cc" +#line 1504 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 180: // $@32: %empty -#line 791 "dhcp6_parser.yy" - { + case 182: +#line 799 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-database", i); ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1565 "dhcp6_parser.cc" +#line 1516 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 181: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}" -#line 797 "dhcp6_parser.yy" - { + case 183: +#line 805 "dhcp6_parser.yy" // lalr1.cc:859 + { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1576 "dhcp6_parser.cc" +#line 1527 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 182: // $@33: %empty -#line 804 "dhcp6_parser.yy" - { + case 184: +#line 812 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-databases", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1588 "dhcp6_parser.cc" +#line 1539 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 183: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]" -#line 810 "dhcp6_parser.yy" - { + case 185: +#line 818 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1597 "dhcp6_parser.cc" +#line 1548 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 188: // $@34: %empty -#line 823 "dhcp6_parser.yy" - { + case 190: +#line 831 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1607 "dhcp6_parser.cc" +#line 1558 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 189: // database: "{" $@34 database_map_params "}" -#line 827 "dhcp6_parser.yy" - { + case 191: +#line 835 "dhcp6_parser.yy" // lalr1.cc:859 + { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1617 "dhcp6_parser.cc" +#line 1568 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 213: // $@35: %empty -#line 860 "dhcp6_parser.yy" - { + case 215: +#line 868 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1626 "dhcp6_parser.cc" +#line 1577 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 214: // database_type: "type" $@35 ":" db_type -#line 863 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); + case 216: +#line 871 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1635 "dhcp6_parser.cc" +#line 1586 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 215: // db_type: "memfile" -#line 868 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1641 "dhcp6_parser.cc" + case 217: +#line 876 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } +#line 1592 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 216: // db_type: "mysql" -#line 869 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1647 "dhcp6_parser.cc" + case 218: +#line 877 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } +#line 1598 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 217: // db_type: "postgresql" -#line 870 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1653 "dhcp6_parser.cc" + case 219: +#line 878 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } +#line 1604 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 218: // db_type: "cql" -#line 871 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1659 "dhcp6_parser.cc" + case 220: +#line 879 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } +#line 1610 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 219: // $@36: %empty -#line 874 "dhcp6_parser.yy" - { + case 221: +#line 882 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1668 "dhcp6_parser.cc" +#line 1619 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 220: // user: "user" $@36 ":" "constant string" -#line 877 "dhcp6_parser.yy" - { - ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 222: +#line 885 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1678 "dhcp6_parser.cc" +#line 1629 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 221: // $@37: %empty -#line 883 "dhcp6_parser.yy" - { + case 223: +#line 891 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1687 "dhcp6_parser.cc" +#line 1638 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 222: // password: "password" $@37 ":" "constant string" -#line 886 "dhcp6_parser.yy" - { - ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 224: +#line 894 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1697 "dhcp6_parser.cc" +#line 1648 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 223: // $@38: %empty -#line 892 "dhcp6_parser.yy" - { + case 225: +#line 900 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1706 "dhcp6_parser.cc" +#line 1657 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 224: // host: "host" $@38 ":" "constant string" -#line 895 "dhcp6_parser.yy" - { - ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 226: +#line 903 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1716 "dhcp6_parser.cc" +#line 1667 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 225: // port: "port" ":" "integer" -#line 901 "dhcp6_parser.yy" - { + case 227: +#line 909 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); - ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1726 "dhcp6_parser.cc" +#line 1677 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 226: // $@39: %empty -#line 907 "dhcp6_parser.yy" - { + case 228: +#line 915 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1735 "dhcp6_parser.cc" +#line 1686 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 227: // name: "name" $@39 ":" "constant string" -#line 910 "dhcp6_parser.yy" - { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 229: +#line 918 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1745 "dhcp6_parser.cc" +#line 1696 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 228: // persist: "persist" ":" "boolean" -#line 916 "dhcp6_parser.yy" - { + case 230: +#line 924 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1755 "dhcp6_parser.cc" +#line 1706 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 229: // lfc_interval: "lfc-interval" ":" "integer" -#line 922 "dhcp6_parser.yy" - { + case 231: +#line 930 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1765 "dhcp6_parser.cc" +#line 1716 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 230: // readonly: "readonly" ":" "boolean" -#line 928 "dhcp6_parser.yy" - { + case 232: +#line 936 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1775 "dhcp6_parser.cc" +#line 1726 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 231: // connect_timeout: "connect-timeout" ":" "integer" -#line 934 "dhcp6_parser.yy" - { + case 233: +#line 942 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1785 "dhcp6_parser.cc" +#line 1736 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 232: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 940 "dhcp6_parser.yy" - { + case 234: +#line 948 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 1795 "dhcp6_parser.cc" +#line 1746 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 233: // max_row_errors: "max-row-errors" ":" "integer" -#line 946 "dhcp6_parser.yy" - { + case 235: +#line 954 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 1805 "dhcp6_parser.cc" +#line 1756 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 234: // request_timeout: "request-timeout" ":" "integer" -#line 952 "dhcp6_parser.yy" - { + case 236: +#line 960 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1815 "dhcp6_parser.cc" +#line 1766 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 235: // tcp_keepalive: "tcp-keepalive" ":" "integer" -#line 958 "dhcp6_parser.yy" - { + case 237: +#line 966 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 1825 "dhcp6_parser.cc" +#line 1776 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 236: // tcp_nodelay: "tcp-nodelay" ":" "boolean" -#line 964 "dhcp6_parser.yy" - { + case 238: +#line 972 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 1835 "dhcp6_parser.cc" +#line 1786 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 237: // $@40: %empty -#line 970 "dhcp6_parser.yy" - { + case 239: +#line 978 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1844 "dhcp6_parser.cc" +#line 1795 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 238: // contact_points: "contact-points" $@40 ":" "constant string" -#line 973 "dhcp6_parser.yy" - { - ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 240: +#line 981 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("contact-points", cp); ctx.leave(); } -#line 1854 "dhcp6_parser.cc" +#line 1805 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 239: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 979 "dhcp6_parser.yy" - { + case 241: +#line 987 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 1864 "dhcp6_parser.cc" +#line 1815 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 240: // $@41: %empty -#line 985 "dhcp6_parser.yy" - { + case 242: +#line 993 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1873 "dhcp6_parser.cc" +#line 1824 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 241: // keyspace: "keyspace" $@41 ":" "constant string" -#line 988 "dhcp6_parser.yy" - { - ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 243: +#line 996 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 1883 "dhcp6_parser.cc" +#line 1834 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 242: // $@42: %empty -#line 994 "dhcp6_parser.yy" - { + case 244: +#line 1002 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1892 "dhcp6_parser.cc" +#line 1843 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 243: // consistency: "consistency" $@42 ":" "constant string" -#line 997 "dhcp6_parser.yy" - { - ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 245: +#line 1005 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("consistency", c); ctx.leave(); } -#line 1902 "dhcp6_parser.cc" +#line 1853 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 244: // $@43: %empty -#line 1003 "dhcp6_parser.yy" - { + case 246: +#line 1011 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1911 "dhcp6_parser.cc" +#line 1862 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 245: // serial_consistency: "serial-consistency" $@43 ":" "constant string" -#line 1006 "dhcp6_parser.yy" - { - ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 247: +#line 1014 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("serial-consistency", c); ctx.leave(); } -#line 1921 "dhcp6_parser.cc" +#line 1872 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 246: // $@44: %empty -#line 1012 "dhcp6_parser.yy" - { + case 248: +#line 1020 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sanity-checks", m); ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 1933 "dhcp6_parser.cc" +#line 1884 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 247: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}" -#line 1018 "dhcp6_parser.yy" - { + case 249: +#line 1026 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1942 "dhcp6_parser.cc" +#line 1893 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 251: // $@45: %empty -#line 1028 "dhcp6_parser.yy" - { + case 253: +#line 1036 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1951 "dhcp6_parser.cc" +#line 1902 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 252: // lease_checks: "lease-checks" $@45 ":" "constant string" -#line 1031 "dhcp6_parser.yy" - { + case 254: +#line 1039 "dhcp6_parser.yy" // lalr1.cc:859 + { - if ( (string(yystack_[0].value.as < std::string > ()) == "none") || - (string(yystack_[0].value.as < std::string > ()) == "warn") || - (string(yystack_[0].value.as < std::string > ()) == "fix") || - (string(yystack_[0].value.as < std::string > ()) == "fix-del") || - (string(yystack_[0].value.as < std::string > ()) == "del")) { - ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + if ( (string(yystack_[0].value.as< std::string > ()) == "none") || + (string(yystack_[0].value.as< std::string > ()) == "warn") || + (string(yystack_[0].value.as< std::string > ()) == "fix") || + (string(yystack_[0].value.as< std::string > ()) == "fix-del") || + (string(yystack_[0].value.as< std::string > ()) == "del")) { + ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-checks", user); ctx.leave(); } else { - error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) + + error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) + ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1971 "dhcp6_parser.cc" +#line 1922 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 253: // $@46: %empty -#line 1047 "dhcp6_parser.yy" - { + case 255: +#line 1055 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("mac-sources", l); ctx.stack_.push_back(l); ctx.enter(ctx.MAC_SOURCES); } -#line 1983 "dhcp6_parser.cc" +#line 1934 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 254: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]" -#line 1053 "dhcp6_parser.yy" - { + case 256: +#line 1061 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 1992 "dhcp6_parser.cc" +#line 1943 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 259: // duid_id: "duid" -#line 1066 "dhcp6_parser.yy" - { + case 261: +#line 1074 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2001 "dhcp6_parser.cc" +#line 1952 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 260: // string_id: "constant string" -#line 1071 "dhcp6_parser.yy" - { - ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 262: +#line 1079 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2010 "dhcp6_parser.cc" +#line 1961 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 261: // $@47: %empty -#line 1076 "dhcp6_parser.yy" - { + case 263: +#line 1084 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host-reservation-identifiers", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2022 "dhcp6_parser.cc" +#line 1973 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 262: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]" -#line 1082 "dhcp6_parser.yy" - { + case 264: +#line 1090 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2031 "dhcp6_parser.cc" +#line 1982 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 268: // hw_address_id: "hw-address" -#line 1096 "dhcp6_parser.yy" - { + case 270: +#line 1104 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2040 "dhcp6_parser.cc" +#line 1991 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 269: // flex_id: "flex-id" -#line 1101 "dhcp6_parser.yy" - { + case 271: +#line 1109 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2049 "dhcp6_parser.cc" +#line 2000 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 270: // $@48: %empty -#line 1108 "dhcp6_parser.yy" - { + case 272: +#line 1116 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay-supplied-options", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2061 "dhcp6_parser.cc" +#line 2012 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 271: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]" -#line 1114 "dhcp6_parser.yy" - { + case 273: +#line 1122 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2070 "dhcp6_parser.cc" +#line 2021 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 272: // $@49: %empty -#line 1121 "dhcp6_parser.yy" - { + case 274: +#line 1129 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("multi-threading", mt); ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2082 "dhcp6_parser.cc" +#line 2033 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 273: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}" -#line 1127 "dhcp6_parser.yy" - { + case 275: +#line 1135 "dhcp6_parser.yy" // lalr1.cc:859 + { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2093 "dhcp6_parser.cc" +#line 2044 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 282: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1146 "dhcp6_parser.yy" - { + case 284: +#line 1154 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2103 "dhcp6_parser.cc" +#line 2054 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 283: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1152 "dhcp6_parser.yy" - { + case 285: +#line 1160 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2113 "dhcp6_parser.cc" +#line 2064 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 284: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1158 "dhcp6_parser.yy" - { + case 286: +#line 1166 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2123 "dhcp6_parser.cc" +#line 2074 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 285: // $@50: %empty -#line 1164 "dhcp6_parser.yy" - { + case 287: +#line 1172 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hooks-libraries", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2135 "dhcp6_parser.cc" +#line 2086 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 286: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]" -#line 1170 "dhcp6_parser.yy" - { + case 288: +#line 1178 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2144 "dhcp6_parser.cc" +#line 2095 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 291: // $@51: %empty -#line 1183 "dhcp6_parser.yy" - { + case 293: +#line 1191 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2154 "dhcp6_parser.cc" +#line 2105 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 292: // hooks_library: "{" $@51 hooks_params "}" -#line 1187 "dhcp6_parser.yy" - { + case 294: +#line 1195 "dhcp6_parser.yy" // lalr1.cc:859 + { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2164 "dhcp6_parser.cc" +#line 2115 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 293: // $@52: %empty -#line 1193 "dhcp6_parser.yy" - { + case 295: +#line 1201 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2174 "dhcp6_parser.cc" +#line 2125 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 294: // sub_hooks_library: "{" $@52 hooks_params "}" -#line 1197 "dhcp6_parser.yy" - { + case 296: +#line 1205 "dhcp6_parser.yy" // lalr1.cc:859 + { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2184 "dhcp6_parser.cc" +#line 2135 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 300: // $@53: %empty -#line 1212 "dhcp6_parser.yy" - { + case 302: +#line 1220 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2193 "dhcp6_parser.cc" +#line 2144 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 301: // library: "library" $@53 ":" "constant string" -#line 1215 "dhcp6_parser.yy" - { - ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 303: +#line 1223 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2203 "dhcp6_parser.cc" +#line 2154 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 302: // $@54: %empty -#line 1221 "dhcp6_parser.yy" - { + case 304: +#line 1229 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2212 "dhcp6_parser.cc" +#line 2163 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 303: // parameters: "parameters" $@54 ":" map_value -#line 1224 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); + case 305: +#line 1232 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2221 "dhcp6_parser.cc" +#line 2172 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 304: // $@55: %empty -#line 1230 "dhcp6_parser.yy" - { + case 306: +#line 1238 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("expired-leases-processing", m); ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2233 "dhcp6_parser.cc" +#line 2184 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 305: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}" -#line 1236 "dhcp6_parser.yy" - { + case 307: +#line 1244 "dhcp6_parser.yy" // lalr1.cc:859 + { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2243 "dhcp6_parser.cc" +#line 2194 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 314: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1254 "dhcp6_parser.yy" - { + case 316: +#line 1262 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2253 "dhcp6_parser.cc" +#line 2204 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 315: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1260 "dhcp6_parser.yy" - { + case 317: +#line 1268 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2263 "dhcp6_parser.cc" +#line 2214 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 316: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1266 "dhcp6_parser.yy" - { + case 318: +#line 1274 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2273 "dhcp6_parser.cc" +#line 2224 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 317: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1272 "dhcp6_parser.yy" - { + case 319: +#line 1280 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2283 "dhcp6_parser.cc" +#line 2234 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 318: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1278 "dhcp6_parser.yy" - { + case 320: +#line 1286 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2293 "dhcp6_parser.cc" +#line 2244 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 319: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1284 "dhcp6_parser.yy" - { + case 321: +#line 1292 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2303 "dhcp6_parser.cc" +#line 2254 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 320: // $@56: %empty -#line 1293 "dhcp6_parser.yy" - { + case 322: +#line 1301 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet6", l); ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET6); } -#line 2315 "dhcp6_parser.cc" +#line 2266 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 321: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]" -#line 1299 "dhcp6_parser.yy" - { + case 323: +#line 1307 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2324 "dhcp6_parser.cc" +#line 2275 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 326: // $@57: %empty -#line 1319 "dhcp6_parser.yy" - { + case 328: +#line 1327 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2334 "dhcp6_parser.cc" +#line 2285 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 327: // subnet6: "{" $@57 subnet6_params "}" -#line 1323 "dhcp6_parser.yy" - { + case 329: +#line 1331 "dhcp6_parser.yy" // lalr1.cc:859 + { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. // In particular we can do things like this: @@ -2356,596 +2307,596 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2360 "dhcp6_parser.cc" +#line 2311 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 328: // $@58: %empty -#line 1345 "dhcp6_parser.yy" - { + case 330: +#line 1353 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2370 "dhcp6_parser.cc" +#line 2321 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 329: // sub_subnet6: "{" $@58 subnet6_params "}" -#line 1349 "dhcp6_parser.yy" - { + case 331: +#line 1357 "dhcp6_parser.yy" // lalr1.cc:859 + { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2380 "dhcp6_parser.cc" +#line 2331 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 371: // $@59: %empty -#line 1402 "dhcp6_parser.yy" - { + case 374: +#line 1411 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2389 "dhcp6_parser.cc" +#line 2340 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 372: // subnet: "subnet" $@59 ":" "constant string" -#line 1405 "dhcp6_parser.yy" - { - ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 375: +#line 1414 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2399 "dhcp6_parser.cc" +#line 2350 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 373: // $@60: %empty -#line 1411 "dhcp6_parser.yy" - { + case 376: +#line 1420 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2408 "dhcp6_parser.cc" +#line 2359 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 374: // interface: "interface" $@60 ":" "constant string" -#line 1414 "dhcp6_parser.yy" - { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 377: +#line 1423 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2418 "dhcp6_parser.cc" +#line 2369 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 375: // $@61: %empty -#line 1420 "dhcp6_parser.yy" - { + case 378: +#line 1429 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2427 "dhcp6_parser.cc" +#line 2378 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 376: // interface_id: "interface-id" $@61 ":" "constant string" -#line 1423 "dhcp6_parser.yy" - { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 379: +#line 1432 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface-id", iface); ctx.leave(); } -#line 2437 "dhcp6_parser.cc" +#line 2388 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 377: // $@62: %empty -#line 1429 "dhcp6_parser.yy" - { + case 380: +#line 1438 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2446 "dhcp6_parser.cc" +#line 2397 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 378: // client_class: "client-class" $@62 ":" "constant string" -#line 1432 "dhcp6_parser.yy" - { - ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 381: +#line 1441 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2456 "dhcp6_parser.cc" +#line 2407 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 379: // $@63: %empty -#line 1438 "dhcp6_parser.yy" - { + case 382: +#line 1447 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("require-client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2468 "dhcp6_parser.cc" +#line 2419 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 380: // require_client_classes: "require-client-classes" $@63 ":" list_strings -#line 1444 "dhcp6_parser.yy" - { + case 383: +#line 1453 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2477 "dhcp6_parser.cc" +#line 2428 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 381: // $@64: %empty -#line 1449 "dhcp6_parser.yy" - { + case 384: +#line 1458 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2486 "dhcp6_parser.cc" +#line 2437 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 382: // reservation_mode: "reservation-mode" $@64 ":" hr_mode -#line 1452 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); + case 385: +#line 1461 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2495 "dhcp6_parser.cc" +#line 2446 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 383: // hr_mode: "disabled" -#line 1457 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2501 "dhcp6_parser.cc" + case 386: +#line 1466 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } +#line 2452 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 384: // hr_mode: "out-of-pool" -#line 1458 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2507 "dhcp6_parser.cc" + case 387: +#line 1467 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } +#line 2458 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 385: // hr_mode: "global" -#line 1459 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2513 "dhcp6_parser.cc" + case 388: +#line 1468 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } +#line 2464 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 386: // hr_mode: "all" -#line 1460 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2519 "dhcp6_parser.cc" + case 389: +#line 1469 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } +#line 2470 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 387: // id: "id" ":" "integer" -#line 1463 "dhcp6_parser.yy" - { + case 390: +#line 1472 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); - ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2529 "dhcp6_parser.cc" +#line 2480 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 388: // rapid_commit: "rapid-commit" ":" "boolean" -#line 1469 "dhcp6_parser.yy" - { + case 391: +#line 1478 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location)); - ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 2539 "dhcp6_parser.cc" +#line 2490 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 389: // $@65: %empty -#line 1477 "dhcp6_parser.yy" - { + case 392: +#line 1486 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("shared-networks", l); ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2551 "dhcp6_parser.cc" +#line 2502 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 390: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]" -#line 1483 "dhcp6_parser.yy" - { + case 393: +#line 1492 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2560 "dhcp6_parser.cc" +#line 2511 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 395: // $@66: %empty -#line 1498 "dhcp6_parser.yy" - { + case 398: +#line 1507 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2570 "dhcp6_parser.cc" +#line 2521 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 396: // shared_network: "{" $@66 shared_network_params "}" -#line 1502 "dhcp6_parser.yy" - { + case 399: +#line 1511 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); } -#line 2578 "dhcp6_parser.cc" +#line 2529 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 435: // $@67: %empty -#line 1552 "dhcp6_parser.yy" - { + case 439: +#line 1562 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-def", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2590 "dhcp6_parser.cc" +#line 2541 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 436: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]" -#line 1558 "dhcp6_parser.yy" - { + case 440: +#line 1568 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2599 "dhcp6_parser.cc" +#line 2550 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 437: // $@68: %empty -#line 1566 "dhcp6_parser.yy" - { + case 441: +#line 1576 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2608 "dhcp6_parser.cc" +#line 2559 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 438: // sub_option_def_list: "{" $@68 option_def_list "}" -#line 1569 "dhcp6_parser.yy" - { + case 442: +#line 1579 "dhcp6_parser.yy" // lalr1.cc:859 + { // parsing completed } -#line 2616 "dhcp6_parser.cc" +#line 2567 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 443: // $@69: %empty -#line 1585 "dhcp6_parser.yy" - { + case 447: +#line 1595 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2626 "dhcp6_parser.cc" +#line 2577 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 444: // option_def_entry: "{" $@69 option_def_params "}" -#line 1589 "dhcp6_parser.yy" - { + case 448: +#line 1599 "dhcp6_parser.yy" // lalr1.cc:859 + { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2638 "dhcp6_parser.cc" +#line 2589 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 445: // $@70: %empty -#line 1600 "dhcp6_parser.yy" - { + case 449: +#line 1610 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2648 "dhcp6_parser.cc" +#line 2599 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 446: // sub_option_def: "{" $@70 option_def_params "}" -#line 1604 "dhcp6_parser.yy" - { + case 450: +#line 1614 "dhcp6_parser.yy" // lalr1.cc:859 + { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2660 "dhcp6_parser.cc" +#line 2611 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 462: // code: "code" ":" "integer" -#line 1636 "dhcp6_parser.yy" - { + case 466: +#line 1646 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); - ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 2670 "dhcp6_parser.cc" +#line 2621 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 464: // $@71: %empty -#line 1644 "dhcp6_parser.yy" - { + case 468: +#line 1654 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2679 "dhcp6_parser.cc" +#line 2630 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 465: // option_def_type: "type" $@71 ":" "constant string" -#line 1647 "dhcp6_parser.yy" - { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 469: +#line 1657 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 2689 "dhcp6_parser.cc" +#line 2640 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 466: // $@72: %empty -#line 1653 "dhcp6_parser.yy" - { + case 470: +#line 1663 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2698 "dhcp6_parser.cc" +#line 2649 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 467: // option_def_record_types: "record-types" $@72 ":" "constant string" -#line 1656 "dhcp6_parser.yy" - { - ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 471: +#line 1666 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 2708 "dhcp6_parser.cc" +#line 2659 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 468: // $@73: %empty -#line 1662 "dhcp6_parser.yy" - { + case 472: +#line 1672 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2717 "dhcp6_parser.cc" +#line 2668 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 469: // space: "space" $@73 ":" "constant string" -#line 1665 "dhcp6_parser.yy" - { - ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 473: +#line 1675 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 2727 "dhcp6_parser.cc" +#line 2678 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 471: // $@74: %empty -#line 1673 "dhcp6_parser.yy" - { + case 475: +#line 1683 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2736 "dhcp6_parser.cc" +#line 2687 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 472: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string" -#line 1676 "dhcp6_parser.yy" - { - ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 476: +#line 1686 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 2746 "dhcp6_parser.cc" +#line 2697 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 473: // option_def_array: "array" ":" "boolean" -#line 1682 "dhcp6_parser.yy" - { + case 477: +#line 1692 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); - ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 2756 "dhcp6_parser.cc" +#line 2707 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 474: // $@75: %empty -#line 1692 "dhcp6_parser.yy" - { + case 478: +#line 1702 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-data", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 2768 "dhcp6_parser.cc" +#line 2719 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 475: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]" -#line 1698 "dhcp6_parser.yy" - { + case 479: +#line 1708 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2777 "dhcp6_parser.cc" +#line 2728 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 480: // $@76: %empty -#line 1717 "dhcp6_parser.yy" - { + case 484: +#line 1727 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2787 "dhcp6_parser.cc" +#line 2738 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 481: // option_data_entry: "{" $@76 option_data_params "}" -#line 1721 "dhcp6_parser.yy" - { + case 485: +#line 1731 "dhcp6_parser.yy" // lalr1.cc:859 + { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2796 "dhcp6_parser.cc" +#line 2747 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 482: // $@77: %empty -#line 1729 "dhcp6_parser.yy" - { + case 486: +#line 1739 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2806 "dhcp6_parser.cc" +#line 2757 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 483: // sub_option_data: "{" $@77 option_data_params "}" -#line 1733 "dhcp6_parser.yy" - { + case 487: +#line 1743 "dhcp6_parser.yy" // lalr1.cc:859 + { /// @todo: the code or name parameters are required. // parsing completed } -#line 2815 "dhcp6_parser.cc" +#line 2766 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 498: // $@78: %empty -#line 1766 "dhcp6_parser.yy" - { + case 502: +#line 1776 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2824 "dhcp6_parser.cc" +#line 2775 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 499: // option_data_data: "data" $@78 ":" "constant string" -#line 1769 "dhcp6_parser.yy" - { - ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 503: +#line 1779 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 2834 "dhcp6_parser.cc" +#line 2785 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 502: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1779 "dhcp6_parser.yy" - { + case 506: +#line 1789 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); - ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 2844 "dhcp6_parser.cc" +#line 2795 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 503: // option_data_always_send: "always-send" ":" "boolean" -#line 1785 "dhcp6_parser.yy" - { + case 507: +#line 1795 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); - ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 2854 "dhcp6_parser.cc" +#line 2805 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 504: // $@79: %empty -#line 1794 "dhcp6_parser.yy" - { + case 508: +#line 1804 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pools", l); ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 2866 "dhcp6_parser.cc" +#line 2817 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 505: // pools_list: "pools" $@79 ":" "[" pools_list_content "]" -#line 1800 "dhcp6_parser.yy" - { + case 509: +#line 1810 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 2875 "dhcp6_parser.cc" +#line 2826 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 510: // $@80: %empty -#line 1815 "dhcp6_parser.yy" - { + case 514: +#line 1825 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2885 "dhcp6_parser.cc" +#line 2836 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 511: // pool_list_entry: "{" $@80 pool_params "}" -#line 1819 "dhcp6_parser.yy" - { + case 515: +#line 1829 "dhcp6_parser.yy" // lalr1.cc:859 + { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2895 "dhcp6_parser.cc" +#line 2846 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 512: // $@81: %empty -#line 1825 "dhcp6_parser.yy" - { + case 516: +#line 1835 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2905 "dhcp6_parser.cc" +#line 2856 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 513: // sub_pool6: "{" $@81 pool_params "}" -#line 1829 "dhcp6_parser.yy" - { + case 517: +#line 1839 "dhcp6_parser.yy" // lalr1.cc:859 + { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2915 "dhcp6_parser.cc" +#line 2866 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 523: // $@82: %empty -#line 1848 "dhcp6_parser.yy" - { + case 527: +#line 1858 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2924 "dhcp6_parser.cc" +#line 2875 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 524: // pool_entry: "pool" $@82 ":" "constant string" -#line 1851 "dhcp6_parser.yy" - { - ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 528: +#line 1861 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 2934 "dhcp6_parser.cc" +#line 2885 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 525: // $@83: %empty -#line 1857 "dhcp6_parser.yy" - { + case 529: +#line 1867 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.enter(ctx.NO_KEYWORD); } -#line 2942 "dhcp6_parser.cc" +#line 2893 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 526: // user_context: "user-context" $@83 ":" map_value -#line 1859 "dhcp6_parser.yy" - { + case 530: +#line 1869 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr parent = ctx.stack_.back(); - ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); + ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); ConstElementPtr old = parent->get("user-context"); // Handle already existing user context @@ -2965,23 +2916,23 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2969 "dhcp6_parser.cc" +#line 2920 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 527: // $@84: %empty -#line 1882 "dhcp6_parser.yy" - { + case 531: +#line 1892 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.enter(ctx.NO_KEYWORD); } -#line 2977 "dhcp6_parser.cc" +#line 2928 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 528: // comment: "comment" $@84 ":" "constant string" -#line 1884 "dhcp6_parser.yy" - { + case 532: +#line 1894 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); - ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); user_context->set("comment", comment); // Handle already existing user context @@ -3002,1263 +2953,1259 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3006 "dhcp6_parser.cc" +#line 2957 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 529: // $@85: %empty -#line 1912 "dhcp6_parser.yy" - { + case 533: +#line 1922 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pd-pools", l); ctx.stack_.push_back(l); ctx.enter(ctx.PD_POOLS); } -#line 3018 "dhcp6_parser.cc" +#line 2969 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 530: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]" -#line 1918 "dhcp6_parser.yy" - { + case 534: +#line 1928 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3027 "dhcp6_parser.cc" +#line 2978 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 535: // $@86: %empty -#line 1933 "dhcp6_parser.yy" - { + case 539: +#line 1943 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3037 "dhcp6_parser.cc" +#line 2988 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 536: // pd_pool_entry: "{" $@86 pd_pool_params "}" -#line 1937 "dhcp6_parser.yy" - { + case 540: +#line 1947 "dhcp6_parser.yy" // lalr1.cc:859 + { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3049 "dhcp6_parser.cc" +#line 3000 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 537: // $@87: %empty -#line 1945 "dhcp6_parser.yy" - { + case 541: +#line 1955 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3059 "dhcp6_parser.cc" +#line 3010 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 538: // sub_pd_pool: "{" $@87 pd_pool_params "}" -#line 1949 "dhcp6_parser.yy" - { + case 542: +#line 1959 "dhcp6_parser.yy" // lalr1.cc:859 + { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3071 "dhcp6_parser.cc" +#line 3022 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 552: // $@88: %empty -#line 1974 "dhcp6_parser.yy" - { + case 556: +#line 1984 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3080 "dhcp6_parser.cc" +#line 3031 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 553: // pd_prefix: "prefix" $@88 ":" "constant string" -#line 1977 "dhcp6_parser.yy" - { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 557: +#line 1987 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); ctx.leave(); } -#line 3090 "dhcp6_parser.cc" +#line 3041 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 554: // pd_prefix_len: "prefix-len" ":" "integer" -#line 1983 "dhcp6_parser.yy" - { + case 558: +#line 1993 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); } -#line 3100 "dhcp6_parser.cc" +#line 3051 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 555: // $@89: %empty -#line 1989 "dhcp6_parser.yy" - { + case 559: +#line 1999 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3109 "dhcp6_parser.cc" +#line 3060 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 556: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string" -#line 1992 "dhcp6_parser.yy" - { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 560: +#line 2002 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix", prf); ctx.leave(); } -#line 3119 "dhcp6_parser.cc" +#line 3070 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 557: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" -#line 1998 "dhcp6_parser.yy" - { + case 561: +#line 2008 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location)); - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix-len", prf); } -#line 3129 "dhcp6_parser.cc" +#line 3080 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 558: // pd_delegated_len: "delegated-len" ":" "integer" -#line 2004 "dhcp6_parser.yy" - { + case 562: +#line 2014 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location)); - ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); } -#line 3139 "dhcp6_parser.cc" +#line 3090 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 559: // $@90: %empty -#line 2013 "dhcp6_parser.yy" - { + case 563: +#line 2023 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations", l); ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3151 "dhcp6_parser.cc" +#line 3102 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 560: // reservations: "reservations" $@90 ":" "[" reservations_list "]" -#line 2019 "dhcp6_parser.yy" - { + case 564: +#line 2029 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3160 "dhcp6_parser.cc" +#line 3111 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 565: // $@91: %empty -#line 2032 "dhcp6_parser.yy" - { + case 569: +#line 2042 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3170 "dhcp6_parser.cc" +#line 3121 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 566: // reservation: "{" $@91 reservation_params "}" -#line 2036 "dhcp6_parser.yy" - { + case 570: +#line 2046 "dhcp6_parser.yy" // lalr1.cc:859 + { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3179 "dhcp6_parser.cc" +#line 3130 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 567: // $@92: %empty -#line 2041 "dhcp6_parser.yy" - { + case 571: +#line 2051 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3189 "dhcp6_parser.cc" +#line 3140 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 568: // sub_reservation: "{" $@92 reservation_params "}" -#line 2045 "dhcp6_parser.yy" - { + case 572: +#line 2055 "dhcp6_parser.yy" // lalr1.cc:859 + { /// @todo: an identifier parameter is required. // parsing completed } -#line 3198 "dhcp6_parser.cc" +#line 3149 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 584: // $@93: %empty -#line 2072 "dhcp6_parser.yy" - { + case 588: +#line 2082 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-addresses", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3210 "dhcp6_parser.cc" +#line 3161 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 585: // ip_addresses: "ip-addresses" $@93 ":" list_strings -#line 2078 "dhcp6_parser.yy" - { + case 589: +#line 2088 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3219 "dhcp6_parser.cc" +#line 3170 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 586: // $@94: %empty -#line 2083 "dhcp6_parser.yy" - { + case 590: +#line 2093 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefixes", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3231 "dhcp6_parser.cc" +#line 3182 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 587: // prefixes: "prefixes" $@94 ":" list_strings -#line 2089 "dhcp6_parser.yy" - { + case 591: +#line 2099 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3240 "dhcp6_parser.cc" +#line 3191 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 588: // $@95: %empty -#line 2094 "dhcp6_parser.yy" - { + case 592: +#line 2104 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3249 "dhcp6_parser.cc" +#line 3200 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 589: // duid: "duid" $@95 ":" "constant string" -#line 2097 "dhcp6_parser.yy" - { - ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 593: +#line 2107 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3259 "dhcp6_parser.cc" +#line 3210 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 590: // $@96: %empty -#line 2103 "dhcp6_parser.yy" - { + case 594: +#line 2113 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3268 "dhcp6_parser.cc" +#line 3219 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 591: // hw_address: "hw-address" $@96 ":" "constant string" -#line 2106 "dhcp6_parser.yy" - { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 595: +#line 2116 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3278 "dhcp6_parser.cc" +#line 3229 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 592: // $@97: %empty -#line 2112 "dhcp6_parser.yy" - { + case 596: +#line 2122 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3287 "dhcp6_parser.cc" +#line 3238 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 593: // hostname: "hostname" $@97 ":" "constant string" -#line 2115 "dhcp6_parser.yy" - { - ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 597: +#line 2125 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3297 "dhcp6_parser.cc" +#line 3248 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 594: // $@98: %empty -#line 2121 "dhcp6_parser.yy" - { + case 598: +#line 2131 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3306 "dhcp6_parser.cc" +#line 3257 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 595: // flex_id_value: "flex-id" $@98 ":" "constant string" -#line 2124 "dhcp6_parser.yy" - { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 599: +#line 2134 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3316 "dhcp6_parser.cc" +#line 3267 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 596: // $@99: %empty -#line 2130 "dhcp6_parser.yy" - { + case 600: +#line 2140 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3328 "dhcp6_parser.cc" +#line 3279 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 597: // reservation_client_classes: "client-classes" $@99 ":" list_strings -#line 2136 "dhcp6_parser.yy" - { + case 601: +#line 2146 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3337 "dhcp6_parser.cc" +#line 3288 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 598: // $@100: %empty -#line 2144 "dhcp6_parser.yy" - { + case 602: +#line 2154 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay", m); ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3349 "dhcp6_parser.cc" +#line 3300 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 599: // relay: "relay" $@100 ":" "{" relay_map "}" -#line 2150 "dhcp6_parser.yy" - { + case 603: +#line 2160 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3358 "dhcp6_parser.cc" +#line 3309 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 602: // $@101: %empty -#line 2159 "dhcp6_parser.yy" - { + case 606: +#line 2169 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3367 "dhcp6_parser.cc" +#line 3318 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 603: // ip_address: "ip-address" $@101 ":" "constant string" -#line 2162 "dhcp6_parser.yy" - { - ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 607: +#line 2172 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3377 "dhcp6_parser.cc" +#line 3328 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 604: // $@102: %empty -#line 2171 "dhcp6_parser.yy" - { + case 608: +#line 2181 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", l); ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3389 "dhcp6_parser.cc" +#line 3340 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 605: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]" -#line 2177 "dhcp6_parser.yy" - { + case 609: +#line 2187 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3398 "dhcp6_parser.cc" +#line 3349 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 608: // $@103: %empty -#line 2186 "dhcp6_parser.yy" - { + case 612: +#line 2196 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3408 "dhcp6_parser.cc" +#line 3359 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 609: // client_class_entry: "{" $@103 client_class_params "}" -#line 2190 "dhcp6_parser.yy" - { + case 613: +#line 2200 "dhcp6_parser.yy" // lalr1.cc:859 + { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3418 "dhcp6_parser.cc" +#line 3369 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 622: // $@104: %empty -#line 2215 "dhcp6_parser.yy" - { + case 626: +#line 2225 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3427 "dhcp6_parser.cc" +#line 3378 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 623: // client_class_test: "test" $@104 ":" "constant string" -#line 2218 "dhcp6_parser.yy" - { - ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 627: +#line 2228 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3437 "dhcp6_parser.cc" +#line 3388 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 624: // only_if_required: "only-if-required" ":" "boolean" -#line 2224 "dhcp6_parser.yy" - { + case 628: +#line 2234 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3447 "dhcp6_parser.cc" +#line 3398 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 625: // $@105: %empty -#line 2233 "dhcp6_parser.yy" - { + case 629: +#line 2243 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("server-id", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-id", m); ctx.stack_.push_back(m); ctx.enter(ctx.SERVER_ID); } -#line 3459 "dhcp6_parser.cc" +#line 3410 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 626: // server_id: "server-id" $@105 ":" "{" server_id_params "}" -#line 2239 "dhcp6_parser.yy" - { + case 630: +#line 2249 "dhcp6_parser.yy" // lalr1.cc:859 + { // The type parameter is required. ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3470 "dhcp6_parser.cc" +#line 3421 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 638: // $@106: %empty -#line 2261 "dhcp6_parser.yy" - { + case 642: +#line 2271 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DUID_TYPE); } -#line 3479 "dhcp6_parser.cc" +#line 3430 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 639: // server_id_type: "type" $@106 ":" duid_type -#line 2264 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); + case 643: +#line 2274 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3488 "dhcp6_parser.cc" +#line 3439 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 640: // duid_type: "LLT" -#line 2269 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 3494 "dhcp6_parser.cc" + case 644: +#line 2279 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } +#line 3445 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 641: // duid_type: "EN" -#line 2270 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 3500 "dhcp6_parser.cc" + case 645: +#line 2280 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } +#line 3451 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 642: // duid_type: "LL" -#line 2271 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 3506 "dhcp6_parser.cc" + case 646: +#line 2281 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } +#line 3457 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 643: // htype: "htype" ":" "integer" -#line 2274 "dhcp6_parser.yy" - { + case 647: +#line 2284 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("htype", ctx.loc2pos(yystack_[2].location)); - ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); } -#line 3516 "dhcp6_parser.cc" +#line 3467 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 644: // $@107: %empty -#line 2280 "dhcp6_parser.yy" - { + case 648: +#line 2290 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("identifier", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3525 "dhcp6_parser.cc" +#line 3476 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 645: // identifier: "identifier" $@107 ":" "constant string" -#line 2283 "dhcp6_parser.yy" - { - ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 649: +#line 2293 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); ctx.leave(); } -#line 3535 "dhcp6_parser.cc" +#line 3486 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 646: // time: "time" ":" "integer" -#line 2289 "dhcp6_parser.yy" - { + case 650: +#line 2299 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("time", ctx.loc2pos(yystack_[2].location)); - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); } -#line 3545 "dhcp6_parser.cc" +#line 3496 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 647: // enterprise_id: "enterprise-id" ":" "integer" -#line 2295 "dhcp6_parser.yy" - { + case 651: +#line 2305 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location)); - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); } -#line 3555 "dhcp6_parser.cc" +#line 3506 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 648: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2303 "dhcp6_parser.yy" - { + case 652: +#line 2313 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3565 "dhcp6_parser.cc" +#line 3516 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 649: // $@108: %empty -#line 2311 "dhcp6_parser.yy" - { + case 653: +#line 2321 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("control-socket", m); ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3577 "dhcp6_parser.cc" +#line 3528 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 650: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}" -#line 2317 "dhcp6_parser.yy" - { + case 654: +#line 2327 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 3586 "dhcp6_parser.cc" +#line 3537 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 658: // $@109: %empty -#line 2333 "dhcp6_parser.yy" - { + case 662: +#line 2343 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3595 "dhcp6_parser.cc" +#line 3546 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 659: // socket_type: "socket-type" $@109 ":" "constant string" -#line 2336 "dhcp6_parser.yy" - { - ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 663: +#line 2346 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3605 "dhcp6_parser.cc" +#line 3556 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 660: // $@110: %empty -#line 2342 "dhcp6_parser.yy" - { + case 664: +#line 2352 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3614 "dhcp6_parser.cc" +#line 3565 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 661: // socket_name: "socket-name" $@110 ":" "constant string" -#line 2345 "dhcp6_parser.yy" - { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 665: +#line 2355 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 3624 "dhcp6_parser.cc" +#line 3575 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 662: // $@111: %empty -#line 2354 "dhcp6_parser.yy" - { + case 666: +#line 2364 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-queue-control", qc); ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 3636 "dhcp6_parser.cc" +#line 3587 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 663: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}" -#line 2360 "dhcp6_parser.yy" - { + case 667: +#line 2370 "dhcp6_parser.yy" // lalr1.cc:859 + { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3647 "dhcp6_parser.cc" +#line 3598 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 672: // enable_queue: "enable-queue" ":" "boolean" -#line 2379 "dhcp6_parser.yy" - { + case 676: +#line 2389 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 3657 "dhcp6_parser.cc" +#line 3608 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 673: // $@112: %empty -#line 2385 "dhcp6_parser.yy" - { + case 677: +#line 2395 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3666 "dhcp6_parser.cc" +#line 3617 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 674: // queue_type: "queue-type" $@112 ":" "constant string" -#line 2388 "dhcp6_parser.yy" - { - ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 678: +#line 2398 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr qt(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 3676 "dhcp6_parser.cc" +#line 3627 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 675: // capacity: "capacity" ":" "integer" -#line 2394 "dhcp6_parser.yy" - { + case 679: +#line 2404 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); - ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr c(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 3686 "dhcp6_parser.cc" +#line 3637 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 676: // $@113: %empty -#line 2400 "dhcp6_parser.yy" - { - ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); + case 680: +#line 2410 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.unique(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3695 "dhcp6_parser.cc" +#line 3646 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 677: // arbitrary_map_entry: "constant string" $@113 ":" value -#line 2403 "dhcp6_parser.yy" - { - ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + case 681: +#line 2413 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set(yystack_[3].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3704 "dhcp6_parser.cc" +#line 3655 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 678: // $@114: %empty -#line 2410 "dhcp6_parser.yy" - { + case 682: +#line 2420 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 3716 "dhcp6_parser.cc" +#line 3667 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 679: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}" -#line 2416 "dhcp6_parser.yy" - { + case 683: +#line 2426 "dhcp6_parser.yy" // lalr1.cc:859 + { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3727 "dhcp6_parser.cc" +#line 3678 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 680: // $@115: %empty -#line 2423 "dhcp6_parser.yy" - { + case 684: +#line 2433 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3737 "dhcp6_parser.cc" +#line 3688 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 681: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}" -#line 2427 "dhcp6_parser.yy" - { + case 685: +#line 2437 "dhcp6_parser.yy" // lalr1.cc:859 + { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3747 "dhcp6_parser.cc" +#line 3698 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 702: // enable_updates: "enable-updates" ":" "boolean" -#line 2457 "dhcp6_parser.yy" - { + case 706: +#line 2467 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 3757 "dhcp6_parser.cc" +#line 3708 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 703: // $@116: %empty -#line 2464 "dhcp6_parser.yy" - { + case 707: +#line 2474 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3766 "dhcp6_parser.cc" +#line 3717 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 704: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string" -#line 2467 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 708: +#line 2477 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 3776 "dhcp6_parser.cc" +#line 3727 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 705: // $@117: %empty -#line 2473 "dhcp6_parser.yy" - { + case 709: +#line 2483 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3785 "dhcp6_parser.cc" +#line 3736 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 706: // server_ip: "server-ip" $@117 ":" "constant string" -#line 2476 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 710: +#line 2486 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 3795 "dhcp6_parser.cc" +#line 3746 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 707: // server_port: "server-port" ":" "integer" -#line 2482 "dhcp6_parser.yy" - { + case 711: +#line 2492 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 3805 "dhcp6_parser.cc" +#line 3756 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 708: // $@118: %empty -#line 2488 "dhcp6_parser.yy" - { + case 712: +#line 2498 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3814 "dhcp6_parser.cc" +#line 3765 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 709: // sender_ip: "sender-ip" $@118 ":" "constant string" -#line 2491 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 713: +#line 2501 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 3824 "dhcp6_parser.cc" +#line 3775 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 710: // sender_port: "sender-port" ":" "integer" -#line 2497 "dhcp6_parser.yy" - { + case 714: +#line 2507 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 3834 "dhcp6_parser.cc" +#line 3785 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 711: // max_queue_size: "max-queue-size" ":" "integer" -#line 2503 "dhcp6_parser.yy" - { + case 715: +#line 2513 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 3844 "dhcp6_parser.cc" +#line 3795 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 712: // $@119: %empty -#line 2509 "dhcp6_parser.yy" - { + case 716: +#line 2519 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 3853 "dhcp6_parser.cc" +#line 3804 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 713: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value -#line 2512 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); + case 717: +#line 2522 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3862 "dhcp6_parser.cc" +#line 3813 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 714: // ncr_protocol_value: "UDP" -#line 2518 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 3868 "dhcp6_parser.cc" + case 718: +#line 2528 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } +#line 3819 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 715: // ncr_protocol_value: "TCP" -#line 2519 "dhcp6_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 3874 "dhcp6_parser.cc" + case 719: +#line 2529 "dhcp6_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } +#line 3825 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 716: // $@120: %empty -#line 2522 "dhcp6_parser.yy" - { + case 720: +#line 2532 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 3883 "dhcp6_parser.cc" +#line 3834 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 717: // ncr_format: "ncr-format" $@120 ":" "JSON" -#line 2525 "dhcp6_parser.yy" - { + case 721: +#line 2535 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 3893 "dhcp6_parser.cc" +#line 3844 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 718: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2532 "dhcp6_parser.yy" - { + case 722: +#line 2542 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 3903 "dhcp6_parser.cc" +#line 3854 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 719: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2539 "dhcp6_parser.yy" - { + case 723: +#line 2549 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 3913 "dhcp6_parser.cc" +#line 3864 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 720: // $@121: %empty -#line 2546 "dhcp6_parser.yy" - { + case 724: +#line 2556 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3922 "dhcp6_parser.cc" +#line 3873 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 721: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value -#line 2549 "dhcp6_parser.yy" - { - ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); + case 725: +#line 2559 "dhcp6_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3931 "dhcp6_parser.cc" +#line 3882 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 722: // $@122: %empty -#line 2555 "dhcp6_parser.yy" - { + case 726: +#line 2565 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3940 "dhcp6_parser.cc" +#line 3891 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 723: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string" -#line 2558 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 727: +#line 2568 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 3950 "dhcp6_parser.cc" +#line 3901 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 724: // $@123: %empty -#line 2565 "dhcp6_parser.yy" - { + case 728: +#line 2575 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3959 "dhcp6_parser.cc" +#line 3910 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 725: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string" -#line 2568 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 729: +#line 2578 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 3969 "dhcp6_parser.cc" +#line 3920 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 726: // $@124: %empty -#line 2575 "dhcp6_parser.yy" - { + case 730: +#line 2585 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3978 "dhcp6_parser.cc" +#line 3929 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 727: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string" -#line 2578 "dhcp6_parser.yy" - { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 731: +#line 2588 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 3988 "dhcp6_parser.cc" +#line 3939 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 728: // $@125: %empty -#line 2587 "dhcp6_parser.yy" - { + case 732: +#line 2597 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-control", i); ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4000 "dhcp6_parser.cc" +#line 3951 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 729: // config_control: "config-control" $@125 ":" "{" config_control_params "}" -#line 2593 "dhcp6_parser.yy" - { + case 733: +#line 2603 "dhcp6_parser.yy" // lalr1.cc:859 + { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4010 "dhcp6_parser.cc" +#line 3961 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 730: // $@126: %empty -#line 2599 "dhcp6_parser.yy" - { + case 734: +#line 2609 "dhcp6_parser.yy" // lalr1.cc:859 + { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4020 "dhcp6_parser.cc" +#line 3971 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 731: // sub_config_control: "{" $@126 config_control_params "}" -#line 2603 "dhcp6_parser.yy" - { + case 735: +#line 2613 "dhcp6_parser.yy" // lalr1.cc:859 + { // No config_control params are required // parsing completed } -#line 4029 "dhcp6_parser.cc" +#line 3980 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 736: // $@127: %empty -#line 2618 "dhcp6_parser.yy" - { + case 740: +#line 2628 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-databases", l); ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4041 "dhcp6_parser.cc" +#line 3992 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 737: // config_databases: "config-databases" $@127 ":" "[" database_list "]" -#line 2624 "dhcp6_parser.yy" - { + case 741: +#line 2634 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 4050 "dhcp6_parser.cc" +#line 4001 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 738: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2629 "dhcp6_parser.yy" - { + case 742: +#line 2639 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 4060 "dhcp6_parser.cc" +#line 4011 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 739: // $@128: %empty -#line 2637 "dhcp6_parser.yy" - { + case 743: +#line 2647 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4072 "dhcp6_parser.cc" +#line 4023 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 740: // loggers: "loggers" $@128 ":" "[" loggers_entries "]" -#line 2643 "dhcp6_parser.yy" - { + case 744: +#line 2653 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 4081 "dhcp6_parser.cc" +#line 4032 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 743: // $@129: %empty -#line 2655 "dhcp6_parser.yy" - { + case 747: +#line 2665 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4091 "dhcp6_parser.cc" +#line 4042 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 744: // logger_entry: "{" $@129 logger_params "}" -#line 2659 "dhcp6_parser.yy" - { + case 748: +#line 2669 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); } -#line 4099 "dhcp6_parser.cc" +#line 4050 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 754: // debuglevel: "debuglevel" ":" "integer" -#line 2676 "dhcp6_parser.yy" - { + case 758: +#line 2686 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); - ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 4109 "dhcp6_parser.cc" +#line 4060 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 755: // $@130: %empty -#line 2682 "dhcp6_parser.yy" - { + case 759: +#line 2692 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4118 "dhcp6_parser.cc" +#line 4069 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 756: // severity: "severity" $@130 ":" "constant string" -#line 2685 "dhcp6_parser.yy" - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 760: +#line 2695 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4128 "dhcp6_parser.cc" +#line 4079 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 757: // $@131: %empty -#line 2691 "dhcp6_parser.yy" - { + case 761: +#line 2701 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4140 "dhcp6_parser.cc" +#line 4091 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 758: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]" -#line 2697 "dhcp6_parser.yy" - { + case 762: +#line 2707 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); ctx.leave(); } -#line 4149 "dhcp6_parser.cc" +#line 4100 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 761: // $@132: %empty -#line 2706 "dhcp6_parser.yy" - { + case 765: +#line 2716 "dhcp6_parser.yy" // lalr1.cc:859 + { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4159 "dhcp6_parser.cc" +#line 4110 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 762: // output_entry: "{" $@132 output_params_list "}" -#line 2710 "dhcp6_parser.yy" - { + case 766: +#line 2720 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.stack_.pop_back(); } -#line 4167 "dhcp6_parser.cc" +#line 4118 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 770: // $@133: %empty -#line 2725 "dhcp6_parser.yy" - { + case 774: +#line 2735 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4176 "dhcp6_parser.cc" +#line 4127 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 771: // output: "output" $@133 ":" "constant string" -#line 2728 "dhcp6_parser.yy" - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 775: +#line 2738 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4186 "dhcp6_parser.cc" +#line 4137 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 772: // flush: "flush" ":" "boolean" -#line 2734 "dhcp6_parser.yy" - { + case 776: +#line 2744 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); - ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4196 "dhcp6_parser.cc" +#line 4147 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 773: // maxsize: "maxsize" ":" "integer" -#line 2740 "dhcp6_parser.yy" - { + case 777: +#line 2750 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); - ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4206 "dhcp6_parser.cc" +#line 4157 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 774: // maxver: "maxver" ":" "integer" -#line 2746 "dhcp6_parser.yy" - { + case 778: +#line 2756 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); - ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4216 "dhcp6_parser.cc" +#line 4167 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 775: // $@134: %empty -#line 2752 "dhcp6_parser.yy" - { + case 779: +#line 2762 "dhcp6_parser.yy" // lalr1.cc:859 + { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4225 "dhcp6_parser.cc" +#line 4176 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 776: // pattern: "pattern" $@134 ":" "constant string" -#line 2755 "dhcp6_parser.yy" - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + case 780: +#line 2765 "dhcp6_parser.yy" // lalr1.cc:859 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4235 "dhcp6_parser.cc" +#line 4186 "dhcp6_parser.cc" // lalr1.cc:859 break; -#line 4239 "dhcp6_parser.cc" - +#line 4190 "dhcp6_parser.cc" // lalr1.cc:859 default: break; } } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); YYERROR; } -#endif // YY_EXCEPTIONS YY_SYMBOL_PRINT ("-> $$ =", yylhs); yypop_ (yylen); yylen = 0; + YY_STACK_PRINT (); // Shift the result of the reduction. - yypush_ (YY_NULLPTR, YY_MOVE (yylhs)); + yypush_ (YY_NULLPTR, yylhs); } goto yynewstate; - /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ @@ -4267,9 +4214,7 @@ namespace isc { namespace dhcp { if (!yyerrstatus_) { ++yynerrs_; - context yyctx (*this, yyla); - std::string msg = yysyntax_error_ (yyctx); - error (yyla.location, YY_MOVE (msg)); + error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla)); } @@ -4280,7 +4225,7 @@ namespace isc { namespace dhcp { error, discard it. */ // Return failure if at end of input. - if (yyla.kind () == symbol_kind::S_YYEOF) + if (yyla.type_get () == yyeof_) YYABORT; else if (!yyla.empty ()) { @@ -4297,81 +4242,69 @@ namespace isc { namespace dhcp { | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and - the label yyerrorlab therefore never appears in user code. */ - if (false) - YYERROR; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (false) + goto yyerrorlab; + yyerror_range[1].location = yystack_[yylen - 1].location; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); yylen = 0; - YY_STACK_PRINT (); goto yyerrlab1; - /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus_ = 3; // Each real token shifted decrements this. - // Pop stack until we find a state that shifts the error token. - for (;;) - { - yyn = yypact_[+yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += symbol_kind::S_YYerror; - if (0 <= yyn && yyn <= yylast_ - && yycheck_[yyn] == symbol_kind::S_YYerror) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - // Pop the current state because it cannot handle the error token. - if (yystack_.size () == 1) - YYABORT; - - yyerror_range[1].location = yystack_[0].location; - yy_destroy_ ("Error: popping", yystack_[0]); - yypop_ (); - YY_STACK_PRINT (); - } { stack_symbol_type error_token; + for (;;) + { + yyn = yypact_[yystack_[0].state]; + if (!yy_pact_value_is_default_ (yyn)) + { + yyn += yyterror_; + if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) + { + yyn = yytable_[yyn]; + if (0 < yyn) + break; + } + } + + // Pop the current state because it cannot handle the error token. + if (yystack_.size () == 1) + YYABORT; + + yyerror_range[1].location = yystack_[0].location; + yy_destroy_ ("Error: popping", yystack_[0]); + yypop_ (); + YY_STACK_PRINT (); + } yyerror_range[2].location = yyla.location; YYLLOC_DEFAULT (error_token.location, yyerror_range, 2); // Shift the error token. - error_token.state = state_type (yyn); - yypush_ ("Shifting", YY_MOVE (error_token)); + error_token.state = yyn; + yypush_ ("Shifting", error_token); } goto yynewstate; - - /*-------------------------------------. - | yyacceptlab -- YYACCEPT comes here. | - `-------------------------------------*/ + // Accept. yyacceptlab: yyresult = 0; goto yyreturn; - - /*-----------------------------------. - | yyabortlab -- YYABORT comes here. | - `-----------------------------------*/ + // Abort. yyabortlab: yyresult = 1; goto yyreturn; - - /*-----------------------------------------------------. - | yyreturn -- parsing is finished, return the result. | - `-----------------------------------------------------*/ yyreturn: if (!yyla.empty ()) yy_destroy_ ("Cleanup: discarding lookahead", yyla); @@ -4379,7 +4312,6 @@ namespace isc { namespace dhcp { /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ yypop_ (yylen); - YY_STACK_PRINT (); while (1 < yystack_.size ()) { yy_destroy_ ("Cleanup: popping", yystack_[0]); @@ -4388,12 +4320,12 @@ namespace isc { namespace dhcp { return yyresult; } -#if YY_EXCEPTIONS catch (...) { - YYCDEBUG << "Exception caught: cleaning lookahead and stack\n"; + YYCDEBUG << "Exception caught: cleaning lookahead and stack" + << std::endl; // Do not try to display the values of the reclaimed symbols, - // as their printers might throw an exception. + // as their printer might throw an exception. if (!yyla.empty ()) yy_destroy_ (YY_NULLPTR, yyla); @@ -4404,109 +4336,26 @@ namespace isc { namespace dhcp { } throw; } -#endif // YY_EXCEPTIONS } void Dhcp6Parser::error (const syntax_error& yyexc) { - error (yyexc.location, yyexc.what ()); - } - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - std::string - Dhcp6Parser::yytnamerr_ (const char *yystr) - { - if (*yystr == '"') - { - std::string yyr; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - yyr += *yyp; - break; - - case '"': - return yyr; - } - do_not_strip_quotes: ; - } - - return yystr; + error (yyexc.location, yyexc.what()); } + // Generate an error message. std::string - Dhcp6Parser::symbol_name (symbol_kind_type yysymbol) - { - return yytnamerr_ (yytname_[yysymbol]); - } - - - - // Dhcp6Parser::context. - Dhcp6Parser::context::context (const Dhcp6Parser& yyparser, const symbol_type& yyla) - : yyparser_ (yyparser) - , yyla_ (yyla) - {} - - int - Dhcp6Parser::context::expected_tokens (symbol_kind_type yyarg[], int yyargn) const + Dhcp6Parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const { - // Actual number of expected tokens - int yycount = 0; - - int yyn = yypact_[+yyparser_.yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - // Stay within bounds of both yycheck and yytname. - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror - && !yy_table_value_is_error_ (yytable_[yyx + yyn])) - { - if (!yyarg) - ++yycount; - else if (yycount == yyargn) - return 0; - else - yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx); - } - } - - if (yyarg && yycount == 0 && 0 < yyargn) - yyarg[0] = symbol_kind::S_YYEMPTY; - return yycount; - } - - + // Number of reported tokens (one for the "unexpected", one per + // "expected"). + size_t yycount = 0; + // Its maximum. + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + // Arguments of yyformat. + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int - Dhcp6Parser::yy_syntax_error_arguments_ (const context& yyctx, - symbol_kind_type yyarg[], int yyargn) const - { /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action @@ -4525,32 +4374,41 @@ namespace isc { namespace dhcp { - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. + scanner and before detecting a syntax error. Thus, state + merging (from LALR or IELR) and default reductions corrupt the + expected token list. However, the list is correct for + canonical LR with one exception: it will still contain any + token that will not be accepted due to an error action in a + later state. */ - - if (!yyctx.lookahead ().empty ()) + if (!yyla.empty ()) { - if (yyarg) - yyarg[0] = yyctx.token (); - int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1); - return yyn + 1; + int yytoken = yyla.type_get (); + yyarg[yycount++] = yytname_[yytoken]; + int yyn = yypact_[yystate]; + if (!yy_pact_value_is_default_ (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + // Stay within bounds of both yycheck and yytname. + int yychecklim = yylast_ - yyn + 1; + int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; + for (int yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ + && !yy_table_value_is_error_ (yytable_[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + break; + } + else + yyarg[yycount++] = yytname_[yyx]; + } + } } - return 0; - } - - // Generate an error message. - std::string - Dhcp6Parser::yysyntax_error_ (const context& yyctx) const - { - // Its maximum. - enum { YYARGS_MAX = 5 }; - // Arguments of yyformat. - symbol_kind_type yyarg[YYARGS_MAX]; - int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX); char const* yyformat = YY_NULLPTR; switch (yycount) @@ -4559,23 +4417,22 @@ namespace isc { namespace dhcp { case N: \ yyformat = S; \ break - default: // Avoid compiler warnings. - YYCASE_ (0, YY_("syntax error")); - YYCASE_ (1, YY_("syntax error, unexpected %s")); - YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } std::string yyres; // Argument number. - std::ptrdiff_t yyi = 0; + size_t yyi = 0; for (char const* yyp = yyformat; *yyp; ++yyp) if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) { - yyres += symbol_name (yyarg[yyi++]); + yyres += yytnamerr_ (yyarg[yyi++]); ++yyp; } else @@ -4584,841 +4441,847 @@ namespace isc { namespace dhcp { } - const short Dhcp6Parser::yypact_ninf_ = -944; + const short int Dhcp6Parser::yypact_ninf_ = -949; const signed char Dhcp6Parser::yytable_ninf_ = -1; - const short + const short int Dhcp6Parser::yypact_[] = { - 186, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, 37, 33, 44, 62, 64, - 87, 95, 99, 103, 107, 116, 118, 147, 148, 205, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, 33, -4, - 203, 115, 39, 499, 10, 235, 222, 151, 117, 67, - -74, 605, 71, -944, 223, 225, 234, 233, 247, -944, - 299, -944, -944, -944, -944, -944, -944, 263, 304, 312, - 322, 330, 341, 363, 384, 390, 391, 406, 407, 409, - 410, -944, 412, 413, 420, 424, 426, -944, -944, -944, - 428, 438, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, 444, -944, - -944, -944, -944, -944, -944, 448, -944, 449, -944, 51, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, 452, -944, - 54, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 458, 460, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - 75, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, 101, -944, -944, -944, -944, -944, 463, -944, - 464, 465, -944, -944, -944, -944, -944, -944, 109, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, 377, 294, -944, -944, - -944, -944, -944, -944, -944, -944, 379, -944, -944, 468, - -944, -944, -944, 469, -944, -944, 470, 473, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 480, 484, -944, -944, -944, -944, 481, 488, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 150, -944, -944, -944, 489, -944, -944, 490, -944, - 491, 492, -944, -944, 494, 496, -944, -944, -944, -944, - -944, -944, -944, 206, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 497, 207, -944, -944, -944, -944, 33, 33, -944, - 307, 504, -944, 506, 508, 509, 511, 516, 519, 326, - 328, 329, 332, 333, 334, 336, 337, 355, 340, 357, - 358, 360, 369, 525, 370, 372, 371, 373, 374, 534, - 535, 569, 375, 376, 574, 575, 577, 579, 580, 581, - 582, 583, 592, 593, 594, 595, 596, 597, 599, 600, - 415, 602, 604, 608, 609, 611, 612, 408, 613, -944, - 115, -944, 615, 419, 39, -944, 618, 619, 620, 621, - 622, 429, 430, 623, 625, 626, 499, -944, 628, 10, - -944, 629, 435, 631, 437, 442, 235, -944, 633, 639, - 640, 641, 642, 643, 644, -944, 222, -944, 645, 646, - 453, 647, 649, 655, 459, -944, 117, 657, 462, 466, - -944, 67, 660, 661, 14, -944, 467, 662, 665, 471, - 669, 475, 476, 672, 674, 478, 479, 692, 703, 711, - 712, 605, -944, 713, 520, 71, -944, -944, -944, 714, - 485, 522, 715, 716, 717, 718, 723, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 523, -944, -944, -944, -944, -944, 55, 533, 536, - -944, -944, 730, 731, 732, 733, 540, 382, 734, 736, - 737, 738, 739, 742, 744, 745, 746, 747, -944, 748, - 763, 764, 765, 546, 553, -944, 768, -944, 769, -944, - -944, 770, 771, 554, 584, 585, -944, -944, 769, 586, - 772, -944, 587, -944, 588, -944, 589, -944, -944, -944, - 769, 769, 769, 590, 591, 598, 601, -944, 603, 606, - -944, 607, 610, 614, -944, -944, 616, -944, -944, -944, - 617, 733, -944, -944, 624, 627, -944, 630, -944, -944, - -19, 635, -944, -944, 55, 632, 634, 636, -944, 775, - -944, -944, 33, 115, -944, 71, 39, 242, 242, 774, - -944, -944, -944, -944, -944, -944, -944, -944, -944, 783, - 784, 785, -944, -944, -944, -944, -944, -944, -944, -944, - 786, -76, 33, 290, 688, 788, 790, 791, 73, 228, - -46, 42, 202, 605, -944, -944, 793, -944, -944, 799, - 800, -944, -944, -944, -944, -944, -52, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, 774, -944, 227, 239, - 245, -944, -944, -944, -944, 807, 809, 812, 813, 814, - -944, 815, 816, -944, -944, -944, 817, 819, 820, 822, - -944, 291, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, 292, -944, 821, 826, -944, -944, 825, - 830, -944, -944, 831, 833, -944, -944, 832, 836, -944, - -944, 834, 838, -944, -944, -944, 57, -944, -944, -944, - 837, -944, -944, -944, 187, -944, -944, -944, -944, 293, - -944, -944, -944, 254, -944, -944, 839, 841, -944, -944, - 840, 844, -944, 845, 846, 847, 848, 849, 850, 302, - -944, -944, -944, -944, -944, -944, -944, -944, -944, 851, - 852, 853, -944, -944, -944, -944, 324, -944, -944, -944, - -944, -944, -944, 854, 855, 856, -944, 325, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, 339, - -944, -944, -944, 857, -944, 858, -944, -944, -944, 350, - -944, -944, -944, -944, -944, 351, -944, 258, -944, 650, - -944, 859, 860, -944, -944, 861, 863, -944, -944, -944, - 862, -944, 865, -944, -944, -944, 864, 868, 869, 870, - 670, 663, 676, 675, 678, 874, 680, 681, 877, 878, - 879, 685, 686, 687, 690, 242, -944, -944, 242, -944, - 774, 499, -944, 783, 117, -944, 784, 67, -944, 785, - 637, -944, 786, -76, -944, -944, 290, -944, 882, 688, - -944, 259, 788, -944, 222, -944, 790, -74, -944, 791, - 693, 695, 696, 699, 706, 708, 73, -944, 883, 887, - 709, 724, 725, 228, -944, 735, 726, 740, -46, -944, - 913, 941, 42, -944, 750, 960, 777, 966, 202, -944, - -944, 214, 793, -944, -944, 967, 974, 10, -944, 799, - 235, -944, 800, 976, -944, -944, 414, 794, 805, 808, - -944, -944, -944, -944, -944, 818, -944, -944, 823, 827, - 828, -944, -944, -944, -944, -944, 352, -944, 353, -944, - 999, -944, 1004, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, 354, -944, -944, -944, - -944, -944, -944, -944, -944, 829, -944, -944, 980, -944, - -944, -944, -944, -944, 1006, 1014, -944, -944, -944, -944, - -944, 1010, -944, 381, -944, -944, -944, -944, -944, -944, - -944, -944, 289, 835, -944, -944, -944, -944, -944, -944, - -944, -944, 843, 866, -944, -944, 867, -944, 33, -944, - -944, 1016, -944, -944, -944, -944, -944, 383, -944, -944, - -944, -944, -944, -944, 871, 393, -944, 399, -944, 872, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, 637, -944, -944, 1019, - 873, -944, 259, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, 1020, 880, 1025, 214, -944, -944, - -944, -944, -944, -944, 875, -944, -944, 1027, -944, 884, - -944, -944, 1023, -944, -944, 338, -944, -32, 1023, -944, - -944, 1030, 1031, 1032, -944, 401, -944, -944, -944, -944, - -944, -944, -944, 1033, 876, 881, 885, 1034, -32, -944, - 888, -944, -944, -944, 889, -944, -944, -944 + 190, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, 39, 33, 62, 64, 78, + 89, 99, 103, 107, 131, 138, 217, 231, 244, 254, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, 33, -132, + 119, 115, 49, 505, 258, 235, 221, 127, 120, 283, + -75, 537, 144, -949, 311, 226, 239, 242, 294, -949, + 323, -949, -949, -949, -949, -949, -949, 328, 338, 339, + 358, 386, 404, 405, 408, 409, 411, 414, 417, 424, + 426, -949, 428, 433, 436, 437, 439, -949, -949, -949, + 440, 442, 448, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, 452, + -949, -949, -949, -949, -949, -949, 457, -949, 462, -949, + 60, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + 464, -949, 94, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, 467, 468, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, 101, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, 109, -949, -949, -949, -949, + -949, 469, -949, 472, 473, -949, -949, -949, -949, -949, + -949, 113, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, 357, + 343, -949, -949, -949, -949, -949, -949, -949, -949, 390, + -949, -949, 476, -949, -949, -949, 479, -949, -949, 477, + 481, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, 482, 484, -949, -949, -949, -949, + 485, 489, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, 128, -949, -949, -949, 491, -949, + -949, 492, -949, 493, 494, -949, -949, 495, 496, -949, + -949, -949, -949, -949, -949, -949, 129, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, 498, 186, -949, -949, -949, -949, + 33, 33, -949, 306, 500, -949, 508, 510, 512, 513, + 515, 520, 309, 327, 329, 331, 333, 334, 335, 336, + 337, 341, 344, 346, 340, 362, 534, 363, 364, 373, + 374, 376, 539, 561, 575, 378, 379, 380, 579, 580, + 581, 582, 584, 586, 587, 588, 589, 590, 599, 600, + 601, 602, 604, 605, 412, 607, 609, 611, 612, 615, + 616, 419, 618, -949, 115, -949, 619, 422, 49, -949, + 625, 626, 627, 628, 629, 434, 435, 631, 632, 634, + 505, -949, 635, 258, -949, 636, 441, 638, 446, 449, + 235, -949, 644, 646, 647, 648, 649, 650, 651, -949, + 221, -949, 652, 653, 458, 660, 661, 662, 466, -949, + 120, 665, 470, 471, -949, 283, 666, 667, 67, -949, + 474, 670, 671, 480, 673, 483, 486, 677, 680, 487, + 501, 681, 683, 684, 701, 537, -949, 702, 507, 144, + -949, -949, -949, 704, 705, 514, 707, 726, 727, 728, + 742, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, 551, -949, -949, -949, -949, + -949, -110, 552, 553, -949, -949, -949, 748, 749, 750, + 751, 557, 326, 752, 754, 755, 756, 757, 758, 760, + 763, 764, 767, -949, 768, 769, 770, 771, 563, 583, + -949, 774, -949, 775, -949, -949, 776, 778, 585, 591, + 592, -949, -949, 775, 593, 779, -949, 594, -949, 595, + -949, 596, -949, -949, -949, 775, 775, 775, 598, 603, + 606, 608, -949, 610, 613, -949, 614, 617, 620, -949, + -949, 621, -949, -949, -949, 622, 751, -949, -949, 623, + 624, -949, 630, -949, -949, -113, 541, -949, -949, -110, + 633, 637, 639, -949, 782, -949, -949, 33, 115, -949, + 144, 49, 243, 243, 791, -949, -949, -949, -949, -949, + -949, -949, -949, -949, 792, 793, 794, -949, -949, -949, + -949, -949, -949, -949, -949, 796, -79, 33, 149, 682, + 797, 799, 801, 23, 167, 4, 9, -7, 537, -949, + -949, 803, -949, -949, 804, 807, -949, -949, -949, -949, + -949, -70, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, 791, -949, 199, 201, 219, -949, -949, -949, -949, + 811, 813, 814, 820, 821, -949, 822, 823, -949, -949, + -949, 824, 826, 827, 829, -949, 222, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, 223, -949, + 828, 832, -949, -949, 831, 836, -949, -949, 834, 838, + -949, -949, 837, 839, -949, -949, 840, 841, -949, -949, + -949, 75, -949, -949, -949, 842, -949, -949, -949, 122, + -949, -949, -949, -949, 233, -949, -949, -949, 236, -949, + -949, 845, 844, -949, -949, 846, 850, -949, 851, 852, + 853, 854, 855, 856, 246, -949, -949, -949, -949, -949, + -949, -949, -949, -949, 857, 858, 859, -949, -949, -949, + -949, 284, -949, -949, -949, -949, -949, -949, 860, 861, + 862, -949, 291, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, 292, -949, -949, -949, 863, -949, + 864, -949, -949, -949, 293, -949, -949, -949, -949, -949, + 305, -949, 256, -949, 655, -949, 865, 866, -949, -949, + 867, 869, -949, -949, -949, 868, -949, 871, -949, -949, + -949, 870, 874, 875, 876, 645, 668, 685, 679, 686, + 878, 687, 688, 879, 880, 885, 690, 691, 692, 693, + 243, -949, -949, 243, -949, 791, 505, -949, 792, 120, + -949, 793, 283, -949, 794, 676, -949, 796, -79, -949, + -949, 149, -949, 888, 682, -949, 261, 797, -949, 221, + -949, 799, -75, -949, 801, 696, 697, 699, 700, 703, + 710, 23, -949, 908, 909, 722, 729, 730, 167, -949, + 739, 744, 781, 4, -949, 924, 946, 9, -949, 773, + 952, 785, 965, -7, -949, -949, 237, 803, -949, -949, + 972, 979, 258, -949, 804, 235, -949, 807, 985, -949, + -949, 191, 798, 812, 817, -949, -949, -949, -949, -949, + 830, -949, -949, 833, 835, 843, -949, -949, -949, -949, + -949, 342, -949, 360, -949, 1004, -949, 1012, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, 361, -949, -949, -949, -949, -949, -949, -949, + -949, 847, -949, -949, 1017, -949, -949, -949, -949, -949, + 1014, 1022, -949, -949, -949, -949, -949, 1018, -949, 388, + -949, -949, -949, -949, -949, -949, -949, -949, 220, 848, + -949, -949, -949, -949, -949, -949, -949, -949, 872, 873, + -949, -949, 882, -949, 33, -949, -949, 1024, -949, -949, + -949, -949, -949, 394, -949, -949, -949, -949, -949, -949, + 883, 396, -949, 402, -949, 886, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, 676, -949, -949, 1026, 849, -949, 261, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + 1027, 877, 1031, 237, -949, -949, -949, -949, -949, -949, + 887, -949, -949, 1032, -949, 889, -949, -949, 1033, -949, + -949, 312, -949, 211, 1033, -949, -949, 1034, 1035, 1037, + -949, 403, -949, -949, -949, -949, -949, -949, -949, 1039, + 890, 884, 891, 1040, 211, -949, 894, -949, -949, -949, + 895, -949, -949, -949 }; - const short + const unsigned short int Dhcp6Parser::yydefact_[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 45, 38, 34, 33, 30, 31, 32, 37, 3, - 35, 36, 58, 5, 62, 7, 166, 9, 328, 11, - 512, 13, 537, 15, 567, 17, 437, 19, 445, 21, - 482, 23, 293, 25, 680, 27, 730, 29, 47, 41, - 0, 0, 0, 0, 0, 0, 569, 0, 447, 484, + 35, 36, 58, 5, 62, 7, 168, 9, 330, 11, + 516, 13, 541, 15, 571, 17, 441, 19, 449, 21, + 486, 23, 295, 25, 684, 27, 734, 29, 47, 41, + 0, 0, 0, 0, 0, 0, 573, 0, 451, 488, 0, 0, 0, 49, 0, 48, 0, 0, 42, 60, - 0, 123, 728, 164, 178, 180, 182, 0, 0, 0, + 0, 124, 732, 166, 180, 182, 184, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 163, 0, 0, 0, 0, 0, 143, 150, 152, + 0, 0, 0, 322, 439, 478, 529, 531, 384, 392, + 255, 272, 263, 248, 608, 563, 287, 306, 629, 0, + 274, 653, 666, 682, 156, 158, 0, 743, 0, 123, + 0, 64, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 102, 103, 104, 105, 106, 75, 110, 111, 112, + 113, 114, 115, 116, 117, 108, 109, 118, 119, 120, + 100, 122, 78, 79, 80, 81, 97, 82, 84, 83, + 121, 88, 89, 76, 101, 77, 86, 87, 95, 96, + 98, 85, 90, 91, 92, 93, 94, 99, 107, 177, + 0, 176, 0, 170, 172, 173, 174, 175, 508, 533, + 374, 376, 378, 0, 0, 382, 380, 602, 373, 334, + 335, 336, 337, 338, 339, 340, 341, 357, 358, 359, + 360, 361, 364, 365, 366, 367, 368, 369, 370, 371, + 362, 363, 372, 0, 332, 345, 346, 347, 350, 351, + 353, 348, 349, 342, 343, 355, 356, 344, 352, 354, + 527, 526, 522, 523, 521, 0, 518, 520, 524, 525, + 556, 0, 559, 0, 0, 555, 549, 550, 548, 553, + 554, 0, 543, 545, 546, 551, 552, 547, 600, 588, + 590, 592, 594, 596, 598, 587, 584, 585, 586, 0, + 574, 575, 579, 580, 577, 581, 582, 583, 578, 0, + 468, 228, 0, 472, 470, 475, 0, 464, 465, 0, + 452, 453, 455, 467, 456, 457, 458, 474, 459, 460, + 461, 462, 463, 502, 0, 0, 500, 501, 504, 505, + 0, 489, 490, 492, 493, 494, 495, 496, 497, 498, + 499, 302, 304, 299, 0, 297, 300, 301, 0, 707, + 709, 0, 712, 0, 0, 716, 720, 0, 0, 724, + 726, 728, 730, 705, 703, 704, 0, 686, 688, 700, + 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, + 699, 701, 702, 740, 0, 0, 736, 738, 739, 46, + 0, 0, 39, 0, 0, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 0, 0, 0, 0, 0, 142, 149, 151, - 0, 0, 320, 435, 474, 525, 527, 381, 389, 253, - 270, 261, 246, 604, 559, 285, 304, 625, 0, 272, - 649, 662, 678, 154, 156, 0, 739, 0, 122, 0, - 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 102, 103, 104, 105, 106, 75, 110, 111, 112, 113, - 114, 115, 116, 108, 109, 117, 118, 119, 100, 121, - 78, 79, 80, 81, 97, 82, 84, 83, 120, 88, - 89, 76, 101, 77, 86, 87, 95, 96, 98, 85, - 90, 91, 92, 93, 94, 99, 107, 175, 0, 174, - 0, 168, 170, 171, 172, 173, 504, 529, 371, 373, - 375, 0, 0, 379, 377, 598, 370, 332, 333, 334, - 335, 336, 337, 338, 339, 355, 356, 357, 358, 359, - 362, 363, 364, 365, 366, 367, 368, 360, 361, 369, - 0, 330, 343, 344, 345, 348, 349, 351, 346, 347, - 340, 341, 353, 354, 342, 350, 352, 523, 522, 518, - 519, 517, 0, 514, 516, 520, 521, 552, 0, 555, - 0, 0, 551, 545, 546, 544, 549, 550, 0, 539, - 541, 542, 547, 548, 543, 596, 584, 586, 588, 590, - 592, 594, 583, 580, 581, 582, 0, 570, 571, 575, - 576, 573, 577, 578, 579, 574, 0, 464, 226, 0, - 468, 466, 471, 0, 460, 461, 0, 448, 449, 451, - 463, 452, 453, 454, 470, 455, 456, 457, 458, 459, - 498, 0, 0, 496, 497, 500, 501, 0, 485, 486, - 488, 489, 490, 491, 492, 493, 494, 495, 300, 302, - 297, 0, 295, 298, 299, 0, 703, 705, 0, 708, - 0, 0, 712, 716, 0, 0, 720, 722, 724, 726, - 701, 699, 700, 0, 682, 684, 696, 685, 686, 687, - 688, 689, 690, 691, 692, 693, 694, 695, 697, 698, - 736, 0, 0, 732, 734, 735, 46, 0, 0, 39, - 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 57, 0, 63, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 517, 0, 0, 0, 0, 0, + 0, 542, 0, 0, 0, 0, 0, 0, 0, 572, + 0, 442, 0, 0, 0, 0, 0, 0, 0, 450, + 0, 0, 0, 0, 487, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, - 0, 63, 0, 0, 0, 167, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, - 513, 0, 0, 0, 0, 0, 0, 538, 0, 0, - 0, 0, 0, 0, 0, 568, 0, 438, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, - 483, 0, 0, 0, 0, 294, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 685, 0, 0, 0, + 735, 50, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 0, 161, 162, 140, 141, + 142, 0, 0, 0, 154, 155, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 681, 0, 0, 0, 731, 50, 43, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 0, 159, 160, 139, 140, 141, 0, 0, 0, - 153, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 648, 0, - 0, 0, 0, 0, 0, 163, 0, 65, 0, 177, - 169, 0, 0, 0, 0, 0, 387, 388, 0, 0, - 0, 331, 0, 515, 0, 554, 0, 557, 558, 540, - 0, 0, 0, 0, 0, 0, 0, 572, 0, 0, - 462, 0, 0, 0, 473, 450, 0, 502, 503, 487, - 0, 0, 296, 702, 0, 0, 707, 0, 710, 711, - 0, 0, 718, 719, 0, 0, 0, 0, 683, 0, - 738, 733, 0, 0, 124, 0, 0, 0, 0, 184, - 162, 144, 145, 146, 147, 148, 143, 150, 152, 322, - 439, 476, 40, 526, 528, 383, 384, 385, 386, 382, - 391, 0, 47, 0, 0, 0, 561, 287, 0, 0, - 0, 0, 0, 0, 155, 157, 0, 51, 176, 506, - 531, 372, 374, 376, 380, 378, 0, 524, 553, 556, - 597, 585, 587, 589, 591, 593, 595, 465, 227, 469, - 467, 472, 499, 301, 303, 704, 706, 709, 714, 715, - 713, 717, 721, 723, 725, 727, 184, 44, 0, 0, - 0, 213, 219, 221, 223, 0, 0, 0, 0, 0, - 237, 0, 0, 240, 242, 244, 0, 0, 0, 0, - 212, 0, 190, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 204, 211, 205, 206, 207, 202, 203, - 208, 209, 210, 0, 188, 0, 185, 186, 326, 0, - 323, 324, 443, 0, 440, 441, 480, 0, 477, 478, - 395, 0, 392, 393, 259, 260, 0, 255, 257, 258, - 0, 268, 269, 265, 0, 263, 266, 267, 251, 0, - 248, 250, 608, 0, 606, 565, 0, 562, 563, 291, - 0, 288, 289, 0, 0, 0, 0, 0, 0, 0, - 306, 308, 309, 310, 311, 312, 313, 638, 644, 0, - 0, 0, 637, 634, 635, 636, 0, 627, 629, 632, - 630, 631, 633, 0, 0, 0, 281, 0, 274, 276, - 277, 278, 279, 280, 658, 660, 657, 655, 656, 0, - 651, 653, 654, 0, 673, 0, 676, 669, 670, 0, - 664, 666, 667, 668, 671, 0, 743, 0, 741, 53, - 510, 0, 507, 508, 535, 0, 532, 533, 602, 601, - 0, 600, 0, 61, 729, 165, 0, 0, 0, 0, + 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, + 165, 0, 65, 0, 179, 171, 0, 0, 0, 0, + 0, 390, 391, 0, 0, 0, 333, 0, 519, 0, + 558, 0, 561, 562, 544, 0, 0, 0, 0, 0, + 0, 0, 576, 0, 0, 466, 0, 0, 0, 477, + 454, 0, 506, 507, 491, 0, 0, 298, 706, 0, + 0, 711, 0, 714, 715, 0, 0, 722, 723, 0, + 0, 0, 0, 687, 0, 742, 737, 0, 0, 125, + 0, 0, 0, 0, 186, 164, 145, 146, 147, 148, + 149, 144, 151, 153, 324, 443, 480, 40, 530, 532, + 386, 387, 388, 389, 385, 394, 0, 47, 0, 0, + 0, 565, 289, 0, 0, 0, 0, 0, 0, 157, + 159, 0, 51, 178, 510, 535, 375, 377, 379, 383, + 381, 0, 528, 557, 560, 601, 589, 591, 593, 595, + 597, 599, 469, 229, 473, 471, 476, 503, 303, 305, + 708, 710, 713, 718, 719, 717, 721, 725, 727, 729, + 731, 186, 44, 0, 0, 0, 215, 221, 223, 225, + 0, 0, 0, 0, 0, 239, 0, 0, 242, 244, + 246, 0, 0, 0, 0, 214, 0, 192, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 206, 213, + 207, 208, 209, 204, 205, 210, 211, 212, 0, 190, + 0, 187, 188, 328, 0, 325, 326, 447, 0, 444, + 445, 484, 0, 481, 482, 398, 0, 395, 396, 261, + 262, 0, 257, 259, 260, 0, 270, 271, 267, 0, + 265, 268, 269, 253, 0, 250, 252, 612, 0, 610, + 569, 0, 566, 567, 293, 0, 290, 291, 0, 0, + 0, 0, 0, 0, 0, 308, 310, 311, 312, 313, + 314, 315, 642, 648, 0, 0, 0, 641, 638, 639, + 640, 0, 631, 633, 636, 634, 635, 637, 0, 0, + 0, 283, 0, 276, 278, 279, 280, 281, 282, 662, + 664, 661, 659, 660, 0, 655, 657, 658, 0, 677, + 0, 680, 673, 674, 0, 668, 670, 671, 672, 675, + 0, 747, 0, 745, 53, 514, 0, 511, 512, 539, + 0, 536, 537, 606, 605, 0, 604, 0, 61, 733, + 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 179, 181, 0, 183, - 0, 0, 321, 0, 447, 436, 0, 484, 475, 0, - 0, 390, 0, 0, 254, 271, 0, 262, 0, 0, - 247, 610, 0, 605, 569, 560, 0, 0, 286, 0, - 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 626, 0, 0, 0, 0, 273, - 0, 0, 0, 650, 0, 0, 0, 0, 0, 663, - 679, 0, 0, 740, 55, 0, 54, 0, 505, 0, - 0, 530, 0, 0, 599, 737, 0, 0, 0, 0, - 225, 228, 229, 230, 231, 0, 239, 232, 0, 0, - 0, 234, 235, 236, 233, 191, 0, 187, 0, 325, - 0, 442, 0, 479, 434, 410, 411, 412, 414, 415, - 416, 403, 404, 419, 420, 421, 422, 423, 426, 427, - 428, 429, 430, 431, 432, 424, 425, 433, 399, 400, - 401, 402, 408, 409, 407, 413, 0, 397, 405, 417, - 418, 406, 394, 256, 264, 0, 249, 622, 0, 620, - 621, 617, 618, 619, 0, 611, 612, 614, 615, 616, - 607, 0, 564, 0, 290, 314, 315, 316, 317, 318, - 319, 307, 0, 0, 643, 646, 647, 628, 282, 283, - 284, 275, 0, 0, 652, 672, 0, 675, 0, 665, - 757, 0, 755, 753, 747, 751, 752, 0, 745, 749, - 750, 748, 742, 52, 0, 0, 509, 0, 534, 0, - 215, 216, 217, 218, 214, 220, 222, 224, 238, 241, - 243, 245, 189, 327, 444, 481, 0, 396, 252, 0, - 0, 609, 0, 566, 292, 640, 641, 642, 639, 645, - 659, 661, 674, 677, 0, 0, 0, 0, 744, 56, - 511, 536, 603, 398, 0, 624, 613, 0, 754, 0, - 746, 623, 0, 756, 761, 0, 759, 0, 0, 758, - 770, 0, 0, 0, 775, 0, 763, 765, 766, 767, - 768, 769, 760, 0, 0, 0, 0, 0, 0, 762, - 0, 772, 773, 774, 0, 764, 771, 776 + 0, 181, 183, 0, 185, 0, 0, 323, 0, 451, + 440, 0, 488, 479, 0, 0, 393, 0, 0, 256, + 273, 0, 264, 0, 0, 249, 614, 0, 609, 573, + 564, 0, 0, 288, 0, 0, 0, 0, 0, 0, + 0, 0, 307, 0, 0, 0, 0, 0, 0, 630, + 0, 0, 0, 0, 275, 0, 0, 0, 654, 0, + 0, 0, 0, 0, 667, 683, 0, 0, 744, 55, + 0, 54, 0, 509, 0, 0, 534, 0, 0, 603, + 741, 0, 0, 0, 0, 227, 230, 231, 232, 233, + 0, 241, 234, 0, 0, 0, 236, 237, 238, 235, + 193, 0, 189, 0, 327, 0, 446, 0, 483, 438, + 413, 414, 415, 417, 418, 419, 406, 407, 422, 423, + 424, 425, 426, 429, 430, 431, 432, 433, 434, 435, + 436, 427, 428, 437, 402, 403, 404, 405, 411, 412, + 410, 416, 0, 400, 408, 420, 421, 409, 397, 258, + 266, 0, 251, 626, 0, 624, 625, 621, 622, 623, + 0, 615, 616, 618, 619, 620, 611, 0, 568, 0, + 292, 316, 317, 318, 319, 320, 321, 309, 0, 0, + 647, 650, 651, 632, 284, 285, 286, 277, 0, 0, + 656, 676, 0, 679, 0, 669, 761, 0, 759, 757, + 751, 755, 756, 0, 749, 753, 754, 752, 746, 52, + 0, 0, 513, 0, 538, 0, 217, 218, 219, 220, + 216, 222, 224, 226, 240, 243, 245, 247, 191, 329, + 448, 485, 0, 399, 254, 0, 0, 613, 0, 570, + 294, 644, 645, 646, 643, 649, 663, 665, 678, 681, + 0, 0, 0, 0, 748, 56, 515, 540, 607, 401, + 0, 628, 617, 0, 758, 0, 750, 627, 0, 760, + 765, 0, 763, 0, 0, 762, 774, 0, 0, 0, + 779, 0, 767, 769, 770, 771, 772, 773, 764, 0, + 0, 0, 0, 0, 0, 766, 0, 776, 777, 778, + 0, 768, 775, 780 }; - const short + const short int Dhcp6Parser::yypgoto_[] = { - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -10, -944, -544, -944, - 191, -944, -944, -944, -944, 342, -944, -565, -944, -944, - -944, -71, -944, -944, -944, -944, -944, -944, 366, 572, - -944, -944, -59, -43, -42, -40, -39, -28, -27, -26, - -23, -21, -15, -9, -3, -944, -1, 17, 18, 20, - -944, 385, 25, -944, 28, -944, 30, 32, -944, 35, - -944, 38, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 378, 571, -944, -944, -944, -944, -944, -944, -944, - -944, -944, 295, -944, 86, -944, -656, 92, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -67, -944, - -694, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, 69, -944, -944, -944, -944, -944, 77, -678, -944, - -944, -944, -944, 76, -944, -944, -944, -944, -944, -944, - -944, 47, -944, -944, -944, -944, -944, -944, -944, 68, - -944, -944, -944, 66, 532, -944, -944, -944, -944, -944, - -944, -944, 63, -944, -944, -944, -944, -944, -944, -943, - -944, -944, -944, 97, -944, -944, -944, 100, 576, -944, - -944, -942, -944, -941, -944, 41, -944, 45, -944, 40, - -944, -944, -944, -935, -944, -944, -944, -944, 91, -944, - -944, -128, 989, -944, -944, -944, -944, -944, 110, -944, - -944, -944, 114, -944, 551, -944, -66, -944, -944, -944, - -944, -944, -47, -944, -944, -944, -944, -944, 13, -944, - -944, -944, 112, -944, -944, -944, 121, -944, 562, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - 56, -944, -944, -944, 65, 652, -944, -944, -55, -944, - 1, -944, -944, -944, -944, -944, 58, -944, -944, -944, - 59, 638, -944, -944, -944, -944, -944, -944, -944, -57, - -944, -944, -944, 105, -944, -944, -944, 111, -944, 648, - 367, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -934, -944, -944, -944, -944, -944, - -944, -944, 119, -944, -944, -944, -98, -944, -944, -944, - -944, -944, -944, -944, 93, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, 85, -944, -944, - -944, -944, -944, -944, -944, 80, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, 386, 559, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, -944, -944, -944, - -944, -944, -944, -944, -944, -944, -944, 427, 558, -944, - -944, -944, -944, -944, -944, 82, -944, -944, -102, -944, - -944, -944, -944, -944, -944, -122, -944, -944, -141, -944, - -944, -944, -944, -944, -944, -944 + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -10, -949, -549, -949, + 393, -949, -949, -949, -949, 345, -949, -580, -949, -949, + -949, -71, -949, -949, -949, -949, -949, -949, 372, 640, + -949, -949, -59, -43, -42, -40, -39, -28, -27, -26, + -23, -21, -15, -9, -3, -949, -1, 17, 18, 20, + -949, 384, 25, -949, 28, -949, 30, 32, 35, -949, + 38, -949, 40, -949, -949, -949, -949, -949, -949, -949, + -949, -949, 375, 576, -949, -949, -949, -949, -949, -949, + -949, -949, -949, 296, -949, 90, -949, -661, 98, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -67, + -949, -699, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, 76, -949, -949, -949, -949, -949, 81, -683, + -949, -949, -949, -949, 80, -949, -949, -949, -949, -949, + -949, -949, 50, -949, -949, -949, -949, -949, -949, -949, + 68, -949, -949, -949, 72, 538, -949, -949, -949, -949, + -949, -949, -949, 66, -949, -949, -949, -949, -949, -949, + -948, -949, -949, -949, 97, -949, -949, -949, 102, 597, + -949, -949, -947, -949, -946, -949, 44, -949, 48, -949, + 42, -949, -949, -949, -940, -949, -949, -949, -949, 92, + -949, -949, -122, 996, -949, -949, -949, -949, -949, 104, + -949, -949, -949, 105, -949, 558, -949, -66, -949, -949, + -949, -949, -949, -47, -949, -949, -949, -949, -949, 13, + -949, -949, -949, 116, -949, -949, -949, 117, -949, 570, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, 63, -949, -949, -949, 69, 641, -949, -949, -55, + -949, 1, -949, -949, -949, -949, -949, 59, -949, -949, + -949, 65, 654, -949, -949, -949, -949, -949, -949, -949, + -57, -949, -949, -949, 108, -949, -949, -949, 114, -949, + 657, 367, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -939, -949, -949, -949, -949, + -949, -949, -949, 118, -949, -949, -949, -96, -949, -949, + -949, -949, -949, -949, -949, 96, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, 91, -949, + -949, -949, -949, -949, -949, -949, 83, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, 389, 564, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, -949, -949, + -949, -949, -949, -949, -949, -949, -949, -949, 430, 562, + -949, -949, -949, -949, -949, -949, 85, -949, -949, -100, + -949, -949, -949, -949, -949, -949, -119, -949, -949, -138, + -949, -949, -949, -949, -949, -949, -949 }; - const short + const short int Dhcp6Parser::yydefgoto_[] = { -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 83, 39, 40, 69, - 693, 87, 88, 41, 68, 84, 85, 718, 919, 1025, - 1026, 780, 43, 70, 90, 411, 45, 71, 149, 150, - 151, 413, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 439, 686, 170, 440, 171, 441, 172, 173, 465, 174, - 466, 175, 176, 177, 178, 433, 179, 180, 415, 47, - 72, 210, 211, 212, 472, 213, 181, 416, 182, 417, - 183, 418, 805, 806, 807, 958, 781, 782, 783, 936, - 1174, 784, 937, 785, 938, 786, 939, 787, 788, 509, - 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 945, 799, 800, 948, 801, 949, 802, 950, 184, 454, - 839, 840, 841, 978, 185, 451, 826, 827, 828, 829, - 186, 453, 834, 835, 836, 837, 187, 452, 188, 461, - 887, 888, 889, 890, 891, 189, 457, 850, 851, 852, - 987, 63, 80, 361, 362, 363, 522, 364, 523, 190, - 458, 859, 860, 861, 862, 863, 864, 865, 866, 191, - 444, 809, 810, 811, 961, 49, 73, 250, 251, 252, - 478, 253, 479, 254, 480, 255, 484, 256, 483, 192, - 449, 699, 258, 259, 193, 450, 821, 822, 823, 970, - 1096, 1097, 194, 445, 57, 77, 813, 814, 815, 964, - 59, 78, 326, 327, 328, 329, 330, 331, 332, 508, - 333, 512, 334, 511, 335, 336, 513, 337, 195, 446, - 817, 818, 819, 967, 61, 79, 347, 348, 349, 350, - 351, 517, 352, 353, 354, 355, 261, 476, 921, 922, - 923, 1027, 51, 74, 272, 273, 274, 488, 196, 447, - 197, 448, 264, 477, 925, 926, 927, 1030, 53, 75, - 288, 289, 290, 491, 291, 292, 493, 293, 294, 198, - 456, 846, 847, 848, 984, 55, 76, 306, 307, 308, - 309, 499, 310, 500, 311, 501, 312, 502, 313, 503, - 314, 504, 315, 498, 266, 485, 930, 931, 1033, 199, - 455, 843, 844, 981, 1114, 1115, 1116, 1117, 1118, 1189, - 1119, 200, 459, 876, 877, 878, 998, 1198, 879, 880, - 999, 881, 882, 201, 202, 462, 899, 900, 901, 1010, - 902, 1011, 203, 463, 909, 910, 911, 912, 1015, 913, - 914, 1017, 204, 464, 65, 81, 383, 384, 385, 386, - 527, 387, 528, 388, 389, 530, 390, 391, 392, 533, - 750, 393, 534, 394, 395, 396, 537, 397, 538, 398, - 539, 399, 540, 205, 414, 67, 82, 402, 403, 404, - 543, 405, 206, 468, 917, 918, 1021, 1157, 1158, 1159, - 1160, 1206, 1161, 1204, 1225, 1226, 1227, 1235, 1236, 1237, - 1243, 1238, 1239, 1240, 1241, 1247 + 698, 87, 88, 41, 68, 84, 85, 723, 924, 1030, + 1031, 785, 43, 70, 90, 414, 45, 71, 150, 151, + 152, 416, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 442, 691, 171, 443, 172, 444, 173, 174, 175, 469, + 176, 470, 177, 178, 179, 180, 436, 181, 182, 418, + 47, 72, 212, 213, 214, 476, 215, 183, 419, 184, + 420, 185, 421, 810, 811, 812, 963, 786, 787, 788, + 941, 1180, 789, 942, 790, 943, 791, 944, 792, 793, + 513, 794, 795, 796, 797, 798, 799, 800, 801, 802, + 803, 950, 804, 805, 953, 806, 954, 807, 955, 186, + 458, 844, 845, 846, 983, 187, 455, 831, 832, 833, + 834, 188, 457, 839, 840, 841, 842, 189, 456, 190, + 465, 892, 893, 894, 895, 896, 191, 461, 855, 856, + 857, 992, 63, 80, 364, 365, 366, 526, 367, 527, + 192, 462, 864, 865, 866, 867, 868, 869, 870, 871, + 193, 448, 814, 815, 816, 966, 49, 73, 253, 254, + 255, 482, 256, 483, 257, 484, 258, 488, 259, 487, + 194, 453, 704, 261, 262, 195, 454, 826, 827, 828, + 975, 1102, 1103, 196, 449, 57, 77, 818, 819, 820, + 969, 59, 78, 329, 330, 331, 332, 333, 334, 335, + 512, 336, 516, 337, 515, 338, 339, 517, 340, 197, + 450, 822, 823, 824, 972, 61, 79, 350, 351, 352, + 353, 354, 521, 355, 356, 357, 358, 264, 480, 926, + 927, 928, 1032, 51, 74, 275, 276, 277, 492, 198, + 451, 199, 452, 267, 481, 930, 931, 932, 1035, 53, + 75, 291, 292, 293, 495, 294, 295, 497, 296, 297, + 200, 460, 851, 852, 853, 989, 55, 76, 309, 310, + 311, 312, 503, 313, 504, 314, 505, 315, 506, 316, + 507, 317, 508, 318, 502, 269, 489, 935, 936, 1038, + 201, 459, 848, 849, 986, 1120, 1121, 1122, 1123, 1124, + 1195, 1125, 202, 463, 881, 882, 883, 1003, 1204, 884, + 885, 1004, 886, 887, 203, 204, 466, 904, 905, 906, + 1015, 907, 1016, 205, 467, 914, 915, 916, 917, 1020, + 918, 919, 1022, 206, 468, 65, 81, 386, 387, 388, + 389, 531, 390, 532, 391, 392, 534, 393, 394, 395, + 537, 755, 396, 538, 397, 398, 399, 541, 400, 542, + 401, 543, 402, 544, 207, 417, 67, 82, 405, 406, + 407, 547, 408, 208, 472, 922, 923, 1026, 1163, 1164, + 1165, 1166, 1212, 1167, 1210, 1231, 1232, 1233, 1241, 1242, + 1243, 1249, 1244, 1245, 1246, 1247, 1253 }; - const short + const unsigned short int Dhcp6Parser::yytable_[] = { - 148, 209, 226, 268, 282, 302, 38, 324, 343, 360, - 380, 325, 344, 345, 227, 873, 265, 214, 262, 275, - 286, 304, 803, 338, 356, 833, 381, 1089, 1090, 1091, - 228, 229, 346, 230, 231, 1095, 1101, 30, 31, 824, - 32, 692, 33, 125, 126, 232, 233, 234, 358, 359, - 235, 42, 236, 724, 470, 207, 208, 474, 237, 471, - 973, 296, 475, 974, 238, 730, 731, 732, 928, 44, - 239, 46, 240, 215, 263, 276, 287, 305, 486, 339, - 357, 124, 382, 487, 400, 401, 260, 271, 285, 303, - 241, 242, 267, 243, 48, 883, 884, 885, 244, 125, - 126, 245, 50, 246, 489, 247, 52, 692, 248, 490, - 54, 249, 496, 257, 56, 269, 283, 497, 223, 270, - 284, 224, 825, 58, 147, 60, 91, 92, 125, 126, - 93, 125, 126, 94, 95, 96, 358, 359, 317, 318, - 340, 319, 320, 341, 342, 1230, 748, 749, 1231, 1232, - 1233, 1234, 147, 524, 62, 64, 125, 126, 525, 97, + 149, 211, 228, 271, 285, 305, 38, 327, 346, 363, + 383, 328, 347, 348, 229, 878, 268, 216, 265, 278, + 289, 307, 808, 341, 359, 838, 384, 1095, 1096, 1097, + 230, 231, 349, 232, 233, 1101, 1107, 829, 31, 30, + 32, 697, 33, 729, 299, 234, 235, 236, 361, 362, + 237, 933, 238, 753, 754, 735, 736, 737, 239, 686, + 687, 688, 689, 474, 240, 209, 210, 86, 475, 42, + 241, 44, 242, 217, 266, 279, 290, 308, 978, 342, + 360, 979, 385, 126, 127, 46, 263, 274, 288, 306, + 243, 244, 690, 245, 126, 127, 48, 478, 246, 126, + 127, 247, 479, 248, 490, 249, 50, 697, 250, 491, + 52, 251, 493, 252, 54, 260, 500, 494, 272, 286, + 830, 501, 273, 287, 148, 981, 91, 92, 982, 89, + 93, 528, 545, 94, 95, 96, 529, 546, 56, 126, + 127, 320, 908, 909, 910, 58, 888, 889, 890, 858, + 859, 860, 861, 862, 863, 899, 900, 403, 404, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 894, 895, 318, - 976, 319, 320, 977, 86, 321, 322, 323, 853, 854, - 855, 856, 857, 858, 125, 126, 125, 126, 147, 541, - 545, 127, 66, 89, 542, 546, 128, 129, 130, 131, - 132, 123, 133, 681, 682, 683, 684, 134, 407, 406, - 470, 34, 35, 36, 37, 933, 135, 147, 408, 136, - 147, 409, 545, 1089, 1090, 1091, 137, 934, 474, 867, - 410, 1095, 1101, 935, 138, 139, 685, 982, 766, 140, - 983, 1022, 141, 761, 1023, 147, 142, 419, 762, 763, - 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, - 774, 775, 776, 777, 778, 779, 318, 143, 144, 145, - 146, 125, 126, 124, 955, 955, 979, 506, 833, 956, - 957, 980, 1056, 125, 126, 996, 124, 412, 420, 873, - 997, 125, 126, 147, 318, 147, 421, 125, 126, 277, - 278, 279, 280, 281, 125, 126, 422, 1003, 1008, 295, - 124, 318, 1004, 1009, 423, 296, 297, 298, 299, 300, - 301, 1228, 1012, 223, 1229, 424, 224, 1013, 125, 126, - 903, 904, 905, 1018, 541, 955, 486, 1186, 1019, 1020, - 1182, 1183, 1187, 868, 869, 870, 871, 425, 1107, 1108, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 524, 505, 1207, 507, 426, 1194, - 1150, 1208, 1151, 1152, 427, 428, 489, 547, 548, 148, - 906, 1210, 496, 209, 1248, 824, 831, 1211, 832, 1249, - 429, 430, 147, 431, 432, 226, 434, 435, 268, 214, - 147, 1195, 1196, 1197, 436, 282, 147, 227, 437, 265, - 438, 262, 442, 147, 275, 302, 1170, 1171, 1172, 1173, - 147, 286, 443, 228, 229, 324, 230, 231, 460, 325, - 343, 304, 467, 469, 344, 345, 473, 147, 232, 233, - 234, 338, 481, 235, 482, 236, 356, 492, 494, 495, - 380, 237, 510, 514, 346, 215, 516, 238, 515, 695, - 696, 697, 698, 239, 518, 240, 381, 263, 519, 520, - 276, 521, 673, 526, 529, 531, 532, 287, 535, 260, - 536, 544, 271, 241, 242, 549, 243, 305, 550, 285, - 551, 244, 552, 553, 245, 554, 246, 339, 247, 303, - 555, 248, 357, 556, 249, 557, 257, 558, 559, 571, - 269, 560, 561, 562, 270, 563, 564, 283, 577, 578, - 566, 284, 382, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 565, 567, 568, 569, - 114, 115, 116, 117, 118, 119, 120, 121, 570, 572, - 124, 573, 574, 579, 575, 576, 580, 581, 582, 583, - 216, 584, 217, 585, 586, 587, 588, 589, 125, 126, - 218, 219, 220, 221, 222, 127, 590, 591, 592, 593, - 594, 595, 148, 596, 597, 209, 599, 223, 600, 605, - 224, 134, 601, 602, 598, 603, 604, 606, 225, 608, - 609, 214, 611, 612, 613, 614, 615, 618, 616, 619, - 620, 617, 622, 624, 625, 626, 627, 630, 872, 886, - 896, 628, 380, 631, 632, 633, 634, 635, 636, 638, - 639, 641, 640, 642, 874, 892, 897, 907, 381, 643, - 644, 646, 757, 647, 650, 651, 654, 648, 653, 655, - 656, 143, 144, 657, 658, 659, 660, 215, 661, 662, - 663, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 125, 126, 664, 147, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 665, 124, 318, - 875, 893, 898, 908, 382, 666, 667, 669, 672, 670, - 674, 680, 675, 676, 677, 678, 125, 126, 679, 219, - 220, 687, 222, 127, 688, 689, 690, 691, 694, 700, - 32, 701, 702, 703, 714, 223, 704, 705, 224, 706, - 707, 715, 721, 708, 709, 710, 225, 365, 366, 367, + 118, 119, 120, 121, 122, 123, 124, 125, 872, 549, + 361, 362, 911, 321, 550, 322, 323, 771, 124, 324, + 325, 326, 474, 148, 549, 126, 127, 938, 148, 939, + 126, 127, 128, 1176, 1177, 1178, 1179, 129, 130, 131, + 132, 133, 478, 134, 60, 960, 960, 940, 135, 410, + 961, 962, 34, 35, 36, 37, 984, 136, 62, 987, + 137, 985, 988, 411, 1095, 1096, 1097, 138, 148, 1001, + 412, 64, 1101, 1107, 1002, 139, 140, 126, 127, 1027, + 141, 66, 1028, 142, 766, 829, 836, 143, 837, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 1008, 144, 145, + 146, 147, 1009, 125, 1013, 1017, 1023, 413, 838, 1014, + 1018, 1024, 1061, 873, 874, 875, 876, 125, 545, 878, + 321, 126, 127, 1025, 148, 1234, 321, 409, 1235, 148, + 280, 281, 282, 283, 284, 126, 127, 126, 127, 298, + 125, 415, 422, 125, 321, 299, 300, 301, 302, 303, + 304, 270, 423, 424, 225, 960, 510, 226, 126, 127, + 1188, 126, 127, 1201, 1202, 1203, 321, 343, 322, 323, + 344, 345, 425, 490, 1192, 509, 148, 225, 1189, 1193, + 226, 1113, 1114, 126, 127, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 1236, + 426, 528, 1237, 1238, 1239, 1240, 1200, 1213, 511, 493, + 551, 552, 1214, 149, 1216, 500, 1254, 211, 427, 428, + 1217, 1255, 429, 430, 1156, 431, 1157, 1158, 432, 228, + 148, 433, 271, 216, 700, 701, 702, 703, 434, 285, + 435, 229, 437, 268, 148, 265, 148, 438, 278, 305, + 439, 440, 148, 441, 445, 289, 446, 230, 231, 327, + 232, 233, 447, 328, 346, 307, 464, 148, 347, 348, + 148, 471, 234, 235, 236, 341, 473, 237, 477, 238, + 359, 485, 486, 496, 383, 239, 498, 499, 349, 217, + 514, 240, 148, 518, 520, 519, 522, 241, 523, 242, + 384, 266, 525, 524, 279, 530, 533, 535, 536, 539, + 540, 290, 548, 263, 554, 553, 274, 243, 244, 561, + 245, 308, 555, 288, 556, 246, 557, 558, 247, 559, + 248, 342, 249, 306, 560, 250, 360, 562, 251, 563, + 252, 564, 260, 565, 566, 567, 568, 272, 575, 569, + 573, 273, 570, 581, 286, 571, 385, 572, 287, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 574, 576, 577, 582, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 578, 579, 125, 580, 583, + 584, 585, 586, 587, 588, 589, 590, 218, 591, 219, + 592, 593, 594, 595, 596, 126, 127, 220, 221, 222, + 223, 224, 128, 597, 598, 599, 600, 149, 601, 602, + 211, 604, 603, 605, 225, 606, 607, 226, 135, 608, + 609, 610, 611, 613, 614, 227, 216, 126, 127, 616, + 617, 618, 619, 620, 621, 623, 624, 622, 625, 627, + 629, 630, 631, 877, 891, 901, 632, 383, 635, 633, + 636, 637, 638, 639, 640, 641, 643, 644, 645, 879, + 897, 902, 912, 384, 646, 647, 648, 762, 649, 651, + 655, 656, 652, 653, 659, 660, 658, 662, 144, 145, + 661, 665, 217, 663, 666, 669, 664, 670, 671, 667, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 711, 712, 713, 716, 717, 719, 720, 378, 379, 726, - 756, 804, 722, 723, 725, 727, 728, 729, 733, 734, - 808, 812, 816, 820, 838, 842, 735, 845, 849, 736, - 916, 737, 751, 147, 738, 739, 920, 924, 740, 143, - 144, 940, 741, 941, 742, 743, 942, 943, 944, 946, - 947, 951, 745, 952, 953, 746, 954, 959, 747, 960, - 753, 962, 754, 963, 755, 147, 966, 965, 968, 969, - 971, 972, 744, 975, 986, 985, 988, 989, 1024, 990, - 991, 992, 993, 994, 995, 1000, 1001, 1002, 1005, 1006, - 1007, 1014, 1016, 1029, 1041, 1028, 1032, 1031, 1036, 1040, - 1034, 1035, 1037, 1038, 1039, 1042, 1043, 1044, 1045, 1046, - 1047, 1048, 1049, 1050, 1051, 1052, 1105, 1132, 1053, 1054, - 226, 1133, 1125, 324, 1126, 1127, 343, 325, 1128, 1064, - 344, 345, 227, 1088, 265, 1129, 262, 1130, 1134, 338, - 1109, 1065, 356, 302, 1110, 1099, 360, 1142, 228, 229, - 346, 230, 231, 1135, 1136, 1139, 1112, 1066, 1067, 304, - 1068, 1069, 872, 232, 233, 234, 1138, 886, 235, 1140, - 236, 896, 1070, 1071, 1072, 1143, 237, 1073, 874, 1074, - 1153, 1145, 238, 892, 1154, 1075, 268, 897, 239, 282, - 240, 1076, 263, 907, 1146, 339, 1155, 1077, 357, 1078, - 1148, 1100, 275, 1163, 260, 286, 1147, 1164, 241, 242, - 1169, 243, 1113, 1098, 1190, 305, 244, 1079, 1080, 245, - 1081, 246, 1175, 247, 1111, 1082, 248, 303, 1083, 249, - 1084, 257, 1085, 1176, 875, 1086, 1177, 1184, 1087, 893, - 1094, 1092, 1185, 898, 1191, 1093, 1178, 1192, 1193, 908, - 1205, 1179, 1156, 1214, 1217, 1180, 1181, 1188, 276, 1219, - 1224, 287, 1222, 1199, 1244, 1245, 1246, 1250, 1254, 758, - 271, 1200, 607, 285, 830, 610, 1057, 1055, 1106, 752, - 1103, 932, 1104, 1123, 760, 1141, 652, 1124, 1213, 1131, - 1059, 1058, 621, 1102, 1201, 1202, 316, 645, 269, 1209, - 1212, 283, 270, 1221, 1215, 284, 1061, 1251, 1060, 1218, - 1252, 1063, 1223, 649, 1253, 1166, 1256, 1257, 1062, 1167, - 1168, 1122, 1165, 929, 1216, 1121, 1137, 1144, 1149, 915, - 668, 1120, 759, 671, 1162, 1220, 1242, 1255, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 1088, - 0, 1109, 0, 0, 0, 1110, 0, 1065, 0, 0, - 0, 1099, 0, 0, 629, 0, 1153, 1112, 1203, 0, - 1154, 623, 0, 1066, 1067, 0, 1068, 1069, 0, 0, - 0, 0, 1155, 0, 637, 0, 0, 0, 1070, 1071, - 1072, 0, 0, 1073, 0, 1074, 0, 0, 0, 0, - 0, 1075, 0, 0, 0, 0, 0, 1076, 0, 0, - 0, 0, 0, 1077, 0, 1078, 0, 1100, 0, 0, - 0, 0, 0, 1113, 0, 0, 0, 0, 0, 1098, - 0, 0, 0, 1079, 1080, 1111, 1081, 0, 1156, 0, - 0, 1082, 0, 0, 1083, 0, 1084, 0, 1085, 0, - 0, 1086, 0, 0, 1087, 0, 1094, 1092, 0, 0, - 0, 1093 + 378, 379, 380, 668, 148, 672, 674, 675, 677, 756, + 381, 382, 678, 679, 680, 880, 898, 903, 913, 385, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 681, 682, 683, 148, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 684, 125, 321, + 685, 692, 693, 694, 695, 696, 699, 705, 32, 706, + 707, 708, 719, 710, 709, 711, 126, 127, 712, 221, + 222, 713, 224, 128, 714, 715, 716, 717, 718, 721, + 722, 724, 720, 725, 726, 225, 731, 761, 226, 843, + 727, 728, 730, 732, 733, 734, 227, 738, 809, 813, + 817, 821, 739, 825, 847, 740, 850, 741, 854, 742, + 921, 925, 743, 744, 929, 945, 745, 946, 947, 746, + 747, 748, 750, 751, 948, 949, 951, 952, 956, 752, + 957, 958, 758, 959, 964, 965, 759, 967, 760, 968, + 970, 971, 974, 973, 977, 1045, 976, 991, 980, 144, + 145, 990, 993, 994, 1029, 995, 996, 997, 998, 999, + 1000, 1005, 1006, 1007, 1010, 1011, 1012, 1019, 1021, 1034, + 1046, 1033, 1037, 1036, 1041, 148, 1039, 1040, 1042, 1043, + 1044, 1048, 1050, 1053, 1054, 1047, 1049, 1051, 1052, 1055, + 1056, 1057, 1111, 1059, 1058, 228, 1131, 1132, 327, 1133, + 1134, 346, 328, 1135, 1069, 347, 348, 229, 1094, 268, + 1136, 265, 1138, 1139, 341, 1115, 1070, 359, 305, 1116, + 1105, 363, 1140, 230, 231, 349, 232, 233, 1148, 1141, + 1142, 1118, 1071, 1072, 307, 1073, 1074, 877, 234, 235, + 236, 1144, 891, 237, 1145, 238, 901, 1075, 1076, 1077, + 1149, 239, 1078, 879, 1079, 1159, 1152, 240, 897, 1160, + 1080, 271, 902, 241, 285, 242, 1081, 266, 912, 1154, + 342, 1161, 1082, 360, 1083, 1151, 1106, 278, 1169, 263, + 289, 1146, 1170, 243, 244, 1153, 245, 1119, 1104, 1175, + 308, 246, 1084, 1085, 247, 1086, 248, 1181, 249, 1117, + 1087, 250, 306, 1088, 251, 1089, 252, 1090, 260, 880, + 1091, 1182, 1190, 1092, 898, 1093, 1183, 1100, 903, 1098, + 1191, 1196, 1197, 1099, 913, 1198, 1199, 1162, 1211, 1184, + 1220, 1223, 1185, 279, 1186, 1225, 290, 1228, 1250, 1251, + 1230, 1252, 1187, 1256, 1260, 274, 1194, 1205, 288, 749, + 763, 1221, 835, 757, 615, 1062, 765, 937, 1060, 1109, + 1112, 1110, 1130, 1147, 1129, 1064, 657, 1137, 1063, 1108, + 1219, 1206, 1207, 319, 1065, 1066, 272, 1224, 650, 286, + 273, 1208, 1215, 287, 1258, 1218, 1227, 626, 1229, 1067, + 1068, 1259, 1257, 1262, 1263, 654, 1174, 1172, 934, 1128, + 1173, 1171, 1222, 1127, 1143, 1126, 1155, 920, 1150, 673, + 764, 676, 1168, 1226, 612, 1248, 1261, 0, 0, 0, + 0, 1069, 0, 0, 0, 1094, 0, 1115, 0, 0, + 0, 1116, 0, 1070, 628, 0, 0, 1105, 0, 0, + 0, 0, 1159, 1118, 1209, 0, 1160, 0, 0, 1071, + 1072, 0, 1073, 1074, 634, 0, 0, 0, 1161, 0, + 0, 0, 0, 0, 1075, 1076, 1077, 642, 0, 1078, + 0, 1079, 0, 0, 0, 0, 0, 1080, 0, 0, + 0, 0, 0, 1081, 0, 0, 0, 0, 0, 1082, + 0, 1083, 0, 1106, 0, 0, 0, 0, 0, 1119, + 0, 0, 0, 0, 0, 1104, 0, 0, 0, 1084, + 1085, 1117, 1086, 0, 1162, 0, 0, 1087, 0, 0, + 1088, 0, 1089, 0, 1090, 0, 0, 1091, 0, 0, + 1092, 0, 1093, 0, 1100, 0, 1098, 0, 0, 0, + 1099 }; - const short + const short int Dhcp6Parser::yycheck_[] = { 71, 72, 73, 74, 75, 76, 16, 78, 79, 80, - 81, 78, 79, 79, 73, 709, 73, 72, 73, 74, - 75, 76, 678, 78, 79, 703, 81, 970, 970, 970, - 73, 73, 79, 73, 73, 970, 970, 0, 5, 115, - 7, 585, 9, 89, 90, 73, 73, 73, 122, 123, - 73, 7, 73, 618, 3, 16, 17, 3, 73, 8, - 3, 113, 8, 6, 73, 630, 631, 632, 120, 7, + 81, 78, 79, 79, 73, 714, 73, 72, 73, 74, + 75, 76, 683, 78, 79, 708, 81, 975, 975, 975, + 73, 73, 79, 73, 73, 975, 975, 116, 5, 0, + 7, 590, 9, 623, 114, 73, 73, 73, 123, 124, + 73, 121, 73, 166, 167, 635, 636, 637, 73, 169, + 170, 171, 172, 3, 73, 16, 17, 199, 8, 7, 73, 7, 73, 72, 73, 74, 75, 76, 3, 78, - 79, 71, 81, 8, 13, 14, 73, 74, 75, 76, - 73, 73, 82, 73, 7, 141, 142, 143, 73, 89, - 90, 73, 7, 73, 3, 73, 7, 651, 73, 8, - 7, 73, 3, 73, 7, 74, 75, 8, 108, 74, - 75, 111, 198, 7, 198, 7, 11, 12, 89, 90, - 15, 89, 90, 18, 19, 20, 122, 123, 21, 72, - 73, 74, 75, 76, 77, 177, 165, 166, 180, 181, - 182, 183, 198, 3, 7, 7, 89, 90, 8, 44, + 79, 6, 81, 90, 91, 7, 73, 74, 75, 76, + 73, 73, 202, 73, 90, 91, 7, 3, 73, 90, + 91, 73, 8, 73, 3, 73, 7, 656, 73, 8, + 7, 73, 3, 73, 7, 73, 3, 8, 74, 75, + 199, 8, 74, 75, 199, 3, 11, 12, 6, 10, + 15, 3, 3, 18, 19, 20, 8, 8, 7, 90, + 91, 21, 149, 150, 151, 7, 142, 143, 144, 126, + 127, 128, 129, 130, 131, 146, 147, 13, 14, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 145, 146, 72, - 3, 74, 75, 6, 198, 78, 79, 80, 125, 126, - 127, 128, 129, 130, 89, 90, 89, 90, 198, 3, - 3, 96, 7, 10, 8, 8, 101, 102, 103, 104, - 105, 70, 107, 168, 169, 170, 171, 112, 3, 6, - 3, 198, 199, 200, 201, 8, 121, 198, 4, 124, - 198, 8, 3, 1186, 1186, 1186, 131, 8, 3, 21, - 3, 1186, 1186, 8, 139, 140, 201, 3, 30, 144, - 6, 3, 147, 21, 6, 198, 151, 4, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 72, 172, 173, 174, - 175, 89, 90, 71, 3, 3, 3, 3, 976, 8, - 8, 8, 958, 89, 90, 3, 71, 8, 4, 1003, - 8, 89, 90, 198, 72, 198, 4, 89, 90, 84, - 85, 86, 87, 88, 89, 90, 4, 3, 3, 107, - 71, 72, 8, 8, 4, 113, 114, 115, 116, 117, - 118, 3, 3, 108, 6, 4, 111, 8, 89, 90, - 148, 149, 150, 3, 3, 3, 3, 3, 8, 8, - 8, 8, 8, 135, 136, 137, 138, 4, 109, 110, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 3, 8, 3, 8, 4, 8, - 176, 8, 178, 179, 4, 4, 3, 407, 408, 470, - 198, 8, 3, 474, 3, 115, 116, 8, 118, 8, - 4, 4, 198, 4, 4, 486, 4, 4, 489, 474, - 198, 132, 133, 134, 4, 496, 198, 486, 4, 486, - 4, 486, 4, 198, 489, 506, 22, 23, 24, 25, - 198, 496, 4, 486, 486, 516, 486, 486, 4, 516, - 521, 506, 4, 4, 521, 521, 4, 198, 486, 486, - 486, 516, 4, 486, 4, 486, 521, 4, 4, 4, - 541, 486, 4, 4, 521, 474, 3, 486, 8, 97, - 98, 99, 100, 486, 4, 486, 541, 486, 4, 8, - 489, 3, 7, 4, 4, 4, 4, 496, 4, 486, - 4, 4, 489, 486, 486, 198, 486, 506, 4, 496, - 4, 486, 4, 4, 486, 4, 486, 516, 486, 506, - 4, 486, 521, 4, 486, 199, 486, 199, 199, 4, - 489, 199, 199, 199, 489, 199, 199, 496, 4, 4, - 200, 496, 541, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 201, 200, 200, 199, - 61, 62, 63, 64, 65, 66, 67, 68, 199, 199, - 71, 199, 201, 4, 201, 201, 201, 201, 4, 4, - 81, 4, 83, 4, 4, 4, 4, 4, 89, 90, - 91, 92, 93, 94, 95, 96, 4, 4, 4, 4, - 4, 4, 673, 4, 4, 676, 4, 108, 4, 201, - 111, 112, 4, 4, 199, 4, 4, 4, 119, 4, - 201, 676, 4, 4, 4, 4, 4, 4, 199, 4, - 4, 201, 4, 4, 199, 4, 199, 4, 709, 710, - 711, 199, 713, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 199, 4, 709, 710, 711, 712, 713, 4, - 201, 4, 672, 201, 4, 4, 4, 201, 201, 4, - 199, 172, 173, 4, 199, 199, 4, 676, 4, 201, - 201, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 89, 90, 4, 198, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 4, 71, 72, - 709, 710, 711, 712, 713, 4, 4, 4, 4, 199, - 198, 198, 7, 7, 7, 7, 89, 90, 5, 92, - 93, 198, 95, 96, 198, 5, 5, 5, 198, 5, - 7, 5, 5, 5, 198, 108, 7, 5, 111, 5, - 5, 198, 198, 7, 7, 7, 119, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 7, 7, 7, 5, 5, 5, 5, 172, 173, 7, - 5, 7, 198, 198, 198, 198, 198, 198, 198, 198, - 7, 7, 7, 7, 106, 7, 198, 7, 7, 198, - 7, 198, 167, 198, 198, 198, 7, 7, 198, 172, - 173, 4, 198, 4, 198, 198, 4, 4, 4, 4, - 4, 4, 198, 4, 4, 198, 4, 6, 198, 3, - 198, 6, 198, 3, 198, 198, 3, 6, 6, 3, - 6, 3, 651, 6, 3, 6, 6, 3, 198, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 3, 201, 6, 3, 6, 4, 199, - 8, 6, 4, 4, 4, 199, 201, 199, 4, 199, - 199, 4, 4, 4, 199, 199, 4, 4, 201, 199, - 961, 4, 199, 964, 199, 199, 967, 964, 199, 970, - 967, 967, 961, 970, 961, 199, 961, 199, 199, 964, - 981, 970, 967, 984, 981, 970, 987, 4, 961, 961, - 967, 961, 961, 199, 199, 199, 981, 970, 970, 984, - 970, 970, 1003, 961, 961, 961, 201, 1008, 961, 199, - 961, 1012, 970, 970, 970, 4, 961, 970, 1003, 970, - 1021, 201, 961, 1008, 1021, 970, 1027, 1012, 961, 1030, - 961, 970, 961, 1018, 4, 964, 1021, 970, 967, 970, - 4, 970, 1027, 6, 961, 1030, 199, 3, 961, 961, - 4, 961, 981, 970, 4, 984, 961, 970, 970, 961, - 970, 961, 198, 961, 981, 970, 961, 984, 970, 961, - 970, 961, 970, 198, 1003, 970, 198, 8, 970, 1008, - 970, 970, 8, 1012, 8, 970, 198, 3, 8, 1018, - 4, 198, 1021, 4, 4, 198, 198, 198, 1027, 4, - 7, 1030, 5, 198, 4, 4, 4, 4, 4, 673, - 1027, 198, 470, 1030, 702, 474, 960, 955, 979, 664, - 973, 756, 976, 987, 676, 1008, 524, 989, 1186, 996, - 963, 961, 486, 972, 198, 198, 77, 516, 1027, 198, - 198, 1030, 1027, 198, 201, 1030, 966, 201, 964, 199, - 199, 969, 198, 521, 199, 1029, 198, 198, 967, 1030, - 1032, 986, 1027, 726, 1192, 984, 1003, 1012, 1018, 713, - 541, 982, 675, 545, 1022, 1207, 1228, 1248, -1, -1, - -1, -1, -1, -1, -1, 1186, -1, -1, -1, 1186, - -1, 1192, -1, -1, -1, 1192, -1, 1186, -1, -1, - -1, 1186, -1, -1, 496, -1, 1207, 1192, 1148, -1, - 1207, 489, -1, 1186, 1186, -1, 1186, 1186, -1, -1, - -1, -1, 1207, -1, 506, -1, -1, -1, 1186, 1186, - 1186, -1, -1, 1186, -1, 1186, -1, -1, -1, -1, - -1, 1186, -1, -1, -1, -1, -1, 1186, -1, -1, - -1, -1, -1, 1186, -1, 1186, -1, 1186, -1, -1, - -1, -1, -1, 1192, -1, -1, -1, -1, -1, 1186, - -1, -1, -1, 1186, 1186, 1192, 1186, -1, 1207, -1, - -1, 1186, -1, -1, 1186, -1, 1186, -1, 1186, -1, - -1, 1186, -1, -1, 1186, -1, 1186, 1186, -1, -1, - -1, 1186 + 65, 66, 67, 68, 69, 70, 71, 72, 21, 3, + 123, 124, 199, 73, 8, 75, 76, 30, 71, 79, + 80, 81, 3, 199, 3, 90, 91, 8, 199, 8, + 90, 91, 97, 22, 23, 24, 25, 102, 103, 104, + 105, 106, 3, 108, 7, 3, 3, 8, 113, 3, + 8, 8, 199, 200, 201, 202, 3, 122, 7, 3, + 125, 8, 6, 4, 1192, 1192, 1192, 132, 199, 3, + 8, 7, 1192, 1192, 8, 140, 141, 90, 91, 3, + 145, 7, 6, 148, 21, 116, 117, 152, 119, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 3, 173, 174, + 175, 176, 8, 72, 3, 3, 3, 3, 981, 8, + 8, 8, 963, 136, 137, 138, 139, 72, 3, 1008, + 73, 90, 91, 8, 199, 3, 73, 6, 6, 199, + 85, 86, 87, 88, 89, 90, 91, 90, 91, 108, + 72, 8, 4, 72, 73, 114, 115, 116, 117, 118, + 119, 83, 4, 4, 109, 3, 3, 112, 90, 91, + 8, 90, 91, 133, 134, 135, 73, 74, 75, 76, + 77, 78, 4, 3, 3, 8, 199, 109, 8, 8, + 112, 110, 111, 90, 91, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 178, + 4, 3, 181, 182, 183, 184, 8, 3, 8, 3, + 410, 411, 8, 474, 8, 3, 3, 478, 4, 4, + 8, 8, 4, 4, 177, 4, 179, 180, 4, 490, + 199, 4, 493, 478, 98, 99, 100, 101, 4, 500, + 4, 490, 4, 490, 199, 490, 199, 4, 493, 510, + 4, 4, 199, 4, 4, 500, 4, 490, 490, 520, + 490, 490, 4, 520, 525, 510, 4, 199, 525, 525, + 199, 4, 490, 490, 490, 520, 4, 490, 4, 490, + 525, 4, 4, 4, 545, 490, 4, 4, 525, 478, + 4, 490, 199, 4, 3, 8, 4, 490, 4, 490, + 545, 490, 3, 8, 493, 4, 4, 4, 4, 4, + 4, 500, 4, 490, 4, 199, 493, 490, 490, 200, + 490, 510, 4, 500, 4, 490, 4, 4, 490, 4, + 490, 520, 490, 510, 4, 490, 525, 200, 490, 200, + 490, 200, 490, 200, 200, 200, 200, 493, 4, 202, + 200, 493, 201, 4, 500, 201, 545, 201, 500, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 200, 200, 200, 4, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 202, 202, 72, 202, 4, + 202, 202, 202, 4, 4, 4, 4, 82, 4, 84, + 4, 4, 4, 4, 4, 90, 91, 92, 93, 94, + 95, 96, 97, 4, 4, 4, 4, 678, 4, 4, + 681, 4, 200, 4, 109, 4, 4, 112, 113, 4, + 4, 202, 4, 4, 202, 120, 681, 90, 91, 4, + 4, 4, 4, 4, 200, 4, 4, 202, 4, 4, + 4, 200, 4, 714, 715, 716, 200, 718, 4, 200, + 4, 4, 4, 4, 4, 4, 4, 4, 200, 714, + 715, 716, 717, 718, 4, 4, 4, 677, 202, 4, + 4, 4, 202, 202, 4, 4, 202, 4, 173, 174, + 200, 4, 681, 200, 4, 4, 200, 4, 4, 202, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 202, 199, 4, 4, 200, 4, 168, + 173, 174, 7, 199, 7, 714, 715, 716, 717, 718, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 7, 7, 7, 199, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 5, 72, 73, + 199, 199, 199, 5, 5, 5, 199, 5, 7, 5, + 5, 5, 199, 5, 7, 5, 90, 91, 5, 93, + 94, 7, 96, 97, 7, 7, 7, 7, 7, 5, + 5, 5, 199, 5, 199, 109, 7, 5, 112, 107, + 199, 199, 199, 199, 199, 199, 120, 199, 7, 7, + 7, 7, 199, 7, 7, 199, 7, 199, 7, 199, + 7, 7, 199, 199, 7, 4, 199, 4, 4, 199, + 199, 199, 199, 199, 4, 4, 4, 4, 4, 199, + 4, 4, 199, 4, 6, 3, 199, 6, 199, 3, + 6, 3, 3, 6, 3, 200, 6, 3, 6, 173, + 174, 6, 6, 3, 199, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, + 202, 6, 3, 6, 4, 199, 8, 6, 4, 4, + 4, 202, 4, 4, 4, 200, 200, 200, 200, 4, + 200, 200, 4, 200, 202, 966, 200, 200, 969, 200, + 200, 972, 969, 200, 975, 972, 972, 966, 975, 966, + 200, 966, 4, 4, 969, 986, 975, 972, 989, 986, + 975, 992, 200, 966, 966, 972, 966, 966, 4, 200, + 200, 986, 975, 975, 989, 975, 975, 1008, 966, 966, + 966, 202, 1013, 966, 200, 966, 1017, 975, 975, 975, + 4, 966, 975, 1008, 975, 1026, 4, 966, 1013, 1026, + 975, 1032, 1017, 966, 1035, 966, 975, 966, 1023, 4, + 969, 1026, 975, 972, 975, 202, 975, 1032, 6, 966, + 1035, 200, 3, 966, 966, 200, 966, 986, 975, 4, + 989, 966, 975, 975, 966, 975, 966, 199, 966, 986, + 975, 966, 989, 975, 966, 975, 966, 975, 966, 1008, + 975, 199, 8, 975, 1013, 975, 199, 975, 1017, 975, + 8, 4, 8, 975, 1023, 3, 8, 1026, 4, 199, + 4, 4, 199, 1032, 199, 4, 1035, 5, 4, 4, + 7, 4, 199, 4, 4, 1032, 199, 199, 1035, 656, + 678, 202, 707, 669, 478, 965, 681, 761, 960, 978, + 984, 981, 994, 1013, 992, 968, 528, 1001, 966, 977, + 1192, 199, 199, 77, 969, 971, 1032, 200, 520, 1035, + 1032, 199, 199, 1035, 200, 199, 199, 490, 199, 972, + 974, 200, 202, 199, 199, 525, 1037, 1034, 731, 991, + 1035, 1032, 1198, 989, 1008, 987, 1023, 718, 1017, 545, + 680, 549, 1027, 1213, 474, 1234, 1254, -1, -1, -1, + -1, 1192, -1, -1, -1, 1192, -1, 1198, -1, -1, + -1, 1198, -1, 1192, 493, -1, -1, 1192, -1, -1, + -1, -1, 1213, 1198, 1154, -1, 1213, -1, -1, 1192, + 1192, -1, 1192, 1192, 500, -1, -1, -1, 1213, -1, + -1, -1, -1, -1, 1192, 1192, 1192, 510, -1, 1192, + -1, 1192, -1, -1, -1, -1, -1, 1192, -1, -1, + -1, -1, -1, 1192, -1, -1, -1, -1, -1, 1192, + -1, 1192, -1, 1192, -1, -1, -1, -1, -1, 1198, + -1, -1, -1, -1, -1, 1192, -1, -1, -1, 1192, + 1192, 1198, 1192, -1, 1213, -1, -1, 1192, -1, -1, + 1192, -1, 1192, -1, 1192, -1, -1, 1192, -1, -1, + 1192, -1, 1192, -1, 1192, -1, 1192, -1, -1, -1, + 1192 }; - const short + const unsigned short int Dhcp6Parser::yystos_[] = { - 0, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 0, 5, 7, 9, 198, 199, 200, 201, 218, 219, - 220, 225, 7, 234, 7, 238, 7, 281, 7, 387, - 7, 464, 7, 480, 7, 497, 7, 416, 7, 422, - 7, 446, 7, 363, 7, 566, 7, 597, 226, 221, - 235, 239, 282, 388, 465, 481, 498, 417, 423, 447, - 364, 567, 598, 218, 227, 228, 198, 223, 224, 10, - 236, 11, 12, 15, 18, 19, 20, 44, 45, 46, + 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 0, 5, 7, 9, 199, 200, 201, 202, 219, 220, + 221, 226, 7, 235, 7, 239, 7, 283, 7, 389, + 7, 466, 7, 482, 7, 499, 7, 418, 7, 424, + 7, 448, 7, 365, 7, 568, 7, 599, 227, 222, + 236, 240, 284, 390, 467, 483, 500, 419, 425, 449, + 366, 569, 600, 219, 228, 229, 199, 224, 225, 10, + 237, 11, 12, 15, 18, 19, 20, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 89, 90, 96, 101, 102, - 103, 104, 105, 107, 112, 121, 124, 131, 139, 140, - 144, 147, 151, 172, 173, 174, 175, 198, 233, 240, - 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, + 67, 68, 69, 70, 71, 72, 90, 91, 97, 102, + 103, 104, 105, 106, 108, 113, 122, 125, 132, 140, + 141, 145, 148, 152, 173, 174, 175, 176, 199, 234, + 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 264, 266, 268, 269, 271, 273, 274, 275, 276, 278, - 279, 288, 290, 292, 330, 336, 342, 348, 350, 357, - 371, 381, 401, 406, 414, 440, 470, 472, 491, 521, - 533, 545, 546, 554, 564, 595, 604, 16, 17, 233, - 283, 284, 285, 287, 470, 472, 81, 83, 91, 92, - 93, 94, 95, 108, 111, 119, 233, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 258, 259, 260, 261, 264, 266, 268, 269, 271, 273, - 389, 390, 391, 393, 395, 397, 399, 401, 404, 405, - 440, 458, 470, 472, 474, 491, 516, 82, 233, 397, - 399, 440, 466, 467, 468, 470, 472, 84, 85, 86, - 87, 88, 233, 397, 399, 440, 470, 472, 482, 483, - 484, 486, 487, 489, 490, 107, 113, 114, 115, 116, - 117, 118, 233, 440, 470, 472, 499, 500, 501, 502, - 504, 506, 508, 510, 512, 514, 414, 21, 72, 74, - 75, 78, 79, 80, 233, 310, 424, 425, 426, 427, - 428, 429, 430, 432, 434, 436, 437, 439, 470, 472, - 73, 76, 77, 233, 310, 428, 434, 448, 449, 450, - 451, 452, 454, 455, 456, 457, 470, 472, 122, 123, - 233, 365, 366, 367, 369, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 172, 173, - 233, 470, 472, 568, 569, 570, 571, 573, 575, 576, - 578, 579, 580, 583, 585, 586, 587, 589, 591, 593, - 13, 14, 599, 600, 601, 603, 6, 3, 4, 8, - 3, 237, 8, 243, 596, 280, 289, 291, 293, 4, + 262, 265, 267, 269, 270, 271, 273, 275, 276, 277, + 278, 280, 281, 290, 292, 294, 332, 338, 344, 350, + 352, 359, 373, 383, 403, 408, 416, 442, 472, 474, + 493, 523, 535, 547, 548, 556, 566, 597, 606, 16, + 17, 234, 285, 286, 287, 289, 472, 474, 82, 84, + 92, 93, 94, 95, 96, 109, 112, 120, 234, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 259, 260, 261, 262, 265, 267, 269, 270, + 271, 273, 275, 391, 392, 393, 395, 397, 399, 401, + 403, 406, 407, 442, 460, 472, 474, 476, 493, 518, + 83, 234, 399, 401, 442, 468, 469, 470, 472, 474, + 85, 86, 87, 88, 89, 234, 399, 401, 442, 472, + 474, 484, 485, 486, 488, 489, 491, 492, 108, 114, + 115, 116, 117, 118, 119, 234, 442, 472, 474, 501, + 502, 503, 504, 506, 508, 510, 512, 514, 516, 416, + 21, 73, 75, 76, 79, 80, 81, 234, 312, 426, + 427, 428, 429, 430, 431, 432, 434, 436, 438, 439, + 441, 472, 474, 74, 77, 78, 234, 312, 430, 436, + 450, 451, 452, 453, 454, 456, 457, 458, 459, 472, + 474, 123, 124, 234, 367, 368, 369, 371, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 173, 174, 234, 472, 474, 570, 571, 572, 573, + 575, 577, 578, 580, 581, 582, 585, 587, 588, 589, + 591, 593, 595, 13, 14, 601, 602, 603, 605, 6, + 3, 4, 8, 3, 238, 8, 244, 598, 282, 291, + 293, 295, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 279, 4, 4, 4, + 4, 4, 263, 266, 268, 4, 4, 4, 384, 417, + 443, 473, 475, 404, 409, 339, 351, 345, 333, 524, + 494, 360, 374, 536, 4, 353, 549, 557, 567, 272, + 274, 4, 607, 4, 3, 8, 288, 4, 3, 8, + 461, 477, 394, 396, 398, 4, 4, 402, 400, 519, + 3, 8, 471, 3, 8, 487, 4, 490, 4, 4, + 3, 8, 517, 505, 507, 509, 511, 513, 515, 8, + 3, 8, 433, 313, 4, 437, 435, 440, 4, 8, + 3, 455, 4, 4, 8, 3, 370, 372, 3, 8, + 4, 574, 576, 4, 579, 4, 4, 583, 586, 4, + 4, 590, 592, 594, 596, 3, 8, 604, 4, 3, + 8, 219, 219, 199, 4, 4, 4, 4, 4, 4, + 4, 200, 200, 200, 200, 200, 200, 200, 200, 202, + 201, 201, 201, 200, 200, 4, 200, 200, 202, 202, + 202, 4, 4, 4, 202, 202, 202, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 277, 4, 4, 4, 4, 4, 262, - 265, 267, 4, 4, 382, 415, 441, 471, 473, 402, - 407, 337, 349, 343, 331, 522, 492, 358, 372, 534, - 4, 351, 547, 555, 565, 270, 272, 4, 605, 4, - 3, 8, 286, 4, 3, 8, 459, 475, 392, 394, - 396, 4, 4, 400, 398, 517, 3, 8, 469, 3, - 8, 485, 4, 488, 4, 4, 3, 8, 515, 503, - 505, 507, 509, 511, 513, 8, 3, 8, 431, 311, - 4, 435, 433, 438, 4, 8, 3, 453, 4, 4, - 8, 3, 368, 370, 3, 8, 4, 572, 574, 4, - 577, 4, 4, 581, 584, 4, 4, 588, 590, 592, - 594, 3, 8, 602, 4, 3, 8, 218, 218, 198, - 4, 4, 4, 4, 4, 4, 4, 199, 199, 199, - 199, 199, 199, 199, 199, 201, 200, 200, 200, 199, - 199, 4, 199, 199, 201, 201, 201, 4, 4, 4, - 201, 201, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 199, 4, - 4, 4, 4, 4, 4, 201, 4, 241, 4, 201, - 284, 4, 4, 4, 4, 4, 199, 201, 4, 4, - 4, 390, 4, 467, 4, 199, 4, 199, 199, 483, - 4, 4, 4, 4, 4, 4, 4, 501, 4, 4, - 199, 4, 4, 4, 201, 426, 4, 201, 201, 450, - 4, 4, 366, 201, 4, 4, 199, 4, 199, 199, - 4, 4, 201, 201, 4, 4, 4, 4, 569, 4, - 199, 600, 4, 7, 198, 7, 7, 7, 7, 5, - 198, 168, 169, 170, 171, 201, 263, 198, 198, 5, - 5, 5, 220, 222, 198, 97, 98, 99, 100, 403, - 5, 5, 5, 5, 7, 5, 5, 5, 7, 7, - 7, 7, 7, 7, 198, 198, 5, 5, 229, 5, - 5, 198, 198, 198, 229, 198, 7, 198, 198, 198, - 229, 229, 229, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 222, 198, 198, 198, 165, 166, - 582, 167, 263, 198, 198, 198, 5, 218, 240, 599, - 283, 21, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 233, 298, 299, 300, 303, 305, 307, 309, 310, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 323, - 324, 326, 328, 298, 7, 294, 295, 296, 7, 383, - 384, 385, 7, 418, 419, 420, 7, 442, 443, 444, - 7, 408, 409, 410, 115, 198, 338, 339, 340, 341, - 227, 116, 118, 340, 344, 345, 346, 347, 106, 332, - 333, 334, 7, 523, 524, 7, 493, 494, 495, 7, - 359, 360, 361, 125, 126, 127, 128, 129, 130, 373, - 374, 375, 376, 377, 378, 379, 380, 21, 135, 136, - 137, 138, 233, 312, 470, 472, 535, 536, 537, 540, - 541, 543, 544, 141, 142, 143, 233, 352, 353, 354, - 355, 356, 470, 472, 145, 146, 233, 470, 472, 548, - 549, 550, 552, 148, 149, 150, 198, 470, 472, 556, - 557, 558, 559, 561, 562, 568, 7, 606, 607, 230, - 7, 460, 461, 462, 7, 476, 477, 478, 120, 502, - 518, 519, 294, 8, 8, 8, 301, 304, 306, 308, - 4, 4, 4, 4, 4, 322, 4, 4, 325, 327, - 329, 4, 4, 4, 4, 3, 8, 8, 297, 6, - 3, 386, 6, 3, 421, 6, 3, 445, 6, 3, - 411, 6, 3, 3, 6, 6, 3, 6, 335, 3, - 8, 525, 3, 6, 496, 6, 3, 362, 6, 3, - 4, 4, 4, 4, 4, 4, 3, 8, 538, 542, - 4, 4, 4, 3, 8, 4, 4, 4, 3, 8, - 551, 553, 3, 8, 4, 560, 4, 563, 3, 8, - 8, 608, 3, 6, 198, 231, 232, 463, 6, 3, - 479, 6, 3, 520, 8, 6, 4, 4, 4, 4, - 199, 201, 199, 201, 199, 4, 199, 199, 4, 4, - 4, 199, 199, 201, 199, 299, 298, 296, 389, 385, - 424, 420, 448, 444, 233, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, - 260, 261, 264, 266, 268, 269, 271, 273, 310, 381, - 393, 395, 397, 399, 401, 405, 412, 413, 440, 470, - 472, 516, 410, 339, 345, 4, 333, 109, 110, 233, - 310, 440, 470, 472, 526, 527, 528, 529, 530, 532, - 524, 499, 495, 365, 361, 199, 199, 199, 199, 199, - 199, 374, 4, 4, 199, 199, 199, 536, 201, 199, - 199, 353, 4, 4, 549, 201, 4, 199, 4, 557, - 176, 178, 179, 233, 310, 470, 472, 609, 610, 611, - 612, 614, 607, 6, 3, 466, 462, 482, 478, 4, - 22, 23, 24, 25, 302, 198, 198, 198, 198, 198, - 198, 198, 8, 8, 8, 8, 3, 8, 198, 531, - 4, 8, 3, 8, 8, 132, 133, 134, 539, 198, - 198, 198, 198, 218, 615, 4, 613, 3, 8, 198, - 8, 8, 198, 413, 4, 201, 528, 4, 199, 4, - 610, 198, 5, 198, 7, 616, 617, 618, 3, 6, - 177, 180, 181, 182, 183, 619, 620, 621, 623, 624, - 625, 626, 617, 622, 4, 4, 4, 627, 3, 8, - 4, 201, 199, 199, 4, 620, 198, 198 + 4, 4, 4, 200, 4, 4, 4, 4, 4, 4, + 202, 4, 242, 4, 202, 286, 4, 4, 4, 4, + 4, 200, 202, 4, 4, 4, 392, 4, 469, 4, + 200, 4, 200, 200, 485, 4, 4, 4, 4, 4, + 4, 4, 503, 4, 4, 200, 4, 4, 4, 202, + 428, 4, 202, 202, 452, 4, 4, 368, 202, 4, + 4, 200, 4, 200, 200, 4, 4, 202, 202, 4, + 4, 4, 4, 571, 4, 200, 602, 4, 7, 199, + 7, 7, 7, 7, 5, 199, 169, 170, 171, 172, + 202, 264, 199, 199, 5, 5, 5, 221, 223, 199, + 98, 99, 100, 101, 405, 5, 5, 5, 5, 7, + 5, 5, 5, 7, 7, 7, 7, 7, 7, 199, + 199, 5, 5, 230, 5, 5, 199, 199, 199, 230, + 199, 7, 199, 199, 199, 230, 230, 230, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 223, + 199, 199, 199, 166, 167, 584, 168, 264, 199, 199, + 199, 5, 219, 241, 601, 285, 21, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 234, 300, 301, 302, 305, + 307, 309, 311, 312, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 325, 326, 328, 330, 300, 7, + 296, 297, 298, 7, 385, 386, 387, 7, 420, 421, + 422, 7, 444, 445, 446, 7, 410, 411, 412, 116, + 199, 340, 341, 342, 343, 228, 117, 119, 342, 346, + 347, 348, 349, 107, 334, 335, 336, 7, 525, 526, + 7, 495, 496, 497, 7, 361, 362, 363, 126, 127, + 128, 129, 130, 131, 375, 376, 377, 378, 379, 380, + 381, 382, 21, 136, 137, 138, 139, 234, 314, 472, + 474, 537, 538, 539, 542, 543, 545, 546, 142, 143, + 144, 234, 354, 355, 356, 357, 358, 472, 474, 146, + 147, 234, 472, 474, 550, 551, 552, 554, 149, 150, + 151, 199, 472, 474, 558, 559, 560, 561, 563, 564, + 570, 7, 608, 609, 231, 7, 462, 463, 464, 7, + 478, 479, 480, 121, 504, 520, 521, 296, 8, 8, + 8, 303, 306, 308, 310, 4, 4, 4, 4, 4, + 324, 4, 4, 327, 329, 331, 4, 4, 4, 4, + 3, 8, 8, 299, 6, 3, 388, 6, 3, 423, + 6, 3, 447, 6, 3, 413, 6, 3, 3, 6, + 6, 3, 6, 337, 3, 8, 527, 3, 6, 498, + 6, 3, 364, 6, 3, 4, 4, 4, 4, 4, + 4, 3, 8, 540, 544, 4, 4, 4, 3, 8, + 4, 4, 4, 3, 8, 553, 555, 3, 8, 4, + 562, 4, 565, 3, 8, 8, 610, 3, 6, 199, + 232, 233, 465, 6, 3, 481, 6, 3, 522, 8, + 6, 4, 4, 4, 4, 200, 202, 200, 202, 200, + 4, 200, 200, 4, 4, 4, 200, 200, 202, 200, + 301, 300, 298, 391, 387, 426, 422, 450, 446, 234, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 259, 260, 261, 262, 265, 267, 269, + 270, 271, 273, 275, 312, 383, 395, 397, 399, 401, + 403, 407, 414, 415, 442, 472, 474, 518, 412, 341, + 347, 4, 335, 110, 111, 234, 312, 442, 472, 474, + 528, 529, 530, 531, 532, 534, 526, 501, 497, 367, + 363, 200, 200, 200, 200, 200, 200, 376, 4, 4, + 200, 200, 200, 538, 202, 200, 200, 355, 4, 4, + 551, 202, 4, 200, 4, 559, 177, 179, 180, 234, + 312, 472, 474, 611, 612, 613, 614, 616, 609, 6, + 3, 468, 464, 484, 480, 4, 22, 23, 24, 25, + 304, 199, 199, 199, 199, 199, 199, 199, 8, 8, + 8, 8, 3, 8, 199, 533, 4, 8, 3, 8, + 8, 133, 134, 135, 541, 199, 199, 199, 199, 219, + 617, 4, 615, 3, 8, 199, 8, 8, 199, 415, + 4, 202, 530, 4, 200, 4, 612, 199, 5, 199, + 7, 618, 619, 620, 3, 6, 178, 181, 182, 183, + 184, 621, 622, 623, 625, 626, 627, 628, 619, 624, + 4, 4, 4, 629, 3, 8, 4, 202, 200, 200, + 4, 622, 199, 199 }; - const short + const unsigned short int Dhcp6Parser::yyr1_[] = { - 0, 202, 204, 203, 205, 203, 206, 203, 207, 203, - 208, 203, 209, 203, 210, 203, 211, 203, 212, 203, - 213, 203, 214, 203, 215, 203, 216, 203, 217, 203, - 218, 218, 218, 218, 218, 218, 218, 219, 221, 220, - 222, 223, 223, 224, 224, 226, 225, 227, 227, 228, - 228, 230, 229, 231, 231, 232, 232, 233, 235, 234, - 237, 236, 239, 238, 240, 240, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 243, 242, 244, 245, 246, 247, 248, + 0, 203, 205, 204, 206, 204, 207, 204, 208, 204, + 209, 204, 210, 204, 211, 204, 212, 204, 213, 204, + 214, 204, 215, 204, 216, 204, 217, 204, 218, 204, + 219, 219, 219, 219, 219, 219, 219, 220, 222, 221, + 223, 224, 224, 225, 225, 227, 226, 228, 228, 229, + 229, 231, 230, 232, 232, 233, 233, 234, 236, 235, + 238, 237, 240, 239, 241, 241, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 244, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 262, 261, 263, 263, 263, 263, 263, 265, - 264, 267, 266, 268, 270, 269, 272, 271, 273, 274, - 275, 277, 276, 278, 280, 279, 282, 281, 283, 283, - 284, 284, 284, 284, 284, 286, 285, 287, 289, 288, - 291, 290, 293, 292, 294, 294, 295, 295, 297, 296, - 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 299, 299, 301, 300, 302, 302, 302, 302, 304, - 303, 306, 305, 308, 307, 309, 311, 310, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 322, 321, 323, - 325, 324, 327, 326, 329, 328, 331, 330, 332, 332, - 333, 335, 334, 337, 336, 338, 338, 339, 339, 340, - 341, 343, 342, 344, 344, 345, 345, 345, 346, 347, - 349, 348, 351, 350, 352, 352, 353, 353, 353, 353, - 353, 353, 354, 355, 356, 358, 357, 359, 359, 360, - 360, 362, 361, 364, 363, 365, 365, 365, 366, 366, - 368, 367, 370, 369, 372, 371, 373, 373, 374, 374, - 374, 374, 374, 374, 375, 376, 377, 378, 379, 380, - 382, 381, 383, 383, 384, 384, 386, 385, 388, 387, - 389, 389, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 392, 391, 394, 393, 396, 395, 398, 397, 400, - 399, 402, 401, 403, 403, 403, 403, 404, 405, 407, - 406, 408, 408, 409, 409, 411, 410, 412, 412, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 415, 414, 417, 416, 418, - 418, 419, 419, 421, 420, 423, 422, 424, 424, 425, - 425, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 427, 428, 429, 431, 430, 433, 432, 435, 434, - 436, 438, 437, 439, 441, 440, 442, 442, 443, 443, - 445, 444, 447, 446, 448, 448, 449, 449, 450, 450, - 450, 450, 450, 450, 450, 450, 450, 451, 453, 452, - 454, 455, 456, 457, 459, 458, 460, 460, 461, 461, - 463, 462, 465, 464, 466, 466, 467, 467, 467, 467, - 467, 467, 467, 469, 468, 471, 470, 473, 472, 475, - 474, 476, 476, 477, 477, 479, 478, 481, 480, 482, - 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, - 483, 483, 485, 484, 486, 488, 487, 489, 490, 492, - 491, 493, 493, 494, 494, 496, 495, 498, 497, 499, - 499, 500, 500, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 503, 502, 505, 504, 507, 506, - 509, 508, 511, 510, 513, 512, 515, 514, 517, 516, - 518, 518, 520, 519, 522, 521, 523, 523, 525, 524, - 526, 526, 527, 527, 528, 528, 528, 528, 528, 528, - 528, 529, 531, 530, 532, 534, 533, 535, 535, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 538, 537, - 539, 539, 539, 540, 542, 541, 543, 544, 545, 547, - 546, 548, 548, 549, 549, 549, 549, 549, 551, 550, - 553, 552, 555, 554, 556, 556, 557, 557, 557, 557, - 557, 557, 558, 560, 559, 561, 563, 562, 565, 564, - 567, 566, 568, 568, 569, 569, 569, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, - 569, 569, 570, 572, 571, 574, 573, 575, 577, 576, - 578, 579, 581, 580, 582, 582, 584, 583, 585, 586, - 588, 587, 590, 589, 592, 591, 594, 593, 596, 595, - 598, 597, 599, 599, 600, 600, 602, 601, 603, 605, - 604, 606, 606, 608, 607, 609, 609, 610, 610, 610, - 610, 610, 610, 610, 611, 613, 612, 615, 614, 616, - 616, 618, 617, 619, 619, 620, 620, 620, 620, 620, - 622, 621, 623, 624, 625, 627, 626 + 259, 260, 261, 263, 262, 264, 264, 264, 264, 264, + 266, 265, 268, 267, 269, 270, 272, 271, 274, 273, + 275, 276, 277, 279, 278, 280, 282, 281, 284, 283, + 285, 285, 286, 286, 286, 286, 286, 288, 287, 289, + 291, 290, 293, 292, 295, 294, 296, 296, 297, 297, + 299, 298, 300, 300, 301, 301, 301, 301, 301, 301, + 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, + 301, 301, 301, 301, 301, 303, 302, 304, 304, 304, + 304, 306, 305, 308, 307, 310, 309, 311, 313, 312, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 324, + 323, 325, 327, 326, 329, 328, 331, 330, 333, 332, + 334, 334, 335, 337, 336, 339, 338, 340, 340, 341, + 341, 342, 343, 345, 344, 346, 346, 347, 347, 347, + 348, 349, 351, 350, 353, 352, 354, 354, 355, 355, + 355, 355, 355, 355, 356, 357, 358, 360, 359, 361, + 361, 362, 362, 364, 363, 366, 365, 367, 367, 367, + 368, 368, 370, 369, 372, 371, 374, 373, 375, 375, + 376, 376, 376, 376, 376, 376, 377, 378, 379, 380, + 381, 382, 384, 383, 385, 385, 386, 386, 388, 387, + 390, 389, 391, 391, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 394, 393, 396, 395, 398, 397, + 400, 399, 402, 401, 404, 403, 405, 405, 405, 405, + 406, 407, 409, 408, 410, 410, 411, 411, 413, 412, + 414, 414, 415, 415, 415, 415, 415, 415, 415, 415, + 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, + 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, + 415, 415, 415, 415, 415, 415, 415, 415, 415, 417, + 416, 419, 418, 420, 420, 421, 421, 423, 422, 425, + 424, 426, 426, 427, 427, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 429, 430, 431, 433, 432, + 435, 434, 437, 436, 438, 440, 439, 441, 443, 442, + 444, 444, 445, 445, 447, 446, 449, 448, 450, 450, + 451, 451, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 453, 455, 454, 456, 457, 458, 459, 461, 460, + 462, 462, 463, 463, 465, 464, 467, 466, 468, 468, + 469, 469, 469, 469, 469, 469, 469, 471, 470, 473, + 472, 475, 474, 477, 476, 478, 478, 479, 479, 481, + 480, 483, 482, 484, 484, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 487, 486, 488, 490, + 489, 491, 492, 494, 493, 495, 495, 496, 496, 498, + 497, 500, 499, 501, 501, 502, 502, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 505, 504, + 507, 506, 509, 508, 511, 510, 513, 512, 515, 514, + 517, 516, 519, 518, 520, 520, 522, 521, 524, 523, + 525, 525, 527, 526, 528, 528, 529, 529, 530, 530, + 530, 530, 530, 530, 530, 531, 533, 532, 534, 536, + 535, 537, 537, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 540, 539, 541, 541, 541, 542, 544, 543, + 545, 546, 547, 549, 548, 550, 550, 551, 551, 551, + 551, 551, 553, 552, 555, 554, 557, 556, 558, 558, + 559, 559, 559, 559, 559, 559, 560, 562, 561, 563, + 565, 564, 567, 566, 569, 568, 570, 570, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 572, 574, 573, 576, + 575, 577, 579, 578, 580, 581, 583, 582, 584, 584, + 586, 585, 587, 588, 590, 589, 592, 591, 594, 593, + 596, 595, 598, 597, 600, 599, 601, 601, 602, 602, + 604, 603, 605, 607, 606, 608, 608, 610, 609, 611, + 611, 612, 612, 612, 612, 612, 612, 612, 613, 615, + 614, 617, 616, 618, 618, 620, 619, 621, 621, 622, + 622, 622, 622, 622, 624, 623, 625, 626, 627, 629, + 628 }; - const signed char + const unsigned char Dhcp6Parser::yyr2_[] = { 0, 2, 0, 3, 0, 3, 0, 3, 0, 3, @@ -5433,84 +5296,85 @@ namespace isc { namespace dhcp { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 0, 4, 1, 1, 1, 1, 1, 0, - 4, 0, 4, 3, 0, 4, 0, 4, 3, 3, - 3, 0, 4, 3, 0, 6, 0, 4, 1, 3, - 1, 1, 1, 1, 1, 0, 4, 3, 0, 6, - 0, 6, 0, 6, 0, 1, 1, 3, 0, 4, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 1, 1, 1, 1, 0, - 4, 0, 4, 0, 4, 3, 0, 4, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 0, 4, 3, - 0, 4, 0, 4, 0, 4, 0, 6, 1, 3, - 1, 0, 4, 0, 6, 1, 3, 1, 1, 1, - 1, 0, 6, 1, 3, 1, 1, 1, 1, 1, - 0, 6, 0, 6, 1, 3, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 0, 6, 0, 1, 1, - 3, 0, 4, 0, 4, 1, 3, 1, 1, 1, - 0, 4, 0, 4, 0, 6, 1, 3, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 0, 6, 0, 1, 1, 3, 0, 4, 0, 4, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 0, 4, 1, 1, 1, 1, 1, + 0, 4, 0, 4, 3, 3, 0, 4, 0, 4, + 3, 3, 3, 0, 4, 3, 0, 6, 0, 4, + 1, 3, 1, 1, 1, 1, 1, 0, 4, 3, + 0, 6, 0, 6, 0, 6, 0, 1, 1, 3, + 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 4, 1, 1, 1, + 1, 0, 4, 0, 4, 0, 4, 3, 0, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, + 4, 3, 0, 4, 0, 4, 0, 4, 0, 6, + 1, 3, 1, 0, 4, 0, 6, 1, 3, 1, + 1, 1, 1, 0, 6, 1, 3, 1, 1, 1, + 1, 1, 0, 6, 0, 6, 1, 3, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 0, 6, 0, + 1, 1, 3, 0, 4, 0, 4, 1, 3, 1, + 1, 1, 0, 4, 0, 4, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 0, 6, 0, 1, 1, 3, 0, 4, + 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 1, 1, 1, 1, 3, 3, 0, - 6, 0, 1, 1, 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 4, 1, 1, 1, 1, + 3, 3, 0, 6, 0, 1, 1, 3, 0, 4, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 6, 0, 4, 0, - 1, 1, 3, 0, 4, 0, 4, 0, 1, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 0, 4, 0, 4, 0, 4, - 1, 0, 4, 3, 0, 6, 0, 1, 1, 3, - 0, 4, 0, 4, 0, 1, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 1, 1, 3, 3, 0, 6, 0, 1, 1, 3, - 0, 4, 0, 4, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, - 6, 0, 1, 1, 3, 0, 4, 0, 4, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 3, 0, 4, 3, 3, 0, - 6, 0, 1, 1, 3, 0, 4, 0, 4, 0, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, - 1, 1, 0, 4, 0, 6, 1, 3, 0, 4, - 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 3, 0, 6, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 6, 0, 4, 0, 1, 1, 3, 0, 4, 0, + 4, 0, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 0, 4, + 0, 4, 0, 4, 1, 0, 4, 3, 0, 6, + 0, 1, 1, 3, 0, 4, 0, 4, 0, 1, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 1, 1, 3, 3, 0, 6, + 0, 1, 1, 3, 0, 4, 0, 4, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 4, 0, 6, 0, 1, 1, 3, 0, + 4, 0, 4, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 4, 3, 0, + 4, 3, 3, 0, 6, 0, 1, 1, 3, 0, + 4, 0, 4, 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 1, 1, 1, 3, 0, 4, 3, 3, 3, 0, - 6, 1, 3, 1, 1, 1, 1, 1, 0, 4, - 0, 4, 0, 6, 1, 3, 1, 1, 1, 1, - 1, 1, 3, 0, 4, 3, 0, 4, 0, 6, - 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, + 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 6, 1, 1, 0, 4, 0, 6, + 1, 3, 0, 4, 0, 1, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 4, 3, 0, + 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 1, 1, 1, 3, 0, 4, + 3, 3, 3, 0, 6, 1, 3, 1, 1, 1, + 1, 1, 0, 4, 0, 4, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 1, 3, 0, 4, 3, + 0, 4, 0, 6, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 4, 0, 4, 3, 0, 4, - 3, 3, 0, 4, 1, 1, 0, 4, 3, 3, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, - 0, 4, 1, 3, 1, 1, 0, 6, 3, 0, - 6, 1, 3, 0, 4, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 4, 0, 6, 1, - 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, - 0, 4, 3, 3, 3, 0, 4 + 1, 1, 1, 1, 1, 1, 3, 0, 4, 0, + 4, 3, 0, 4, 3, 3, 0, 4, 1, 1, + 0, 4, 3, 3, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 6, 0, 4, 1, 3, 1, 1, + 0, 6, 3, 0, 6, 1, 3, 0, 4, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 3, 0, + 4, 0, 6, 1, 3, 0, 4, 1, 3, 1, + 1, 1, 1, 1, 0, 4, 3, 3, 3, 0, + 4 }; -#if PARSER6_DEBUG || 1 + // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - // First, the terminals, then, starting at \a YYNTOKENS, nonterminals. + // First, the terminals, then, starting at \a yyntokens_, nonterminals. const char* const Dhcp6Parser::yytname_[] = { - "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"", - "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", - "\"data-directory\"", "\"config-control\"", "\"config-databases\"", + "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"", + "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"data-directory\"", + "\"config-control\"", "\"config-databases\"", "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"", "\"re-detect\"", "\"lease-database\"", "\"hosts-database\"", "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"", @@ -5529,9 +5393,10 @@ namespace isc { namespace dhcp { "\"ddns-send-updates\"", "\"ddns-override-no-update\"", "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"", "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"", - "\"ddns-update-on-renew\"", "\"store-extended-info\"", "\"subnet6\"", - "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", - "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"", + "\"ddns-update-on-renew\"", "\"ddns-use-conflict-resolution\"", + "\"store-extended-info\"", "\"subnet6\"", "\"option-def\"", + "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"", + "\"csv-format\"", "\"always-send\"", "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"", @@ -5585,22 +5450,23 @@ namespace isc { namespace dhcp { "ddns_override_client_update", "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value", "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24", "ddns_update_on_renew", - "hostname_char_set", "$@25", "hostname_char_replacement", "$@26", - "store_extended_info", "statistic_default_sample_count", - "statistic_default_sample_age", "server_tag", "$@27", - "ip_reservations_unique", "interfaces_config", "$@28", "sub_interfaces6", - "$@29", "interfaces_config_params", "interfaces_config_param", - "interfaces_list", "$@30", "re_detect", "lease_database", "$@31", - "hosts_database", "$@32", "hosts_databases", "$@33", "database_list", - "not_empty_database_list", "database", "$@34", "database_map_params", - "database_map_param", "database_type", "$@35", "db_type", "user", "$@36", - "password", "$@37", "host", "$@38", "port", "name", "$@39", "persist", - "lfc_interval", "readonly", "connect_timeout", "reconnect_wait_time", - "max_row_errors", "request_timeout", "tcp_keepalive", "tcp_nodelay", - "contact_points", "$@40", "max_reconnect_tries", "keyspace", "$@41", - "consistency", "$@42", "serial_consistency", "$@43", "sanity_checks", - "$@44", "sanity_checks_params", "sanity_checks_param", "lease_checks", - "$@45", "mac_sources", "$@46", "mac_sources_list", "mac_sources_value", + "ddns_use_conflict_resolution", "hostname_char_set", "$@25", + "hostname_char_replacement", "$@26", "store_extended_info", + "statistic_default_sample_count", "statistic_default_sample_age", + "server_tag", "$@27", "ip_reservations_unique", "interfaces_config", + "$@28", "sub_interfaces6", "$@29", "interfaces_config_params", + "interfaces_config_param", "interfaces_list", "$@30", "re_detect", + "lease_database", "$@31", "hosts_database", "$@32", "hosts_databases", + "$@33", "database_list", "not_empty_database_list", "database", "$@34", + "database_map_params", "database_map_param", "database_type", "$@35", + "db_type", "user", "$@36", "password", "$@37", "host", "$@38", "port", + "name", "$@39", "persist", "lfc_interval", "readonly", "connect_timeout", + "reconnect_wait_time", "max_row_errors", "request_timeout", + "tcp_keepalive", "tcp_nodelay", "contact_points", "$@40", + "max_reconnect_tries", "keyspace", "$@41", "consistency", "$@42", + "serial_consistency", "$@43", "sanity_checks", "$@44", + "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@45", + "mac_sources", "$@46", "mac_sources_list", "mac_sources_value", "duid_id", "string_id", "host_reservation_identifiers", "$@47", "host_reservation_identifiers_list", "host_reservation_identifier", "hw_address_id", "flex_id", "relay_supplied_options", "$@48", @@ -5675,113 +5541,114 @@ namespace isc { namespace dhcp { "output_params_list", "output_params", "output", "$@133", "flush", "maxsize", "maxver", "pattern", "$@134", YY_NULLPTR }; -#endif - #if PARSER6_DEBUG - const short + const unsigned short int Dhcp6Parser::yyrline_[] = { - 0, 287, 287, 287, 288, 288, 289, 289, 290, 290, - 291, 291, 292, 292, 293, 293, 294, 294, 295, 295, - 296, 296, 297, 297, 298, 298, 299, 299, 300, 300, - 308, 309, 310, 311, 312, 313, 314, 317, 322, 322, - 333, 336, 337, 340, 345, 353, 353, 360, 361, 364, - 368, 375, 375, 382, 383, 386, 390, 401, 410, 410, - 425, 425, 442, 442, 451, 452, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 516, 516, 525, 531, 537, 543, 549, - 555, 561, 567, 573, 579, 585, 591, 597, 603, 609, - 615, 621, 627, 627, 636, 639, 642, 645, 648, 654, - 654, 663, 663, 672, 678, 678, 687, 687, 696, 702, - 708, 714, 714, 723, 729, 729, 741, 741, 750, 751, - 754, 755, 756, 757, 758, 761, 761, 772, 778, 778, - 791, 791, 804, 804, 815, 816, 819, 820, 823, 823, - 833, 834, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 860, 860, 868, 869, 870, 871, 874, - 874, 883, 883, 892, 892, 901, 907, 907, 916, 922, - 928, 934, 940, 946, 952, 958, 964, 970, 970, 979, - 985, 985, 994, 994, 1003, 1003, 1012, 1012, 1023, 1024, - 1026, 1028, 1028, 1047, 1047, 1058, 1059, 1062, 1063, 1066, - 1071, 1076, 1076, 1087, 1088, 1091, 1092, 1093, 1096, 1101, - 1108, 1108, 1121, 1121, 1134, 1135, 1138, 1139, 1140, 1141, - 1142, 1143, 1146, 1152, 1158, 1164, 1164, 1175, 1176, 1179, - 1180, 1183, 1183, 1193, 1193, 1203, 1204, 1205, 1208, 1209, - 1212, 1212, 1221, 1221, 1230, 1230, 1242, 1243, 1246, 1247, - 1248, 1249, 1250, 1251, 1254, 1260, 1266, 1272, 1278, 1284, - 1293, 1293, 1307, 1308, 1311, 1312, 1319, 1319, 1345, 1345, - 1356, 1357, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, - 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, - 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, - 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1402, 1402, 1411, 1411, 1420, 1420, 1429, 1429, 1438, - 1438, 1449, 1449, 1457, 1458, 1459, 1460, 1463, 1469, 1477, - 1477, 1489, 1490, 1494, 1495, 1498, 1498, 1506, 1507, 1510, - 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, - 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, - 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, - 1541, 1542, 1543, 1544, 1545, 1552, 1552, 1566, 1566, 1575, - 1576, 1579, 1580, 1585, 1585, 1600, 1600, 1614, 1615, 1618, - 1619, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, - 1631, 1634, 1636, 1642, 1644, 1644, 1653, 1653, 1662, 1662, - 1671, 1673, 1673, 1682, 1692, 1692, 1705, 1706, 1711, 1712, - 1717, 1717, 1729, 1729, 1741, 1742, 1747, 1748, 1753, 1754, - 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1764, 1766, 1766, - 1775, 1777, 1779, 1785, 1794, 1794, 1807, 1808, 1811, 1812, - 1815, 1815, 1825, 1825, 1835, 1836, 1839, 1840, 1841, 1842, - 1843, 1844, 1845, 1848, 1848, 1857, 1857, 1882, 1882, 1912, - 1912, 1925, 1926, 1929, 1930, 1933, 1933, 1945, 1945, 1957, - 1958, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, - 1970, 1971, 1974, 1974, 1983, 1989, 1989, 1998, 2004, 2013, - 2013, 2024, 2025, 2028, 2029, 2032, 2032, 2041, 2041, 2050, - 2051, 2054, 2055, 2059, 2060, 2061, 2062, 2063, 2064, 2065, - 2066, 2067, 2068, 2069, 2072, 2072, 2083, 2083, 2094, 2094, - 2103, 2103, 2112, 2112, 2121, 2121, 2130, 2130, 2144, 2144, - 2155, 2156, 2159, 2159, 2171, 2171, 2182, 2183, 2186, 2186, - 2196, 2197, 2200, 2201, 2204, 2205, 2206, 2207, 2208, 2209, - 2210, 2213, 2215, 2215, 2224, 2233, 2233, 2246, 2247, 2250, - 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2261, 2261, - 2269, 2270, 2271, 2274, 2280, 2280, 2289, 2295, 2303, 2311, - 2311, 2322, 2323, 2326, 2327, 2328, 2329, 2330, 2333, 2333, - 2342, 2342, 2354, 2354, 2367, 2368, 2371, 2372, 2373, 2374, - 2375, 2376, 2379, 2385, 2385, 2394, 2400, 2400, 2410, 2410, - 2423, 2423, 2433, 2434, 2437, 2438, 2439, 2440, 2441, 2442, - 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, - 2453, 2454, 2457, 2464, 2464, 2473, 2473, 2482, 2488, 2488, - 2497, 2503, 2509, 2509, 2518, 2519, 2522, 2522, 2532, 2539, - 2546, 2546, 2555, 2555, 2565, 2565, 2575, 2575, 2587, 2587, - 2599, 2599, 2609, 2610, 2614, 2615, 2618, 2618, 2629, 2637, - 2637, 2650, 2651, 2655, 2655, 2663, 2664, 2667, 2668, 2669, - 2670, 2671, 2672, 2673, 2676, 2682, 2682, 2691, 2691, 2702, - 2703, 2706, 2706, 2714, 2715, 2718, 2719, 2720, 2721, 2722, - 2725, 2725, 2734, 2740, 2746, 2752, 2752 + 0, 288, 288, 288, 289, 289, 290, 290, 291, 291, + 292, 292, 293, 293, 294, 294, 295, 295, 296, 296, + 297, 297, 298, 298, 299, 299, 300, 300, 301, 301, + 309, 310, 311, 312, 313, 314, 315, 318, 323, 323, + 334, 337, 338, 341, 346, 354, 354, 361, 362, 365, + 369, 376, 376, 383, 384, 387, 391, 402, 411, 411, + 426, 426, 443, 443, 452, 453, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 518, 518, 527, 533, 539, 545, + 551, 557, 563, 569, 575, 581, 587, 593, 599, 605, + 611, 617, 623, 629, 629, 638, 641, 644, 647, 650, + 656, 656, 665, 665, 674, 680, 686, 686, 695, 695, + 704, 710, 716, 722, 722, 731, 737, 737, 749, 749, + 758, 759, 762, 763, 764, 765, 766, 769, 769, 780, + 786, 786, 799, 799, 812, 812, 823, 824, 827, 828, + 831, 831, 841, 842, 845, 846, 847, 848, 849, 850, + 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, + 861, 862, 863, 864, 865, 868, 868, 876, 877, 878, + 879, 882, 882, 891, 891, 900, 900, 909, 915, 915, + 924, 930, 936, 942, 948, 954, 960, 966, 972, 978, + 978, 987, 993, 993, 1002, 1002, 1011, 1011, 1020, 1020, + 1031, 1032, 1034, 1036, 1036, 1055, 1055, 1066, 1067, 1070, + 1071, 1074, 1079, 1084, 1084, 1095, 1096, 1099, 1100, 1101, + 1104, 1109, 1116, 1116, 1129, 1129, 1142, 1143, 1146, 1147, + 1148, 1149, 1150, 1151, 1154, 1160, 1166, 1172, 1172, 1183, + 1184, 1187, 1188, 1191, 1191, 1201, 1201, 1211, 1212, 1213, + 1216, 1217, 1220, 1220, 1229, 1229, 1238, 1238, 1250, 1251, + 1254, 1255, 1256, 1257, 1258, 1259, 1262, 1268, 1274, 1280, + 1286, 1292, 1301, 1301, 1315, 1316, 1319, 1320, 1327, 1327, + 1353, 1353, 1364, 1365, 1369, 1370, 1371, 1372, 1373, 1374, + 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, + 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1406, 1407, 1408, 1411, 1411, 1420, 1420, 1429, 1429, + 1438, 1438, 1447, 1447, 1458, 1458, 1466, 1467, 1468, 1469, + 1472, 1478, 1486, 1486, 1498, 1499, 1503, 1504, 1507, 1507, + 1515, 1516, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, + 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, + 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, + 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1562, + 1562, 1576, 1576, 1585, 1586, 1589, 1590, 1595, 1595, 1610, + 1610, 1624, 1625, 1628, 1629, 1632, 1633, 1634, 1635, 1636, + 1637, 1638, 1639, 1640, 1641, 1644, 1646, 1652, 1654, 1654, + 1663, 1663, 1672, 1672, 1681, 1683, 1683, 1692, 1702, 1702, + 1715, 1716, 1721, 1722, 1727, 1727, 1739, 1739, 1751, 1752, + 1757, 1758, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, + 1771, 1774, 1776, 1776, 1785, 1787, 1789, 1795, 1804, 1804, + 1817, 1818, 1821, 1822, 1825, 1825, 1835, 1835, 1845, 1846, + 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1858, 1858, 1867, + 1867, 1892, 1892, 1922, 1922, 1935, 1936, 1939, 1940, 1943, + 1943, 1955, 1955, 1967, 1968, 1971, 1972, 1973, 1974, 1975, + 1976, 1977, 1978, 1979, 1980, 1981, 1984, 1984, 1993, 1999, + 1999, 2008, 2014, 2023, 2023, 2034, 2035, 2038, 2039, 2042, + 2042, 2051, 2051, 2060, 2061, 2064, 2065, 2069, 2070, 2071, + 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2082, 2082, + 2093, 2093, 2104, 2104, 2113, 2113, 2122, 2122, 2131, 2131, + 2140, 2140, 2154, 2154, 2165, 2166, 2169, 2169, 2181, 2181, + 2192, 2193, 2196, 2196, 2206, 2207, 2210, 2211, 2214, 2215, + 2216, 2217, 2218, 2219, 2220, 2223, 2225, 2225, 2234, 2243, + 2243, 2256, 2257, 2260, 2261, 2262, 2263, 2264, 2265, 2266, + 2267, 2268, 2271, 2271, 2279, 2280, 2281, 2284, 2290, 2290, + 2299, 2305, 2313, 2321, 2321, 2332, 2333, 2336, 2337, 2338, + 2339, 2340, 2343, 2343, 2352, 2352, 2364, 2364, 2377, 2378, + 2381, 2382, 2383, 2384, 2385, 2386, 2389, 2395, 2395, 2404, + 2410, 2410, 2420, 2420, 2433, 2433, 2443, 2444, 2447, 2448, + 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, + 2459, 2460, 2461, 2462, 2463, 2464, 2467, 2474, 2474, 2483, + 2483, 2492, 2498, 2498, 2507, 2513, 2519, 2519, 2528, 2529, + 2532, 2532, 2542, 2549, 2556, 2556, 2565, 2565, 2575, 2575, + 2585, 2585, 2597, 2597, 2609, 2609, 2619, 2620, 2624, 2625, + 2628, 2628, 2639, 2647, 2647, 2660, 2661, 2665, 2665, 2673, + 2674, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2686, 2692, + 2692, 2701, 2701, 2712, 2713, 2716, 2716, 2724, 2725, 2728, + 2729, 2730, 2731, 2732, 2735, 2735, 2744, 2750, 2756, 2762, + 2762 }; + // Print the state stack on the debug stream. void - Dhcp6Parser::yy_stack_print_ () const + Dhcp6Parser::yystack_print_ () { *yycdebug_ << "Stack now"; for (stack_type::const_iterator i = yystack_.begin (), i_end = yystack_.end (); i != i_end; ++i) - *yycdebug_ << ' ' << int (i->state); - *yycdebug_ << '\n'; + *yycdebug_ << ' ' << i->state; + *yycdebug_ << std::endl; } + // Report on the debug stream that the rule \a yyrule is going to be reduced. void - Dhcp6Parser::yy_reduce_print_ (int yyrule) const + Dhcp6Parser::yy_reduce_print_ (int yyrule) { - int yylno = yyrline_[yyrule]; + unsigned int yylno = yyrline_[yyrule]; int yynrhs = yyr2_[yyrule]; // Print the symbols being reduced, and their result. *yycdebug_ << "Reducing stack by rule " << yyrule - 1 - << " (line " << yylno << "):\n"; + << " (line " << yylno << "):" << std::endl; // The symbols being reduced. for (int yyi = 0; yyi < yynrhs; yyi++) YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", @@ -5790,11 +5657,10 @@ namespace isc { namespace dhcp { #endif // PARSER6_DEBUG -#line 14 "dhcp6_parser.yy" +#line 14 "dhcp6_parser.yy" // lalr1.cc:1167 } } // isc::dhcp -#line 5796 "dhcp6_parser.cc" - -#line 2761 "dhcp6_parser.yy" +#line 5663 "dhcp6_parser.cc" // lalr1.cc:1167 +#line 2771 "dhcp6_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index a410fca6b0..b6cb6e538f 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.0.4. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. +// Copyright (C) 2002-2015 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,7 +30,6 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. - /** ** \file dhcp6_parser.h ** Define the isc::dhcp::parser class. @@ -38,14 +37,10 @@ // C++ LALR(1) parser skeleton written by Akim Demaille. -// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, -// especially those whose name start with YY_ or yy_. They are -// private implementation details that can be changed or removed. - #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED -// "%code requires" blocks. -#line 17 "dhcp6_parser.yy" +// // "%code requires" blocks. +#line 17 "dhcp6_parser.yy" // lalr1.cc:377 #include #include @@ -57,7 +52,7 @@ using namespace isc::dhcp; using namespace isc::data; using namespace std; -#line 61 "dhcp6_parser.h" +#line 56 "dhcp6_parser.h" // lalr1.cc:377 # include # include // std::abort @@ -65,64 +60,39 @@ using namespace std; # include # include # include - -#if defined __cplusplus -# define YY_CPLUSPLUS __cplusplus -#else -# define YY_CPLUSPLUS 199711L -#endif - -// Support move semantics when possible. -#if 201103L <= YY_CPLUSPLUS -# define YY_MOVE std::move -# define YY_MOVE_OR_COPY move -# define YY_MOVE_REF(Type) Type&& -# define YY_RVREF(Type) Type&& -# define YY_COPY(Type) Type -#else -# define YY_MOVE -# define YY_MOVE_OR_COPY copy -# define YY_MOVE_REF(Type) Type& -# define YY_RVREF(Type) const Type& -# define YY_COPY(Type) const Type& -#endif - -// Support noexcept when possible. -#if 201103L <= YY_CPLUSPLUS -# define YY_NOEXCEPT noexcept -# define YY_NOTHROW -#else -# define YY_NOEXCEPT -# define YY_NOTHROW throw () -#endif - -// Support constexpr when possible. -#if 201703 <= YY_CPLUSPLUS -# define YY_CONSTEXPR constexpr -#else -# define YY_CONSTEXPR -#endif +# include "stack.hh" # include "location.hh" #include -#ifndef YY_ASSERT +#ifndef YYASSERT # include -# define YY_ASSERT assert +# define YYASSERT assert #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) # else -# define YY_ATTRIBUTE_UNUSED +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -133,13 +103,13 @@ using namespace std; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -152,39 +122,6 @@ using namespace std; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - /* Debug traces. */ #ifndef PARSER6_DEBUG # if defined YYDEBUG @@ -198,182 +135,120 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER6_DEBUG */ -#line 14 "dhcp6_parser.yy" +#line 14 "dhcp6_parser.yy" // lalr1.cc:377 namespace isc { namespace dhcp { -#line 204 "dhcp6_parser.h" - +#line 141 "dhcp6_parser.h" // lalr1.cc:377 - /// A Bison parser. - class Dhcp6Parser - { - public: -#ifndef PARSER6_STYPE - /// A buffer to store and retrieve objects. + /// A char[S] buffer to store and retrieve objects. /// /// Sort of a variant, but does not keep track of the nature /// of the stored data, since that knowledge is available - /// via the current parser state. - class semantic_type + /// via the current state. + template + struct variant { - public: /// Type of *this. - typedef semantic_type self_type; + typedef variant self_type; /// Empty construction. - semantic_type () YY_NOEXCEPT - : yybuffer_ () - , yytypeid_ (YY_NULLPTR) + variant () + : yytypeid_ (YY_NULLPTR) {} /// Construct and fill. template - semantic_type (YY_RVREF (T) t) + variant (const T& t) : yytypeid_ (&typeid (T)) { - YY_ASSERT (sizeof (T) <= size); - new (yyas_ ()) T (YY_MOVE (t)); + YYASSERT (sizeof (T) <= S); + new (yyas_ ()) T (t); } -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - semantic_type (const self_type&) = delete; - /// Non copyable. - self_type& operator= (const self_type&) = delete; -#endif - /// Destruction, allowed only if empty. - ~semantic_type () YY_NOEXCEPT + ~variant () { - YY_ASSERT (!yytypeid_); + YYASSERT (!yytypeid_); } -# if 201103L <= YY_CPLUSPLUS - /// Instantiate a \a T in here from \a t. - template - T& - emplace (U&&... u) - { - YY_ASSERT (!yytypeid_); - YY_ASSERT (sizeof (T) <= size); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (std::forward (u)...); - } -# else /// Instantiate an empty \a T in here. template T& - emplace () + build () { - YY_ASSERT (!yytypeid_); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (); + return *new (yyas_ ()) T; } /// Instantiate a \a T in here from \a t. template T& - emplace (const T& t) + build (const T& t) { - YY_ASSERT (!yytypeid_); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (t); } -# endif - - /// Instantiate an empty \a T in here. - /// Obsolete, use emplace. - template - T& - build () - { - return emplace (); - } - - /// Instantiate a \a T in here from \a t. - /// Obsolete, use emplace. - template - T& - build (const T& t) - { - return emplace (t); - } /// Accessor to a built \a T. template T& - as () YY_NOEXCEPT + as () { - YY_ASSERT (yytypeid_); - YY_ASSERT (*yytypeid_ == typeid (T)); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (*yytypeid_ == typeid (T)); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } /// Const accessor to a built \a T (for %printer). template const T& - as () const YY_NOEXCEPT + as () const { - YY_ASSERT (yytypeid_); - YY_ASSERT (*yytypeid_ == typeid (T)); - YY_ASSERT (sizeof (T) <= size); + YYASSERT (*yytypeid_ == typeid (T)); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } - /// Swap the content with \a that, of same type. + /// Swap the content with \a other, of same type. /// /// Both variants must be built beforehand, because swapping the actual /// data requires reading it (with as()), and this is not possible on /// unconstructed variants: it would require some dynamic testing, which - /// should not be the variant's responsibility. + /// should not be the variant's responsability. /// Swapping between built and (possibly) non-built is done with - /// self_type::move (). + /// variant::move (). template void - swap (self_type& that) YY_NOEXCEPT + swap (self_type& other) { - YY_ASSERT (yytypeid_); - YY_ASSERT (*yytypeid_ == *that.yytypeid_); - std::swap (as (), that.as ()); + YYASSERT (yytypeid_); + YYASSERT (*yytypeid_ == *other.yytypeid_); + std::swap (as (), other.as ()); } - /// Move the content of \a that to this. + /// Move the content of \a other to this. /// - /// Destroys \a that. - template - void - move (self_type& that) - { -# if 201103L <= YY_CPLUSPLUS - emplace (std::move (that.as ())); -# else - emplace (); - swap (that); -# endif - that.destroy (); - } - -# if 201103L <= YY_CPLUSPLUS - /// Move the content of \a that to this. + /// Destroys \a other. template void - move (self_type&& that) + move (self_type& other) { - emplace (std::move (that.as ())); - that.destroy (); + build (); + swap (other); + other.destroy (); } -#endif - /// Copy the content of \a that to this. + /// Copy the content of \a other to this. template void - copy (const self_type& that) + copy (const self_type& other) { - emplace (that.as ()); + build (other.as ()); } /// Destroy the stored \a T. @@ -386,17 +261,14 @@ namespace isc { namespace dhcp { } private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - semantic_type (const self_type&); - /// Non copyable. - self_type& operator= (const self_type&); -#endif + /// Prohibit blind copies. + self_type& operator=(const self_type&); + variant (const self_type&); /// Accessor to raw memory as \a T. template T* - yyas_ () YY_NOEXCEPT + yyas_ () { void *yyp = yybuffer_.yyraw; return static_cast (yyp); @@ -405,12 +277,30 @@ namespace isc { namespace dhcp { /// Const accessor to raw memory as \a T. template const T* - yyas_ () const YY_NOEXCEPT + yyas_ () const { const void *yyp = yybuffer_.yyraw; return static_cast (yyp); } + union + { + /// Strongest alignment constraints. + long double yyalign_me; + /// A buffer large enough to store any of the semantic values. + char yyraw[S]; + } yybuffer_; + + /// Whether the content is built: if defined, the name of the stored type. + const std::type_info *yytypeid_; + }; + + + /// A Bison parser. + class Dhcp6Parser + { + public: +#ifndef PARSER6_STYPE /// An auxiliary type to compute the largest semantic type. union union_type { @@ -421,37 +311,23 @@ namespace isc { namespace dhcp { // hr_mode // duid_type // ncr_protocol_value - char dummy1[sizeof (ElementPtr)]; + char dummy1[sizeof(ElementPtr)]; // "boolean" - char dummy2[sizeof (bool)]; + char dummy2[sizeof(bool)]; // "floating point" - char dummy3[sizeof (double)]; + char dummy3[sizeof(double)]; // "integer" - char dummy4[sizeof (int64_t)]; + char dummy4[sizeof(int64_t)]; // "constant string" - char dummy5[sizeof (std::string)]; - }; - - /// The size of the largest semantic type. - enum { size = sizeof (union_type) }; - - /// A buffer to store semantic values. - union - { - /// Strongest alignment constraints. - long double yyalign_me; - /// A buffer large enough to store any of the semantic values. - char yyraw[size]; - } yybuffer_; - - /// Whether the content is built: if defined, the name of the stored type. - const std::type_info *yytypeid_; - }; + char dummy5[sizeof(std::string)]; +}; + /// Symbol semantic values. + typedef variant semantic_type; #else typedef PARSER6_STYPE semantic_type; #endif @@ -461,888 +337,235 @@ namespace isc { namespace dhcp { /// Syntax errors thrown from user actions. struct syntax_error : std::runtime_error { - syntax_error (const location_type& l, const std::string& m) - : std::runtime_error (m) - , location (l) - {} - - syntax_error (const syntax_error& s) - : std::runtime_error (s.what ()) - , location (s.location) - {} - - ~syntax_error () YY_NOEXCEPT YY_NOTHROW; - + syntax_error (const location_type& l, const std::string& m); location_type location; }; - /// Token kinds. + /// Tokens. struct token { - enum token_kind_type - { - TOKEN_PARSER6_EMPTY = -2, - TOKEN_END = 0, // "end of file" - TOKEN_PARSER6_error = 256, // error - TOKEN_PARSER6_UNDEF = 257, // "invalid token" - TOKEN_COMMA = 258, // "," - TOKEN_COLON = 259, // ":" - TOKEN_LSQUARE_BRACKET = 260, // "[" - TOKEN_RSQUARE_BRACKET = 261, // "]" - TOKEN_LCURLY_BRACKET = 262, // "{" - TOKEN_RCURLY_BRACKET = 263, // "}" - TOKEN_NULL_TYPE = 264, // "null" - TOKEN_DHCP6 = 265, // "Dhcp6" - TOKEN_DATA_DIRECTORY = 266, // "data-directory" - TOKEN_CONFIG_CONTROL = 267, // "config-control" - TOKEN_CONFIG_DATABASES = 268, // "config-databases" - TOKEN_CONFIG_FETCH_WAIT_TIME = 269, // "config-fetch-wait-time" - TOKEN_INTERFACES_CONFIG = 270, // "interfaces-config" - TOKEN_INTERFACES = 271, // "interfaces" - TOKEN_RE_DETECT = 272, // "re-detect" - TOKEN_LEASE_DATABASE = 273, // "lease-database" - TOKEN_HOSTS_DATABASE = 274, // "hosts-database" - TOKEN_HOSTS_DATABASES = 275, // "hosts-databases" - TOKEN_TYPE = 276, // "type" - TOKEN_MEMFILE = 277, // "memfile" - TOKEN_MYSQL = 278, // "mysql" - TOKEN_POSTGRESQL = 279, // "postgresql" - TOKEN_CQL = 280, // "cql" - TOKEN_USER = 281, // "user" - TOKEN_PASSWORD = 282, // "password" - TOKEN_HOST = 283, // "host" - TOKEN_PORT = 284, // "port" - TOKEN_PERSIST = 285, // "persist" - TOKEN_LFC_INTERVAL = 286, // "lfc-interval" - TOKEN_READONLY = 287, // "readonly" - TOKEN_CONNECT_TIMEOUT = 288, // "connect-timeout" - TOKEN_CONTACT_POINTS = 289, // "contact-points" - TOKEN_MAX_RECONNECT_TRIES = 290, // "max-reconnect-tries" - TOKEN_RECONNECT_WAIT_TIME = 291, // "reconnect-wait-time" - TOKEN_KEYSPACE = 292, // "keyspace" - TOKEN_CONSISTENCY = 293, // "consistency" - TOKEN_SERIAL_CONSISTENCY = 294, // "serial-consistency" - TOKEN_REQUEST_TIMEOUT = 295, // "request-timeout" - TOKEN_TCP_KEEPALIVE = 296, // "tcp-keepalive" - TOKEN_TCP_NODELAY = 297, // "tcp-nodelay" - TOKEN_MAX_ROW_ERRORS = 298, // "max-row-errors" - TOKEN_PREFERRED_LIFETIME = 299, // "preferred-lifetime" - TOKEN_MIN_PREFERRED_LIFETIME = 300, // "min-preferred-lifetime" - TOKEN_MAX_PREFERRED_LIFETIME = 301, // "max-preferred-lifetime" - TOKEN_VALID_LIFETIME = 302, // "valid-lifetime" - TOKEN_MIN_VALID_LIFETIME = 303, // "min-valid-lifetime" - TOKEN_MAX_VALID_LIFETIME = 304, // "max-valid-lifetime" - TOKEN_RENEW_TIMER = 305, // "renew-timer" - TOKEN_REBIND_TIMER = 306, // "rebind-timer" - TOKEN_CALCULATE_TEE_TIMES = 307, // "calculate-tee-times" - TOKEN_T1_PERCENT = 308, // "t1-percent" - TOKEN_T2_PERCENT = 309, // "t2-percent" - TOKEN_CACHE_THRESHOLD = 310, // "cache-threshold" - TOKEN_CACHE_MAX_AGE = 311, // "cache-max-age" - TOKEN_DECLINE_PROBATION_PERIOD = 312, // "decline-probation-period" - TOKEN_SERVER_TAG = 313, // "server-tag" - TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 314, // "statistic-default-sample-count" - TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 315, // "statistic-default-sample-age" - TOKEN_DDNS_SEND_UPDATES = 316, // "ddns-send-updates" - TOKEN_DDNS_OVERRIDE_NO_UPDATE = 317, // "ddns-override-no-update" - TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 318, // "ddns-override-client-update" - TOKEN_DDNS_REPLACE_CLIENT_NAME = 319, // "ddns-replace-client-name" - TOKEN_DDNS_GENERATED_PREFIX = 320, // "ddns-generated-prefix" - TOKEN_DDNS_QUALIFYING_SUFFIX = 321, // "ddns-qualifying-suffix" - TOKEN_DDNS_UPDATE_ON_RENEW = 322, // "ddns-update-on-renew" - TOKEN_STORE_EXTENDED_INFO = 323, // "store-extended-info" - TOKEN_SUBNET6 = 324, // "subnet6" - TOKEN_OPTION_DEF = 325, // "option-def" - TOKEN_OPTION_DATA = 326, // "option-data" - TOKEN_NAME = 327, // "name" - TOKEN_DATA = 328, // "data" - TOKEN_CODE = 329, // "code" - TOKEN_SPACE = 330, // "space" - TOKEN_CSV_FORMAT = 331, // "csv-format" - TOKEN_ALWAYS_SEND = 332, // "always-send" - TOKEN_RECORD_TYPES = 333, // "record-types" - TOKEN_ENCAPSULATE = 334, // "encapsulate" - TOKEN_ARRAY = 335, // "array" - TOKEN_POOLS = 336, // "pools" - TOKEN_POOL = 337, // "pool" - TOKEN_PD_POOLS = 338, // "pd-pools" - TOKEN_PREFIX = 339, // "prefix" - TOKEN_PREFIX_LEN = 340, // "prefix-len" - TOKEN_EXCLUDED_PREFIX = 341, // "excluded-prefix" - TOKEN_EXCLUDED_PREFIX_LEN = 342, // "excluded-prefix-len" - TOKEN_DELEGATED_LEN = 343, // "delegated-len" - TOKEN_USER_CONTEXT = 344, // "user-context" - TOKEN_COMMENT = 345, // "comment" - TOKEN_SUBNET = 346, // "subnet" - TOKEN_INTERFACE = 347, // "interface" - TOKEN_INTERFACE_ID = 348, // "interface-id" - TOKEN_ID = 349, // "id" - TOKEN_RAPID_COMMIT = 350, // "rapid-commit" - TOKEN_RESERVATION_MODE = 351, // "reservation-mode" - TOKEN_DISABLED = 352, // "disabled" - TOKEN_OUT_OF_POOL = 353, // "out-of-pool" - TOKEN_GLOBAL = 354, // "global" - TOKEN_ALL = 355, // "all" - TOKEN_SHARED_NETWORKS = 356, // "shared-networks" - TOKEN_MAC_SOURCES = 357, // "mac-sources" - TOKEN_RELAY_SUPPLIED_OPTIONS = 358, // "relay-supplied-options" - TOKEN_HOST_RESERVATION_IDENTIFIERS = 359, // "host-reservation-identifiers" - TOKEN_SANITY_CHECKS = 360, // "sanity-checks" - TOKEN_LEASE_CHECKS = 361, // "lease-checks" - TOKEN_CLIENT_CLASSES = 362, // "client-classes" - TOKEN_REQUIRE_CLIENT_CLASSES = 363, // "require-client-classes" - TOKEN_TEST = 364, // "test" - TOKEN_ONLY_IF_REQUIRED = 365, // "only-if-required" - TOKEN_CLIENT_CLASS = 366, // "client-class" - TOKEN_RESERVATIONS = 367, // "reservations" - TOKEN_IP_ADDRESSES = 368, // "ip-addresses" - TOKEN_PREFIXES = 369, // "prefixes" - TOKEN_DUID = 370, // "duid" - TOKEN_HW_ADDRESS = 371, // "hw-address" - TOKEN_HOSTNAME = 372, // "hostname" - TOKEN_FLEX_ID = 373, // "flex-id" - TOKEN_RELAY = 374, // "relay" - TOKEN_IP_ADDRESS = 375, // "ip-address" - TOKEN_HOOKS_LIBRARIES = 376, // "hooks-libraries" - TOKEN_LIBRARY = 377, // "library" - TOKEN_PARAMETERS = 378, // "parameters" - TOKEN_EXPIRED_LEASES_PROCESSING = 379, // "expired-leases-processing" - TOKEN_RECLAIM_TIMER_WAIT_TIME = 380, // "reclaim-timer-wait-time" - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 381, // "flush-reclaimed-timer-wait-time" - TOKEN_HOLD_RECLAIMED_TIME = 382, // "hold-reclaimed-time" - TOKEN_MAX_RECLAIM_LEASES = 383, // "max-reclaim-leases" - TOKEN_MAX_RECLAIM_TIME = 384, // "max-reclaim-time" - TOKEN_UNWARNED_RECLAIM_CYCLES = 385, // "unwarned-reclaim-cycles" - TOKEN_SERVER_ID = 386, // "server-id" - TOKEN_LLT = 387, // "LLT" - TOKEN_EN = 388, // "EN" - TOKEN_LL = 389, // "LL" - TOKEN_IDENTIFIER = 390, // "identifier" - TOKEN_HTYPE = 391, // "htype" - TOKEN_TIME = 392, // "time" - TOKEN_ENTERPRISE_ID = 393, // "enterprise-id" - TOKEN_DHCP4O6_PORT = 394, // "dhcp4o6-port" - TOKEN_DHCP_MULTI_THREADING = 395, // "multi-threading" - TOKEN_ENABLE_MULTI_THREADING = 396, // "enable-multi-threading" - TOKEN_THREAD_POOL_SIZE = 397, // "thread-pool-size" - TOKEN_PACKET_QUEUE_SIZE = 398, // "packet-queue-size" - TOKEN_CONTROL_SOCKET = 399, // "control-socket" - TOKEN_SOCKET_TYPE = 400, // "socket-type" - TOKEN_SOCKET_NAME = 401, // "socket-name" - TOKEN_DHCP_QUEUE_CONTROL = 402, // "dhcp-queue-control" - TOKEN_ENABLE_QUEUE = 403, // "enable-queue" - TOKEN_QUEUE_TYPE = 404, // "queue-type" - TOKEN_CAPACITY = 405, // "capacity" - TOKEN_DHCP_DDNS = 406, // "dhcp-ddns" - TOKEN_ENABLE_UPDATES = 407, // "enable-updates" - TOKEN_QUALIFYING_SUFFIX = 408, // "qualifying-suffix" - TOKEN_SERVER_IP = 409, // "server-ip" - TOKEN_SERVER_PORT = 410, // "server-port" - TOKEN_SENDER_IP = 411, // "sender-ip" - TOKEN_SENDER_PORT = 412, // "sender-port" - TOKEN_MAX_QUEUE_SIZE = 413, // "max-queue-size" - TOKEN_NCR_PROTOCOL = 414, // "ncr-protocol" - TOKEN_NCR_FORMAT = 415, // "ncr-format" - TOKEN_OVERRIDE_NO_UPDATE = 416, // "override-no-update" - TOKEN_OVERRIDE_CLIENT_UPDATE = 417, // "override-client-update" - TOKEN_REPLACE_CLIENT_NAME = 418, // "replace-client-name" - TOKEN_GENERATED_PREFIX = 419, // "generated-prefix" - TOKEN_UDP = 420, // "UDP" - TOKEN_TCP = 421, // "TCP" - TOKEN_JSON = 422, // "JSON" - TOKEN_WHEN_PRESENT = 423, // "when-present" - TOKEN_NEVER = 424, // "never" - TOKEN_ALWAYS = 425, // "always" - TOKEN_WHEN_NOT_PRESENT = 426, // "when-not-present" - TOKEN_HOSTNAME_CHAR_SET = 427, // "hostname-char-set" - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 428, // "hostname-char-replacement" - TOKEN_IP_RESERVATIONS_UNIQUE = 429, // "ip-reservations-unique" - TOKEN_LOGGERS = 430, // "loggers" - TOKEN_OUTPUT_OPTIONS = 431, // "output_options" - TOKEN_OUTPUT = 432, // "output" - TOKEN_DEBUGLEVEL = 433, // "debuglevel" - TOKEN_SEVERITY = 434, // "severity" - TOKEN_FLUSH = 435, // "flush" - TOKEN_MAXSIZE = 436, // "maxsize" - TOKEN_MAXVER = 437, // "maxver" - TOKEN_PATTERN = 438, // "pattern" - TOKEN_TOPLEVEL_JSON = 439, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP6 = 440, // TOPLEVEL_DHCP6 - TOKEN_SUB_DHCP6 = 441, // SUB_DHCP6 - TOKEN_SUB_INTERFACES6 = 442, // SUB_INTERFACES6 - TOKEN_SUB_SUBNET6 = 443, // SUB_SUBNET6 - TOKEN_SUB_POOL6 = 444, // SUB_POOL6 - TOKEN_SUB_PD_POOL = 445, // SUB_PD_POOL - TOKEN_SUB_RESERVATION = 446, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 447, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 448, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 449, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 450, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 451, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 452, // SUB_CONFIG_CONTROL - TOKEN_STRING = 453, // "constant string" - TOKEN_INTEGER = 454, // "integer" - TOKEN_FLOAT = 455, // "floating point" - TOKEN_BOOLEAN = 456 // "boolean" + enum yytokentype + { + TOKEN_END = 0, + TOKEN_COMMA = 258, + TOKEN_COLON = 259, + TOKEN_LSQUARE_BRACKET = 260, + TOKEN_RSQUARE_BRACKET = 261, + TOKEN_LCURLY_BRACKET = 262, + TOKEN_RCURLY_BRACKET = 263, + TOKEN_NULL_TYPE = 264, + TOKEN_DHCP6 = 265, + TOKEN_DATA_DIRECTORY = 266, + TOKEN_CONFIG_CONTROL = 267, + TOKEN_CONFIG_DATABASES = 268, + TOKEN_CONFIG_FETCH_WAIT_TIME = 269, + TOKEN_INTERFACES_CONFIG = 270, + TOKEN_INTERFACES = 271, + TOKEN_RE_DETECT = 272, + TOKEN_LEASE_DATABASE = 273, + TOKEN_HOSTS_DATABASE = 274, + TOKEN_HOSTS_DATABASES = 275, + TOKEN_TYPE = 276, + TOKEN_MEMFILE = 277, + TOKEN_MYSQL = 278, + TOKEN_POSTGRESQL = 279, + TOKEN_CQL = 280, + TOKEN_USER = 281, + TOKEN_PASSWORD = 282, + TOKEN_HOST = 283, + TOKEN_PORT = 284, + TOKEN_PERSIST = 285, + TOKEN_LFC_INTERVAL = 286, + TOKEN_READONLY = 287, + TOKEN_CONNECT_TIMEOUT = 288, + TOKEN_CONTACT_POINTS = 289, + TOKEN_MAX_RECONNECT_TRIES = 290, + TOKEN_RECONNECT_WAIT_TIME = 291, + TOKEN_KEYSPACE = 292, + TOKEN_CONSISTENCY = 293, + TOKEN_SERIAL_CONSISTENCY = 294, + TOKEN_REQUEST_TIMEOUT = 295, + TOKEN_TCP_KEEPALIVE = 296, + TOKEN_TCP_NODELAY = 297, + TOKEN_MAX_ROW_ERRORS = 298, + TOKEN_PREFERRED_LIFETIME = 299, + TOKEN_MIN_PREFERRED_LIFETIME = 300, + TOKEN_MAX_PREFERRED_LIFETIME = 301, + TOKEN_VALID_LIFETIME = 302, + TOKEN_MIN_VALID_LIFETIME = 303, + TOKEN_MAX_VALID_LIFETIME = 304, + TOKEN_RENEW_TIMER = 305, + TOKEN_REBIND_TIMER = 306, + TOKEN_CALCULATE_TEE_TIMES = 307, + TOKEN_T1_PERCENT = 308, + TOKEN_T2_PERCENT = 309, + TOKEN_CACHE_THRESHOLD = 310, + TOKEN_CACHE_MAX_AGE = 311, + TOKEN_DECLINE_PROBATION_PERIOD = 312, + TOKEN_SERVER_TAG = 313, + TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 314, + TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 315, + TOKEN_DDNS_SEND_UPDATES = 316, + TOKEN_DDNS_OVERRIDE_NO_UPDATE = 317, + TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 318, + TOKEN_DDNS_REPLACE_CLIENT_NAME = 319, + TOKEN_DDNS_GENERATED_PREFIX = 320, + TOKEN_DDNS_QUALIFYING_SUFFIX = 321, + TOKEN_DDNS_UPDATE_ON_RENEW = 322, + TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 323, + TOKEN_STORE_EXTENDED_INFO = 324, + TOKEN_SUBNET6 = 325, + TOKEN_OPTION_DEF = 326, + TOKEN_OPTION_DATA = 327, + TOKEN_NAME = 328, + TOKEN_DATA = 329, + TOKEN_CODE = 330, + TOKEN_SPACE = 331, + TOKEN_CSV_FORMAT = 332, + TOKEN_ALWAYS_SEND = 333, + TOKEN_RECORD_TYPES = 334, + TOKEN_ENCAPSULATE = 335, + TOKEN_ARRAY = 336, + TOKEN_POOLS = 337, + TOKEN_POOL = 338, + TOKEN_PD_POOLS = 339, + TOKEN_PREFIX = 340, + TOKEN_PREFIX_LEN = 341, + TOKEN_EXCLUDED_PREFIX = 342, + TOKEN_EXCLUDED_PREFIX_LEN = 343, + TOKEN_DELEGATED_LEN = 344, + TOKEN_USER_CONTEXT = 345, + TOKEN_COMMENT = 346, + TOKEN_SUBNET = 347, + TOKEN_INTERFACE = 348, + TOKEN_INTERFACE_ID = 349, + TOKEN_ID = 350, + TOKEN_RAPID_COMMIT = 351, + TOKEN_RESERVATION_MODE = 352, + TOKEN_DISABLED = 353, + TOKEN_OUT_OF_POOL = 354, + TOKEN_GLOBAL = 355, + TOKEN_ALL = 356, + TOKEN_SHARED_NETWORKS = 357, + TOKEN_MAC_SOURCES = 358, + TOKEN_RELAY_SUPPLIED_OPTIONS = 359, + TOKEN_HOST_RESERVATION_IDENTIFIERS = 360, + TOKEN_SANITY_CHECKS = 361, + TOKEN_LEASE_CHECKS = 362, + TOKEN_CLIENT_CLASSES = 363, + TOKEN_REQUIRE_CLIENT_CLASSES = 364, + TOKEN_TEST = 365, + TOKEN_ONLY_IF_REQUIRED = 366, + TOKEN_CLIENT_CLASS = 367, + TOKEN_RESERVATIONS = 368, + TOKEN_IP_ADDRESSES = 369, + TOKEN_PREFIXES = 370, + TOKEN_DUID = 371, + TOKEN_HW_ADDRESS = 372, + TOKEN_HOSTNAME = 373, + TOKEN_FLEX_ID = 374, + TOKEN_RELAY = 375, + TOKEN_IP_ADDRESS = 376, + TOKEN_HOOKS_LIBRARIES = 377, + TOKEN_LIBRARY = 378, + TOKEN_PARAMETERS = 379, + TOKEN_EXPIRED_LEASES_PROCESSING = 380, + TOKEN_RECLAIM_TIMER_WAIT_TIME = 381, + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 382, + TOKEN_HOLD_RECLAIMED_TIME = 383, + TOKEN_MAX_RECLAIM_LEASES = 384, + TOKEN_MAX_RECLAIM_TIME = 385, + TOKEN_UNWARNED_RECLAIM_CYCLES = 386, + TOKEN_SERVER_ID = 387, + TOKEN_LLT = 388, + TOKEN_EN = 389, + TOKEN_LL = 390, + TOKEN_IDENTIFIER = 391, + TOKEN_HTYPE = 392, + TOKEN_TIME = 393, + TOKEN_ENTERPRISE_ID = 394, + TOKEN_DHCP4O6_PORT = 395, + TOKEN_DHCP_MULTI_THREADING = 396, + TOKEN_ENABLE_MULTI_THREADING = 397, + TOKEN_THREAD_POOL_SIZE = 398, + TOKEN_PACKET_QUEUE_SIZE = 399, + TOKEN_CONTROL_SOCKET = 400, + TOKEN_SOCKET_TYPE = 401, + TOKEN_SOCKET_NAME = 402, + TOKEN_DHCP_QUEUE_CONTROL = 403, + TOKEN_ENABLE_QUEUE = 404, + TOKEN_QUEUE_TYPE = 405, + TOKEN_CAPACITY = 406, + TOKEN_DHCP_DDNS = 407, + TOKEN_ENABLE_UPDATES = 408, + TOKEN_QUALIFYING_SUFFIX = 409, + TOKEN_SERVER_IP = 410, + TOKEN_SERVER_PORT = 411, + TOKEN_SENDER_IP = 412, + TOKEN_SENDER_PORT = 413, + TOKEN_MAX_QUEUE_SIZE = 414, + TOKEN_NCR_PROTOCOL = 415, + TOKEN_NCR_FORMAT = 416, + TOKEN_OVERRIDE_NO_UPDATE = 417, + TOKEN_OVERRIDE_CLIENT_UPDATE = 418, + TOKEN_REPLACE_CLIENT_NAME = 419, + TOKEN_GENERATED_PREFIX = 420, + TOKEN_UDP = 421, + TOKEN_TCP = 422, + TOKEN_JSON = 423, + TOKEN_WHEN_PRESENT = 424, + TOKEN_NEVER = 425, + TOKEN_ALWAYS = 426, + TOKEN_WHEN_NOT_PRESENT = 427, + TOKEN_HOSTNAME_CHAR_SET = 428, + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 429, + TOKEN_IP_RESERVATIONS_UNIQUE = 430, + TOKEN_LOGGERS = 431, + TOKEN_OUTPUT_OPTIONS = 432, + TOKEN_OUTPUT = 433, + TOKEN_DEBUGLEVEL = 434, + TOKEN_SEVERITY = 435, + TOKEN_FLUSH = 436, + TOKEN_MAXSIZE = 437, + TOKEN_MAXVER = 438, + TOKEN_PATTERN = 439, + TOKEN_TOPLEVEL_JSON = 440, + TOKEN_TOPLEVEL_DHCP6 = 441, + TOKEN_SUB_DHCP6 = 442, + TOKEN_SUB_INTERFACES6 = 443, + TOKEN_SUB_SUBNET6 = 444, + TOKEN_SUB_POOL6 = 445, + TOKEN_SUB_PD_POOL = 446, + TOKEN_SUB_RESERVATION = 447, + TOKEN_SUB_OPTION_DEFS = 448, + TOKEN_SUB_OPTION_DEF = 449, + TOKEN_SUB_OPTION_DATA = 450, + TOKEN_SUB_HOOKS_LIBRARY = 451, + TOKEN_SUB_DHCP_DDNS = 452, + TOKEN_SUB_CONFIG_CONTROL = 453, + TOKEN_STRING = 454, + TOKEN_INTEGER = 455, + TOKEN_FLOAT = 456, + TOKEN_BOOLEAN = 457 }; - /// Backward compatibility alias (Bison 3.6). - typedef token_kind_type yytokentype; }; - /// Token kind, as returned by yylex. - typedef token::yytokentype token_kind_type; + /// (External) token type, as returned by yylex. + typedef token::yytokentype token_type; - /// Backward compatibility alias (Bison 3.6). - typedef token_kind_type token_type; - - /// Symbol kinds. - struct symbol_kind - { - enum symbol_kind_type - { - YYNTOKENS = 202, ///< Number of tokens. - S_YYEMPTY = -2, - S_YYEOF = 0, // "end of file" - S_YYerror = 1, // error - S_YYUNDEF = 2, // "invalid token" - S_COMMA = 3, // "," - S_COLON = 4, // ":" - S_LSQUARE_BRACKET = 5, // "[" - S_RSQUARE_BRACKET = 6, // "]" - S_LCURLY_BRACKET = 7, // "{" - S_RCURLY_BRACKET = 8, // "}" - S_NULL_TYPE = 9, // "null" - S_DHCP6 = 10, // "Dhcp6" - S_DATA_DIRECTORY = 11, // "data-directory" - S_CONFIG_CONTROL = 12, // "config-control" - S_CONFIG_DATABASES = 13, // "config-databases" - S_CONFIG_FETCH_WAIT_TIME = 14, // "config-fetch-wait-time" - S_INTERFACES_CONFIG = 15, // "interfaces-config" - S_INTERFACES = 16, // "interfaces" - S_RE_DETECT = 17, // "re-detect" - S_LEASE_DATABASE = 18, // "lease-database" - S_HOSTS_DATABASE = 19, // "hosts-database" - S_HOSTS_DATABASES = 20, // "hosts-databases" - S_TYPE = 21, // "type" - S_MEMFILE = 22, // "memfile" - S_MYSQL = 23, // "mysql" - S_POSTGRESQL = 24, // "postgresql" - S_CQL = 25, // "cql" - S_USER = 26, // "user" - S_PASSWORD = 27, // "password" - S_HOST = 28, // "host" - S_PORT = 29, // "port" - S_PERSIST = 30, // "persist" - S_LFC_INTERVAL = 31, // "lfc-interval" - S_READONLY = 32, // "readonly" - S_CONNECT_TIMEOUT = 33, // "connect-timeout" - S_CONTACT_POINTS = 34, // "contact-points" - S_MAX_RECONNECT_TRIES = 35, // "max-reconnect-tries" - S_RECONNECT_WAIT_TIME = 36, // "reconnect-wait-time" - S_KEYSPACE = 37, // "keyspace" - S_CONSISTENCY = 38, // "consistency" - S_SERIAL_CONSISTENCY = 39, // "serial-consistency" - S_REQUEST_TIMEOUT = 40, // "request-timeout" - S_TCP_KEEPALIVE = 41, // "tcp-keepalive" - S_TCP_NODELAY = 42, // "tcp-nodelay" - S_MAX_ROW_ERRORS = 43, // "max-row-errors" - S_PREFERRED_LIFETIME = 44, // "preferred-lifetime" - S_MIN_PREFERRED_LIFETIME = 45, // "min-preferred-lifetime" - S_MAX_PREFERRED_LIFETIME = 46, // "max-preferred-lifetime" - S_VALID_LIFETIME = 47, // "valid-lifetime" - S_MIN_VALID_LIFETIME = 48, // "min-valid-lifetime" - S_MAX_VALID_LIFETIME = 49, // "max-valid-lifetime" - S_RENEW_TIMER = 50, // "renew-timer" - S_REBIND_TIMER = 51, // "rebind-timer" - S_CALCULATE_TEE_TIMES = 52, // "calculate-tee-times" - S_T1_PERCENT = 53, // "t1-percent" - S_T2_PERCENT = 54, // "t2-percent" - S_CACHE_THRESHOLD = 55, // "cache-threshold" - S_CACHE_MAX_AGE = 56, // "cache-max-age" - S_DECLINE_PROBATION_PERIOD = 57, // "decline-probation-period" - S_SERVER_TAG = 58, // "server-tag" - S_STATISTIC_DEFAULT_SAMPLE_COUNT = 59, // "statistic-default-sample-count" - S_STATISTIC_DEFAULT_SAMPLE_AGE = 60, // "statistic-default-sample-age" - S_DDNS_SEND_UPDATES = 61, // "ddns-send-updates" - S_DDNS_OVERRIDE_NO_UPDATE = 62, // "ddns-override-no-update" - S_DDNS_OVERRIDE_CLIENT_UPDATE = 63, // "ddns-override-client-update" - S_DDNS_REPLACE_CLIENT_NAME = 64, // "ddns-replace-client-name" - S_DDNS_GENERATED_PREFIX = 65, // "ddns-generated-prefix" - S_DDNS_QUALIFYING_SUFFIX = 66, // "ddns-qualifying-suffix" - S_DDNS_UPDATE_ON_RENEW = 67, // "ddns-update-on-renew" - S_STORE_EXTENDED_INFO = 68, // "store-extended-info" - S_SUBNET6 = 69, // "subnet6" - S_OPTION_DEF = 70, // "option-def" - S_OPTION_DATA = 71, // "option-data" - S_NAME = 72, // "name" - S_DATA = 73, // "data" - S_CODE = 74, // "code" - S_SPACE = 75, // "space" - S_CSV_FORMAT = 76, // "csv-format" - S_ALWAYS_SEND = 77, // "always-send" - S_RECORD_TYPES = 78, // "record-types" - S_ENCAPSULATE = 79, // "encapsulate" - S_ARRAY = 80, // "array" - S_POOLS = 81, // "pools" - S_POOL = 82, // "pool" - S_PD_POOLS = 83, // "pd-pools" - S_PREFIX = 84, // "prefix" - S_PREFIX_LEN = 85, // "prefix-len" - S_EXCLUDED_PREFIX = 86, // "excluded-prefix" - S_EXCLUDED_PREFIX_LEN = 87, // "excluded-prefix-len" - S_DELEGATED_LEN = 88, // "delegated-len" - S_USER_CONTEXT = 89, // "user-context" - S_COMMENT = 90, // "comment" - S_SUBNET = 91, // "subnet" - S_INTERFACE = 92, // "interface" - S_INTERFACE_ID = 93, // "interface-id" - S_ID = 94, // "id" - S_RAPID_COMMIT = 95, // "rapid-commit" - S_RESERVATION_MODE = 96, // "reservation-mode" - S_DISABLED = 97, // "disabled" - S_OUT_OF_POOL = 98, // "out-of-pool" - S_GLOBAL = 99, // "global" - S_ALL = 100, // "all" - S_SHARED_NETWORKS = 101, // "shared-networks" - S_MAC_SOURCES = 102, // "mac-sources" - S_RELAY_SUPPLIED_OPTIONS = 103, // "relay-supplied-options" - S_HOST_RESERVATION_IDENTIFIERS = 104, // "host-reservation-identifiers" - S_SANITY_CHECKS = 105, // "sanity-checks" - S_LEASE_CHECKS = 106, // "lease-checks" - S_CLIENT_CLASSES = 107, // "client-classes" - S_REQUIRE_CLIENT_CLASSES = 108, // "require-client-classes" - S_TEST = 109, // "test" - S_ONLY_IF_REQUIRED = 110, // "only-if-required" - S_CLIENT_CLASS = 111, // "client-class" - S_RESERVATIONS = 112, // "reservations" - S_IP_ADDRESSES = 113, // "ip-addresses" - S_PREFIXES = 114, // "prefixes" - S_DUID = 115, // "duid" - S_HW_ADDRESS = 116, // "hw-address" - S_HOSTNAME = 117, // "hostname" - S_FLEX_ID = 118, // "flex-id" - S_RELAY = 119, // "relay" - S_IP_ADDRESS = 120, // "ip-address" - S_HOOKS_LIBRARIES = 121, // "hooks-libraries" - S_LIBRARY = 122, // "library" - S_PARAMETERS = 123, // "parameters" - S_EXPIRED_LEASES_PROCESSING = 124, // "expired-leases-processing" - S_RECLAIM_TIMER_WAIT_TIME = 125, // "reclaim-timer-wait-time" - S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 126, // "flush-reclaimed-timer-wait-time" - S_HOLD_RECLAIMED_TIME = 127, // "hold-reclaimed-time" - S_MAX_RECLAIM_LEASES = 128, // "max-reclaim-leases" - S_MAX_RECLAIM_TIME = 129, // "max-reclaim-time" - S_UNWARNED_RECLAIM_CYCLES = 130, // "unwarned-reclaim-cycles" - S_SERVER_ID = 131, // "server-id" - S_LLT = 132, // "LLT" - S_EN = 133, // "EN" - S_LL = 134, // "LL" - S_IDENTIFIER = 135, // "identifier" - S_HTYPE = 136, // "htype" - S_TIME = 137, // "time" - S_ENTERPRISE_ID = 138, // "enterprise-id" - S_DHCP4O6_PORT = 139, // "dhcp4o6-port" - S_DHCP_MULTI_THREADING = 140, // "multi-threading" - S_ENABLE_MULTI_THREADING = 141, // "enable-multi-threading" - S_THREAD_POOL_SIZE = 142, // "thread-pool-size" - S_PACKET_QUEUE_SIZE = 143, // "packet-queue-size" - S_CONTROL_SOCKET = 144, // "control-socket" - S_SOCKET_TYPE = 145, // "socket-type" - S_SOCKET_NAME = 146, // "socket-name" - S_DHCP_QUEUE_CONTROL = 147, // "dhcp-queue-control" - S_ENABLE_QUEUE = 148, // "enable-queue" - S_QUEUE_TYPE = 149, // "queue-type" - S_CAPACITY = 150, // "capacity" - S_DHCP_DDNS = 151, // "dhcp-ddns" - S_ENABLE_UPDATES = 152, // "enable-updates" - S_QUALIFYING_SUFFIX = 153, // "qualifying-suffix" - S_SERVER_IP = 154, // "server-ip" - S_SERVER_PORT = 155, // "server-port" - S_SENDER_IP = 156, // "sender-ip" - S_SENDER_PORT = 157, // "sender-port" - S_MAX_QUEUE_SIZE = 158, // "max-queue-size" - S_NCR_PROTOCOL = 159, // "ncr-protocol" - S_NCR_FORMAT = 160, // "ncr-format" - S_OVERRIDE_NO_UPDATE = 161, // "override-no-update" - S_OVERRIDE_CLIENT_UPDATE = 162, // "override-client-update" - S_REPLACE_CLIENT_NAME = 163, // "replace-client-name" - S_GENERATED_PREFIX = 164, // "generated-prefix" - S_UDP = 165, // "UDP" - S_TCP = 166, // "TCP" - S_JSON = 167, // "JSON" - S_WHEN_PRESENT = 168, // "when-present" - S_NEVER = 169, // "never" - S_ALWAYS = 170, // "always" - S_WHEN_NOT_PRESENT = 171, // "when-not-present" - S_HOSTNAME_CHAR_SET = 172, // "hostname-char-set" - S_HOSTNAME_CHAR_REPLACEMENT = 173, // "hostname-char-replacement" - S_IP_RESERVATIONS_UNIQUE = 174, // "ip-reservations-unique" - S_LOGGERS = 175, // "loggers" - S_OUTPUT_OPTIONS = 176, // "output_options" - S_OUTPUT = 177, // "output" - S_DEBUGLEVEL = 178, // "debuglevel" - S_SEVERITY = 179, // "severity" - S_FLUSH = 180, // "flush" - S_MAXSIZE = 181, // "maxsize" - S_MAXVER = 182, // "maxver" - S_PATTERN = 183, // "pattern" - S_TOPLEVEL_JSON = 184, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP6 = 185, // TOPLEVEL_DHCP6 - S_SUB_DHCP6 = 186, // SUB_DHCP6 - S_SUB_INTERFACES6 = 187, // SUB_INTERFACES6 - S_SUB_SUBNET6 = 188, // SUB_SUBNET6 - S_SUB_POOL6 = 189, // SUB_POOL6 - S_SUB_PD_POOL = 190, // SUB_PD_POOL - S_SUB_RESERVATION = 191, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 192, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 193, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 194, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 195, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 196, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 197, // SUB_CONFIG_CONTROL - S_STRING = 198, // "constant string" - S_INTEGER = 199, // "integer" - S_FLOAT = 200, // "floating point" - S_BOOLEAN = 201, // "boolean" - S_YYACCEPT = 202, // $accept - S_start = 203, // start - S_204_1 = 204, // $@1 - S_205_2 = 205, // $@2 - S_206_3 = 206, // $@3 - S_207_4 = 207, // $@4 - S_208_5 = 208, // $@5 - S_209_6 = 209, // $@6 - S_210_7 = 210, // $@7 - S_211_8 = 211, // $@8 - S_212_9 = 212, // $@9 - S_213_10 = 213, // $@10 - S_214_11 = 214, // $@11 - S_215_12 = 215, // $@12 - S_216_13 = 216, // $@13 - S_217_14 = 217, // $@14 - S_value = 218, // value - S_sub_json = 219, // sub_json - S_map2 = 220, // map2 - S_221_15 = 221, // $@15 - S_map_value = 222, // map_value - S_map_content = 223, // map_content - S_not_empty_map = 224, // not_empty_map - S_list_generic = 225, // list_generic - S_226_16 = 226, // $@16 - S_list_content = 227, // list_content - S_not_empty_list = 228, // not_empty_list - S_list_strings = 229, // list_strings - S_230_17 = 230, // $@17 - S_list_strings_content = 231, // list_strings_content - S_not_empty_list_strings = 232, // not_empty_list_strings - S_unknown_map_entry = 233, // unknown_map_entry - S_syntax_map = 234, // syntax_map - S_235_18 = 235, // $@18 - S_global_object = 236, // global_object - S_237_19 = 237, // $@19 - S_sub_dhcp6 = 238, // sub_dhcp6 - S_239_20 = 239, // $@20 - S_global_params = 240, // global_params - S_global_param = 241, // global_param - S_data_directory = 242, // data_directory - S_243_21 = 243, // $@21 - S_preferred_lifetime = 244, // preferred_lifetime - S_min_preferred_lifetime = 245, // min_preferred_lifetime - S_max_preferred_lifetime = 246, // max_preferred_lifetime - S_valid_lifetime = 247, // valid_lifetime - S_min_valid_lifetime = 248, // min_valid_lifetime - S_max_valid_lifetime = 249, // max_valid_lifetime - S_renew_timer = 250, // renew_timer - S_rebind_timer = 251, // rebind_timer - S_calculate_tee_times = 252, // calculate_tee_times - S_t1_percent = 253, // t1_percent - S_t2_percent = 254, // t2_percent - S_cache_threshold = 255, // cache_threshold - S_cache_max_age = 256, // cache_max_age - S_decline_probation_period = 257, // decline_probation_period - S_ddns_send_updates = 258, // ddns_send_updates - S_ddns_override_no_update = 259, // ddns_override_no_update - S_ddns_override_client_update = 260, // ddns_override_client_update - S_ddns_replace_client_name = 261, // ddns_replace_client_name - S_262_22 = 262, // $@22 - S_ddns_replace_client_name_value = 263, // ddns_replace_client_name_value - S_ddns_generated_prefix = 264, // ddns_generated_prefix - S_265_23 = 265, // $@23 - S_ddns_qualifying_suffix = 266, // ddns_qualifying_suffix - S_267_24 = 267, // $@24 - S_ddns_update_on_renew = 268, // ddns_update_on_renew - S_hostname_char_set = 269, // hostname_char_set - S_270_25 = 270, // $@25 - S_hostname_char_replacement = 271, // hostname_char_replacement - S_272_26 = 272, // $@26 - S_store_extended_info = 273, // store_extended_info - S_statistic_default_sample_count = 274, // statistic_default_sample_count - S_statistic_default_sample_age = 275, // statistic_default_sample_age - S_server_tag = 276, // server_tag - S_277_27 = 277, // $@27 - S_ip_reservations_unique = 278, // ip_reservations_unique - S_interfaces_config = 279, // interfaces_config - S_280_28 = 280, // $@28 - S_sub_interfaces6 = 281, // sub_interfaces6 - S_282_29 = 282, // $@29 - S_interfaces_config_params = 283, // interfaces_config_params - S_interfaces_config_param = 284, // interfaces_config_param - S_interfaces_list = 285, // interfaces_list - S_286_30 = 286, // $@30 - S_re_detect = 287, // re_detect - S_lease_database = 288, // lease_database - S_289_31 = 289, // $@31 - S_hosts_database = 290, // hosts_database - S_291_32 = 291, // $@32 - S_hosts_databases = 292, // hosts_databases - S_293_33 = 293, // $@33 - S_database_list = 294, // database_list - S_not_empty_database_list = 295, // not_empty_database_list - S_database = 296, // database - S_297_34 = 297, // $@34 - S_database_map_params = 298, // database_map_params - S_database_map_param = 299, // database_map_param - S_database_type = 300, // database_type - S_301_35 = 301, // $@35 - S_db_type = 302, // db_type - S_user = 303, // user - S_304_36 = 304, // $@36 - S_password = 305, // password - S_306_37 = 306, // $@37 - S_host = 307, // host - S_308_38 = 308, // $@38 - S_port = 309, // port - S_name = 310, // name - S_311_39 = 311, // $@39 - S_persist = 312, // persist - S_lfc_interval = 313, // lfc_interval - S_readonly = 314, // readonly - S_connect_timeout = 315, // connect_timeout - S_reconnect_wait_time = 316, // reconnect_wait_time - S_max_row_errors = 317, // max_row_errors - S_request_timeout = 318, // request_timeout - S_tcp_keepalive = 319, // tcp_keepalive - S_tcp_nodelay = 320, // tcp_nodelay - S_contact_points = 321, // contact_points - S_322_40 = 322, // $@40 - S_max_reconnect_tries = 323, // max_reconnect_tries - S_keyspace = 324, // keyspace - S_325_41 = 325, // $@41 - S_consistency = 326, // consistency - S_327_42 = 327, // $@42 - S_serial_consistency = 328, // serial_consistency - S_329_43 = 329, // $@43 - S_sanity_checks = 330, // sanity_checks - S_331_44 = 331, // $@44 - S_sanity_checks_params = 332, // sanity_checks_params - S_sanity_checks_param = 333, // sanity_checks_param - S_lease_checks = 334, // lease_checks - S_335_45 = 335, // $@45 - S_mac_sources = 336, // mac_sources - S_337_46 = 337, // $@46 - S_mac_sources_list = 338, // mac_sources_list - S_mac_sources_value = 339, // mac_sources_value - S_duid_id = 340, // duid_id - S_string_id = 341, // string_id - S_host_reservation_identifiers = 342, // host_reservation_identifiers - S_343_47 = 343, // $@47 - S_host_reservation_identifiers_list = 344, // host_reservation_identifiers_list - S_host_reservation_identifier = 345, // host_reservation_identifier - S_hw_address_id = 346, // hw_address_id - S_flex_id = 347, // flex_id - S_relay_supplied_options = 348, // relay_supplied_options - S_349_48 = 349, // $@48 - S_dhcp_multi_threading = 350, // dhcp_multi_threading - S_351_49 = 351, // $@49 - S_multi_threading_params = 352, // multi_threading_params - S_multi_threading_param = 353, // multi_threading_param - S_enable_multi_threading = 354, // enable_multi_threading - S_thread_pool_size = 355, // thread_pool_size - S_packet_queue_size = 356, // packet_queue_size - S_hooks_libraries = 357, // hooks_libraries - S_358_50 = 358, // $@50 - S_hooks_libraries_list = 359, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 360, // not_empty_hooks_libraries_list - S_hooks_library = 361, // hooks_library - S_362_51 = 362, // $@51 - S_sub_hooks_library = 363, // sub_hooks_library - S_364_52 = 364, // $@52 - S_hooks_params = 365, // hooks_params - S_hooks_param = 366, // hooks_param - S_library = 367, // library - S_368_53 = 368, // $@53 - S_parameters = 369, // parameters - S_370_54 = 370, // $@54 - S_expired_leases_processing = 371, // expired_leases_processing - S_372_55 = 372, // $@55 - S_expired_leases_params = 373, // expired_leases_params - S_expired_leases_param = 374, // expired_leases_param - S_reclaim_timer_wait_time = 375, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 376, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 377, // hold_reclaimed_time - S_max_reclaim_leases = 378, // max_reclaim_leases - S_max_reclaim_time = 379, // max_reclaim_time - S_unwarned_reclaim_cycles = 380, // unwarned_reclaim_cycles - S_subnet6_list = 381, // subnet6_list - S_382_56 = 382, // $@56 - S_subnet6_list_content = 383, // subnet6_list_content - S_not_empty_subnet6_list = 384, // not_empty_subnet6_list - S_subnet6 = 385, // subnet6 - S_386_57 = 386, // $@57 - S_sub_subnet6 = 387, // sub_subnet6 - S_388_58 = 388, // $@58 - S_subnet6_params = 389, // subnet6_params - S_subnet6_param = 390, // subnet6_param - S_subnet = 391, // subnet - S_392_59 = 392, // $@59 - S_interface = 393, // interface - S_394_60 = 394, // $@60 - S_interface_id = 395, // interface_id - S_396_61 = 396, // $@61 - S_client_class = 397, // client_class - S_398_62 = 398, // $@62 - S_require_client_classes = 399, // require_client_classes - S_400_63 = 400, // $@63 - S_reservation_mode = 401, // reservation_mode - S_402_64 = 402, // $@64 - S_hr_mode = 403, // hr_mode - S_id = 404, // id - S_rapid_commit = 405, // rapid_commit - S_shared_networks = 406, // shared_networks - S_407_65 = 407, // $@65 - S_shared_networks_content = 408, // shared_networks_content - S_shared_networks_list = 409, // shared_networks_list - S_shared_network = 410, // shared_network - S_411_66 = 411, // $@66 - S_shared_network_params = 412, // shared_network_params - S_shared_network_param = 413, // shared_network_param - S_option_def_list = 414, // option_def_list - S_415_67 = 415, // $@67 - S_sub_option_def_list = 416, // sub_option_def_list - S_417_68 = 417, // $@68 - S_option_def_list_content = 418, // option_def_list_content - S_not_empty_option_def_list = 419, // not_empty_option_def_list - S_option_def_entry = 420, // option_def_entry - S_421_69 = 421, // $@69 - S_sub_option_def = 422, // sub_option_def - S_423_70 = 423, // $@70 - S_option_def_params = 424, // option_def_params - S_not_empty_option_def_params = 425, // not_empty_option_def_params - S_option_def_param = 426, // option_def_param - S_option_def_name = 427, // option_def_name - S_code = 428, // code - S_option_def_code = 429, // option_def_code - S_option_def_type = 430, // option_def_type - S_431_71 = 431, // $@71 - S_option_def_record_types = 432, // option_def_record_types - S_433_72 = 433, // $@72 - S_space = 434, // space - S_435_73 = 435, // $@73 - S_option_def_space = 436, // option_def_space - S_option_def_encapsulate = 437, // option_def_encapsulate - S_438_74 = 438, // $@74 - S_option_def_array = 439, // option_def_array - S_option_data_list = 440, // option_data_list - S_441_75 = 441, // $@75 - S_option_data_list_content = 442, // option_data_list_content - S_not_empty_option_data_list = 443, // not_empty_option_data_list - S_option_data_entry = 444, // option_data_entry - S_445_76 = 445, // $@76 - S_sub_option_data = 446, // sub_option_data - S_447_77 = 447, // $@77 - S_option_data_params = 448, // option_data_params - S_not_empty_option_data_params = 449, // not_empty_option_data_params - S_option_data_param = 450, // option_data_param - S_option_data_name = 451, // option_data_name - S_option_data_data = 452, // option_data_data - S_453_78 = 453, // $@78 - S_option_data_code = 454, // option_data_code - S_option_data_space = 455, // option_data_space - S_option_data_csv_format = 456, // option_data_csv_format - S_option_data_always_send = 457, // option_data_always_send - S_pools_list = 458, // pools_list - S_459_79 = 459, // $@79 - S_pools_list_content = 460, // pools_list_content - S_not_empty_pools_list = 461, // not_empty_pools_list - S_pool_list_entry = 462, // pool_list_entry - S_463_80 = 463, // $@80 - S_sub_pool6 = 464, // sub_pool6 - S_465_81 = 465, // $@81 - S_pool_params = 466, // pool_params - S_pool_param = 467, // pool_param - S_pool_entry = 468, // pool_entry - S_469_82 = 469, // $@82 - S_user_context = 470, // user_context - S_471_83 = 471, // $@83 - S_comment = 472, // comment - S_473_84 = 473, // $@84 - S_pd_pools_list = 474, // pd_pools_list - S_475_85 = 475, // $@85 - S_pd_pools_list_content = 476, // pd_pools_list_content - S_not_empty_pd_pools_list = 477, // not_empty_pd_pools_list - S_pd_pool_entry = 478, // pd_pool_entry - S_479_86 = 479, // $@86 - S_sub_pd_pool = 480, // sub_pd_pool - S_481_87 = 481, // $@87 - S_pd_pool_params = 482, // pd_pool_params - S_pd_pool_param = 483, // pd_pool_param - S_pd_prefix = 484, // pd_prefix - S_485_88 = 485, // $@88 - S_pd_prefix_len = 486, // pd_prefix_len - S_excluded_prefix = 487, // excluded_prefix - S_488_89 = 488, // $@89 - S_excluded_prefix_len = 489, // excluded_prefix_len - S_pd_delegated_len = 490, // pd_delegated_len - S_reservations = 491, // reservations - S_492_90 = 492, // $@90 - S_reservations_list = 493, // reservations_list - S_not_empty_reservations_list = 494, // not_empty_reservations_list - S_reservation = 495, // reservation - S_496_91 = 496, // $@91 - S_sub_reservation = 497, // sub_reservation - S_498_92 = 498, // $@92 - S_reservation_params = 499, // reservation_params - S_not_empty_reservation_params = 500, // not_empty_reservation_params - S_reservation_param = 501, // reservation_param - S_ip_addresses = 502, // ip_addresses - S_503_93 = 503, // $@93 - S_prefixes = 504, // prefixes - S_505_94 = 505, // $@94 - S_duid = 506, // duid - S_507_95 = 507, // $@95 - S_hw_address = 508, // hw_address - S_509_96 = 509, // $@96 - S_hostname = 510, // hostname - S_511_97 = 511, // $@97 - S_flex_id_value = 512, // flex_id_value - S_513_98 = 513, // $@98 - S_reservation_client_classes = 514, // reservation_client_classes - S_515_99 = 515, // $@99 - S_relay = 516, // relay - S_517_100 = 517, // $@100 - S_relay_map = 518, // relay_map - S_ip_address = 519, // ip_address - S_520_101 = 520, // $@101 - S_client_classes = 521, // client_classes - S_522_102 = 522, // $@102 - S_client_classes_list = 523, // client_classes_list - S_client_class_entry = 524, // client_class_entry - S_525_103 = 525, // $@103 - S_client_class_params = 526, // client_class_params - S_not_empty_client_class_params = 527, // not_empty_client_class_params - S_client_class_param = 528, // client_class_param - S_client_class_name = 529, // client_class_name - S_client_class_test = 530, // client_class_test - S_531_104 = 531, // $@104 - S_only_if_required = 532, // only_if_required - S_server_id = 533, // server_id - S_534_105 = 534, // $@105 - S_server_id_params = 535, // server_id_params - S_server_id_param = 536, // server_id_param - S_server_id_type = 537, // server_id_type - S_538_106 = 538, // $@106 - S_duid_type = 539, // duid_type - S_htype = 540, // htype - S_identifier = 541, // identifier - S_542_107 = 542, // $@107 - S_time = 543, // time - S_enterprise_id = 544, // enterprise_id - S_dhcp4o6_port = 545, // dhcp4o6_port - S_control_socket = 546, // control_socket - S_547_108 = 547, // $@108 - S_control_socket_params = 548, // control_socket_params - S_control_socket_param = 549, // control_socket_param - S_socket_type = 550, // socket_type - S_551_109 = 551, // $@109 - S_socket_name = 552, // socket_name - S_553_110 = 553, // $@110 - S_dhcp_queue_control = 554, // dhcp_queue_control - S_555_111 = 555, // $@111 - S_queue_control_params = 556, // queue_control_params - S_queue_control_param = 557, // queue_control_param - S_enable_queue = 558, // enable_queue - S_queue_type = 559, // queue_type - S_560_112 = 560, // $@112 - S_capacity = 561, // capacity - S_arbitrary_map_entry = 562, // arbitrary_map_entry - S_563_113 = 563, // $@113 - S_dhcp_ddns = 564, // dhcp_ddns - S_565_114 = 565, // $@114 - S_sub_dhcp_ddns = 566, // sub_dhcp_ddns - S_567_115 = 567, // $@115 - S_dhcp_ddns_params = 568, // dhcp_ddns_params - S_dhcp_ddns_param = 569, // dhcp_ddns_param - S_enable_updates = 570, // enable_updates - S_dep_qualifying_suffix = 571, // dep_qualifying_suffix - S_572_116 = 572, // $@116 - S_server_ip = 573, // server_ip - S_574_117 = 574, // $@117 - S_server_port = 575, // server_port - S_sender_ip = 576, // sender_ip - S_577_118 = 577, // $@118 - S_sender_port = 578, // sender_port - S_max_queue_size = 579, // max_queue_size - S_ncr_protocol = 580, // ncr_protocol - S_581_119 = 581, // $@119 - S_ncr_protocol_value = 582, // ncr_protocol_value - S_ncr_format = 583, // ncr_format - S_584_120 = 584, // $@120 - S_dep_override_no_update = 585, // dep_override_no_update - S_dep_override_client_update = 586, // dep_override_client_update - S_dep_replace_client_name = 587, // dep_replace_client_name - S_588_121 = 588, // $@121 - S_dep_generated_prefix = 589, // dep_generated_prefix - S_590_122 = 590, // $@122 - S_dep_hostname_char_set = 591, // dep_hostname_char_set - S_592_123 = 592, // $@123 - S_dep_hostname_char_replacement = 593, // dep_hostname_char_replacement - S_594_124 = 594, // $@124 - S_config_control = 595, // config_control - S_596_125 = 596, // $@125 - S_sub_config_control = 597, // sub_config_control - S_598_126 = 598, // $@126 - S_config_control_params = 599, // config_control_params - S_config_control_param = 600, // config_control_param - S_config_databases = 601, // config_databases - S_602_127 = 602, // $@127 - S_config_fetch_wait_time = 603, // config_fetch_wait_time - S_loggers = 604, // loggers - S_605_128 = 605, // $@128 - S_loggers_entries = 606, // loggers_entries - S_logger_entry = 607, // logger_entry - S_608_129 = 608, // $@129 - S_logger_params = 609, // logger_params - S_logger_param = 610, // logger_param - S_debuglevel = 611, // debuglevel - S_severity = 612, // severity - S_613_130 = 613, // $@130 - S_output_options_list = 614, // output_options_list - S_615_131 = 615, // $@131 - S_output_options_list_content = 616, // output_options_list_content - S_output_entry = 617, // output_entry - S_618_132 = 618, // $@132 - S_output_params_list = 619, // output_params_list - S_output_params = 620, // output_params - S_output = 621, // output - S_622_133 = 622, // $@133 - S_flush = 623, // flush - S_maxsize = 624, // maxsize - S_maxver = 625, // maxver - S_pattern = 626, // pattern - S_627_134 = 627 // $@134 - }; - }; + /// Symbol type: an internal symbol number. + typedef int symbol_number_type; - /// (Internal) symbol kind. - typedef symbol_kind::symbol_kind_type symbol_kind_type; + /// The symbol type number to denote an empty symbol. + enum { empty_symbol = -2 }; - /// The number of tokens. - static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS; + /// Internal symbol number for tokens (subsumed by symbol_number_type). + typedef unsigned char token_number_type; /// A complete symbol. /// - /// Expects its Base type to provide access to the symbol kind - /// via kind (). + /// Expects its Base type to provide access to the symbol type + /// via type_get(). /// /// Provide access to semantic value and location. template @@ -1352,200 +575,39 @@ namespace isc { namespace dhcp { typedef Base super_type; /// Default constructor. - basic_symbol () - : value () - , location () - {} - -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - basic_symbol (basic_symbol&& that) - : Base (std::move (that)) - , value () - , location (std::move (that.location)) - { - switch (this->kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (std::move (that.value)); - break; - - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (std::move (that.value)); - break; - - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (std::move (that.value)); - break; - - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (std::move (that.value)); - break; - - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (std::move (that.value)); - break; - - default: - break; - } - - } -#endif + basic_symbol (); /// Copy constructor. - basic_symbol (const basic_symbol& that); + basic_symbol (const basic_symbol& other); /// Constructor for valueless symbols, and symbols from each type. -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, location_type&& l) - : Base (t) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const location_type& l) - : Base (t) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, double&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const double& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif - /// Destroy the symbol. - ~basic_symbol () - { - clear (); - } + basic_symbol (typename Base::kind_type t, const location_type& l); - /// Destroy contents, and record that is empty. - void clear () - { - // User destructor. - symbol_kind_type yykind = this->kind (); - basic_symbol& yysym = *this; - (void) yysym; - switch (yykind) - { - default: - break; - } - - // Value type destructor. -switch (yykind) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.template destroy< ElementPtr > (); - break; + basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l); - case symbol_kind::S_BOOLEAN: // "boolean" - value.template destroy< bool > (); - break; + basic_symbol (typename Base::kind_type t, const bool v, const location_type& l); - case symbol_kind::S_FLOAT: // "floating point" - value.template destroy< double > (); - break; + basic_symbol (typename Base::kind_type t, const double v, const location_type& l); - case symbol_kind::S_INTEGER: // "integer" - value.template destroy< int64_t > (); - break; + basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l); - case symbol_kind::S_STRING: // "constant string" - value.template destroy< std::string > (); - break; + basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l); - default: - break; - } - Base::clear (); - } + /// Constructor for symbols with semantic value. + basic_symbol (typename Base::kind_type t, + const semantic_type& v, + const location_type& l); - /// The user-facing name of this symbol. - std::string name () const YY_NOEXCEPT - { - return Dhcp6Parser::symbol_name (this->kind ()); - } + /// Destroy the symbol. + ~basic_symbol (); - /// Backward compatibility (Bison 3.6). - symbol_kind_type type_get () const YY_NOEXCEPT; + /// Destroy contents, and record that is empty. + void clear (); /// Whether empty. - bool empty () const YY_NOEXCEPT; + bool empty () const; /// Destructive move, \a s is emptied into this. void move (basic_symbol& s); @@ -1557,3769 +619,2669 @@ switch (yykind) location_type location; private: -#if YY_CPLUSPLUS < 201103L /// Assignment operator. - basic_symbol& operator= (const basic_symbol& that); -#endif + basic_symbol& operator= (const basic_symbol& other); }; /// Type access provider for token (enum) based symbols. - struct by_kind + struct by_type { /// Default constructor. - by_kind (); - -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - by_kind (by_kind&& that); -#endif + by_type (); /// Copy constructor. - by_kind (const by_kind& that); + by_type (const by_type& other); - /// The symbol kind as needed by the constructor. - typedef token_kind_type kind_type; + /// The symbol type as needed by the constructor. + typedef token_type kind_type; /// Constructor from (external) token numbers. - by_kind (kind_type t); + by_type (kind_type t); /// Record that this symbol is empty. void clear (); - /// Steal the symbol kind from \a that. - void move (by_kind& that); + /// Steal the symbol type from \a that. + void move (by_type& that); /// The (internal) type number (corresponding to \a type). /// \a empty when empty. - symbol_kind_type kind () const YY_NOEXCEPT; + symbol_number_type type_get () const; - /// Backward compatibility (Bison 3.6). - symbol_kind_type type_get () const YY_NOEXCEPT; + /// The token. + token_type token () const; - /// The symbol kind. - /// \a S_YYEMPTY when empty. - symbol_kind_type kind_; + /// The symbol type. + /// \a empty_symbol when empty. + /// An int, not token_number_type, to be able to store empty_symbol. + int type; }; - /// Backward compatibility for a private implementation detail (Bison 3.6). - typedef by_kind by_type; - /// "External" symbols: returned by the scanner. - struct symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; + typedef basic_symbol symbol_type; - /// Empty symbol. - symbol_type () {} + // Symbol constructors declarations. + static inline + symbol_type + make_END (const location_type& l); - /// Constructor for valueless symbols, and symbols from each type. -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, location_type l) - : super_type(token_type (tok), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_IP_RESERVATIONS_UNIQUE || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL); - } -#else - symbol_type (int tok, const location_type& l) - : super_type(token_type (tok), l) - { - YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_IP_RESERVATIONS_UNIQUE || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, bool v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_BOOLEAN); - } -#else - symbol_type (int tok, const bool& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_BOOLEAN); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, double v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_FLOAT); - } -#else - symbol_type (int tok, const double& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_FLOAT); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, int64_t v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_INTEGER); - } -#else - symbol_type (int tok, const int64_t& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_INTEGER); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, std::string v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YY_ASSERT (tok == token::TOKEN_STRING); - } -#else - symbol_type (int tok, const std::string& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YY_ASSERT (tok == token::TOKEN_STRING); - } -#endif - }; + static inline + symbol_type + make_COMMA (const location_type& l); - /// Build a parser object. - Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg); - virtual ~Dhcp6Parser (); + static inline + symbol_type + make_COLON (const location_type& l); -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - Dhcp6Parser (const Dhcp6Parser&) = delete; - /// Non copyable. - Dhcp6Parser& operator= (const Dhcp6Parser&) = delete; -#endif + static inline + symbol_type + make_LSQUARE_BRACKET (const location_type& l); - /// Parse. An alias for parse (). - /// \returns 0 iff parsing succeeded. - int operator() (); + static inline + symbol_type + make_RSQUARE_BRACKET (const location_type& l); - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); + static inline + symbol_type + make_LCURLY_BRACKET (const location_type& l); -#if PARSER6_DEBUG - /// The current debugging stream. - std::ostream& debug_stream () const YY_ATTRIBUTE_PURE; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); + static inline + symbol_type + make_RCURLY_BRACKET (const location_type& l); - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const YY_ATTRIBUTE_PURE; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); -#endif + static inline + symbol_type + make_NULL_TYPE (const location_type& l); - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); + static inline + symbol_type + make_DHCP6 (const location_type& l); - /// Report a syntax error. - void error (const syntax_error& err); + static inline + symbol_type + make_DATA_DIRECTORY (const location_type& l); - /// The user-facing name of the symbol whose (internal) number is - /// YYSYMBOL. No bounds checking. - static std::string symbol_name (symbol_kind_type yysymbol); + static inline + symbol_type + make_CONFIG_CONTROL (const location_type& l); - // Implementation of make_symbol for each symbol type. -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_END (location_type l) - { - return symbol_type (token::TOKEN_END, std::move (l)); - } -#else - static - symbol_type - make_END (const location_type& l) - { - return symbol_type (token::TOKEN_END, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARSER6_error (location_type l) - { - return symbol_type (token::TOKEN_PARSER6_error, std::move (l)); - } -#else - static - symbol_type - make_PARSER6_error (const location_type& l) - { - return symbol_type (token::TOKEN_PARSER6_error, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARSER6_UNDEF (location_type l) - { - return symbol_type (token::TOKEN_PARSER6_UNDEF, std::move (l)); - } -#else - static - symbol_type - make_PARSER6_UNDEF (const location_type& l) - { - return symbol_type (token::TOKEN_PARSER6_UNDEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COMMA (location_type l) - { - return symbol_type (token::TOKEN_COMMA, std::move (l)); - } -#else - static - symbol_type - make_COMMA (const location_type& l) - { - return symbol_type (token::TOKEN_COMMA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COLON (location_type l) - { - return symbol_type (token::TOKEN_COLON, std::move (l)); - } -#else - static - symbol_type - make_COLON (const location_type& l) - { - return symbol_type (token::TOKEN_COLON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LSQUARE_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_LSQUARE_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_LSQUARE_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RSQUARE_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_RSQUARE_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_RSQUARE_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LCURLY_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_LCURLY_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_LCURLY_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RCURLY_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_RCURLY_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_RCURLY_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NULL_TYPE (location_type l) - { - return symbol_type (token::TOKEN_NULL_TYPE, std::move (l)); - } -#else - static - symbol_type - make_NULL_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_NULL_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP6 (location_type l) - { - return symbol_type (token::TOKEN_DHCP6, std::move (l)); - } -#else - static - symbol_type - make_DHCP6 (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DATA_DIRECTORY (location_type l) - { - return symbol_type (token::TOKEN_DATA_DIRECTORY, std::move (l)); - } -#else - static - symbol_type - make_DATA_DIRECTORY (const location_type& l) - { - return symbol_type (token::TOKEN_DATA_DIRECTORY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_DATABASES (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_DATABASES (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_DATABASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_FETCH_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_FETCH_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACES_CONFIG (location_type l) - { - return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l)); - } -#else - static - symbol_type - make_INTERFACES_CONFIG (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACES_CONFIG, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACES (location_type l) - { - return symbol_type (token::TOKEN_INTERFACES, std::move (l)); - } -#else - static - symbol_type - make_INTERFACES (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RE_DETECT (location_type l) - { - return symbol_type (token::TOKEN_RE_DETECT, std::move (l)); - } -#else - static - symbol_type - make_RE_DETECT (const location_type& l) - { - return symbol_type (token::TOKEN_RE_DETECT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LEASE_DATABASE (location_type l) - { - return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l)); - } -#else - static - symbol_type - make_LEASE_DATABASE (const location_type& l) - { - return symbol_type (token::TOKEN_LEASE_DATABASE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTS_DATABASE (location_type l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l)); - } -#else - static - symbol_type - make_HOSTS_DATABASE (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTS_DATABASES (location_type l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l)); - } -#else - static - symbol_type - make_HOSTS_DATABASES (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASES, l); - } + static inline + symbol_type + make_CONFIG_DATABASES (const location_type& l); + + static inline + symbol_type + make_CONFIG_FETCH_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_INTERFACES_CONFIG (const location_type& l); + + static inline + symbol_type + make_INTERFACES (const location_type& l); + + static inline + symbol_type + make_RE_DETECT (const location_type& l); + + static inline + symbol_type + make_LEASE_DATABASE (const location_type& l); + + static inline + symbol_type + make_HOSTS_DATABASE (const location_type& l); + + static inline + symbol_type + make_HOSTS_DATABASES (const location_type& l); + + static inline + symbol_type + make_TYPE (const location_type& l); + + static inline + symbol_type + make_MEMFILE (const location_type& l); + + static inline + symbol_type + make_MYSQL (const location_type& l); + + static inline + symbol_type + make_POSTGRESQL (const location_type& l); + + static inline + symbol_type + make_CQL (const location_type& l); + + static inline + symbol_type + make_USER (const location_type& l); + + static inline + symbol_type + make_PASSWORD (const location_type& l); + + static inline + symbol_type + make_HOST (const location_type& l); + + static inline + symbol_type + make_PORT (const location_type& l); + + static inline + symbol_type + make_PERSIST (const location_type& l); + + static inline + symbol_type + make_LFC_INTERVAL (const location_type& l); + + static inline + symbol_type + make_READONLY (const location_type& l); + + static inline + symbol_type + make_CONNECT_TIMEOUT (const location_type& l); + + static inline + symbol_type + make_CONTACT_POINTS (const location_type& l); + + static inline + symbol_type + make_MAX_RECONNECT_TRIES (const location_type& l); + + static inline + symbol_type + make_RECONNECT_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_KEYSPACE (const location_type& l); + + static inline + symbol_type + make_CONSISTENCY (const location_type& l); + + static inline + symbol_type + make_SERIAL_CONSISTENCY (const location_type& l); + + static inline + symbol_type + make_REQUEST_TIMEOUT (const location_type& l); + + static inline + symbol_type + make_TCP_KEEPALIVE (const location_type& l); + + static inline + symbol_type + make_TCP_NODELAY (const location_type& l); + + static inline + symbol_type + make_MAX_ROW_ERRORS (const location_type& l); + + static inline + symbol_type + make_PREFERRED_LIFETIME (const location_type& l); + + static inline + symbol_type + make_MIN_PREFERRED_LIFETIME (const location_type& l); + + static inline + symbol_type + make_MAX_PREFERRED_LIFETIME (const location_type& l); + + static inline + symbol_type + make_VALID_LIFETIME (const location_type& l); + + static inline + symbol_type + make_MIN_VALID_LIFETIME (const location_type& l); + + static inline + symbol_type + make_MAX_VALID_LIFETIME (const location_type& l); + + static inline + symbol_type + make_RENEW_TIMER (const location_type& l); + + static inline + symbol_type + make_REBIND_TIMER (const location_type& l); + + static inline + symbol_type + make_CALCULATE_TEE_TIMES (const location_type& l); + + static inline + symbol_type + make_T1_PERCENT (const location_type& l); + + static inline + symbol_type + make_T2_PERCENT (const location_type& l); + + static inline + symbol_type + make_CACHE_THRESHOLD (const location_type& l); + + static inline + symbol_type + make_CACHE_MAX_AGE (const location_type& l); + + static inline + symbol_type + make_DECLINE_PROBATION_PERIOD (const location_type& l); + + static inline + symbol_type + make_SERVER_TAG (const location_type& l); + + static inline + symbol_type + make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l); + + static inline + symbol_type + make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l); + + static inline + symbol_type + make_DDNS_SEND_UPDATES (const location_type& l); + + static inline + symbol_type + make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l); + + static inline + symbol_type + make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l); + + static inline + symbol_type + make_DDNS_REPLACE_CLIENT_NAME (const location_type& l); + + static inline + symbol_type + make_DDNS_GENERATED_PREFIX (const location_type& l); + + static inline + symbol_type + make_DDNS_QUALIFYING_SUFFIX (const location_type& l); + + static inline + symbol_type + make_DDNS_UPDATE_ON_RENEW (const location_type& l); + + static inline + symbol_type + make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l); + + static inline + symbol_type + make_STORE_EXTENDED_INFO (const location_type& l); + + static inline + symbol_type + make_SUBNET6 (const location_type& l); + + static inline + symbol_type + make_OPTION_DEF (const location_type& l); + + static inline + symbol_type + make_OPTION_DATA (const location_type& l); + + static inline + symbol_type + make_NAME (const location_type& l); + + static inline + symbol_type + make_DATA (const location_type& l); + + static inline + symbol_type + make_CODE (const location_type& l); + + static inline + symbol_type + make_SPACE (const location_type& l); + + static inline + symbol_type + make_CSV_FORMAT (const location_type& l); + + static inline + symbol_type + make_ALWAYS_SEND (const location_type& l); + + static inline + symbol_type + make_RECORD_TYPES (const location_type& l); + + static inline + symbol_type + make_ENCAPSULATE (const location_type& l); + + static inline + symbol_type + make_ARRAY (const location_type& l); + + static inline + symbol_type + make_POOLS (const location_type& l); + + static inline + symbol_type + make_POOL (const location_type& l); + + static inline + symbol_type + make_PD_POOLS (const location_type& l); + + static inline + symbol_type + make_PREFIX (const location_type& l); + + static inline + symbol_type + make_PREFIX_LEN (const location_type& l); + + static inline + symbol_type + make_EXCLUDED_PREFIX (const location_type& l); + + static inline + symbol_type + make_EXCLUDED_PREFIX_LEN (const location_type& l); + + static inline + symbol_type + make_DELEGATED_LEN (const location_type& l); + + static inline + symbol_type + make_USER_CONTEXT (const location_type& l); + + static inline + symbol_type + make_COMMENT (const location_type& l); + + static inline + symbol_type + make_SUBNET (const location_type& l); + + static inline + symbol_type + make_INTERFACE (const location_type& l); + + static inline + symbol_type + make_INTERFACE_ID (const location_type& l); + + static inline + symbol_type + make_ID (const location_type& l); + + static inline + symbol_type + make_RAPID_COMMIT (const location_type& l); + + static inline + symbol_type + make_RESERVATION_MODE (const location_type& l); + + static inline + symbol_type + make_DISABLED (const location_type& l); + + static inline + symbol_type + make_OUT_OF_POOL (const location_type& l); + + static inline + symbol_type + make_GLOBAL (const location_type& l); + + static inline + symbol_type + make_ALL (const location_type& l); + + static inline + symbol_type + make_SHARED_NETWORKS (const location_type& l); + + static inline + symbol_type + make_MAC_SOURCES (const location_type& l); + + static inline + symbol_type + make_RELAY_SUPPLIED_OPTIONS (const location_type& l); + + static inline + symbol_type + make_HOST_RESERVATION_IDENTIFIERS (const location_type& l); + + static inline + symbol_type + make_SANITY_CHECKS (const location_type& l); + + static inline + symbol_type + make_LEASE_CHECKS (const location_type& l); + + static inline + symbol_type + make_CLIENT_CLASSES (const location_type& l); + + static inline + symbol_type + make_REQUIRE_CLIENT_CLASSES (const location_type& l); + + static inline + symbol_type + make_TEST (const location_type& l); + + static inline + symbol_type + make_ONLY_IF_REQUIRED (const location_type& l); + + static inline + symbol_type + make_CLIENT_CLASS (const location_type& l); + + static inline + symbol_type + make_RESERVATIONS (const location_type& l); + + static inline + symbol_type + make_IP_ADDRESSES (const location_type& l); + + static inline + symbol_type + make_PREFIXES (const location_type& l); + + static inline + symbol_type + make_DUID (const location_type& l); + + static inline + symbol_type + make_HW_ADDRESS (const location_type& l); + + static inline + symbol_type + make_HOSTNAME (const location_type& l); + + static inline + symbol_type + make_FLEX_ID (const location_type& l); + + static inline + symbol_type + make_RELAY (const location_type& l); + + static inline + symbol_type + make_IP_ADDRESS (const location_type& l); + + static inline + symbol_type + make_HOOKS_LIBRARIES (const location_type& l); + + static inline + symbol_type + make_LIBRARY (const location_type& l); + + static inline + symbol_type + make_PARAMETERS (const location_type& l); + + static inline + symbol_type + make_EXPIRED_LEASES_PROCESSING (const location_type& l); + + static inline + symbol_type + make_RECLAIM_TIMER_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l); + + static inline + symbol_type + make_HOLD_RECLAIMED_TIME (const location_type& l); + + static inline + symbol_type + make_MAX_RECLAIM_LEASES (const location_type& l); + + static inline + symbol_type + make_MAX_RECLAIM_TIME (const location_type& l); + + static inline + symbol_type + make_UNWARNED_RECLAIM_CYCLES (const location_type& l); + + static inline + symbol_type + make_SERVER_ID (const location_type& l); + + static inline + symbol_type + make_LLT (const location_type& l); + + static inline + symbol_type + make_EN (const location_type& l); + + static inline + symbol_type + make_LL (const location_type& l); + + static inline + symbol_type + make_IDENTIFIER (const location_type& l); + + static inline + symbol_type + make_HTYPE (const location_type& l); + + static inline + symbol_type + make_TIME (const location_type& l); + + static inline + symbol_type + make_ENTERPRISE_ID (const location_type& l); + + static inline + symbol_type + make_DHCP4O6_PORT (const location_type& l); + + static inline + symbol_type + make_DHCP_MULTI_THREADING (const location_type& l); + + static inline + symbol_type + make_ENABLE_MULTI_THREADING (const location_type& l); + + static inline + symbol_type + make_THREAD_POOL_SIZE (const location_type& l); + + static inline + symbol_type + make_PACKET_QUEUE_SIZE (const location_type& l); + + static inline + symbol_type + make_CONTROL_SOCKET (const location_type& l); + + static inline + symbol_type + make_SOCKET_TYPE (const location_type& l); + + static inline + symbol_type + make_SOCKET_NAME (const location_type& l); + + static inline + symbol_type + make_DHCP_QUEUE_CONTROL (const location_type& l); + + static inline + symbol_type + make_ENABLE_QUEUE (const location_type& l); + + static inline + symbol_type + make_QUEUE_TYPE (const location_type& l); + + static inline + symbol_type + make_CAPACITY (const location_type& l); + + static inline + symbol_type + make_DHCP_DDNS (const location_type& l); + + static inline + symbol_type + make_ENABLE_UPDATES (const location_type& l); + + static inline + symbol_type + make_QUALIFYING_SUFFIX (const location_type& l); + + static inline + symbol_type + make_SERVER_IP (const location_type& l); + + static inline + symbol_type + make_SERVER_PORT (const location_type& l); + + static inline + symbol_type + make_SENDER_IP (const location_type& l); + + static inline + symbol_type + make_SENDER_PORT (const location_type& l); + + static inline + symbol_type + make_MAX_QUEUE_SIZE (const location_type& l); + + static inline + symbol_type + make_NCR_PROTOCOL (const location_type& l); + + static inline + symbol_type + make_NCR_FORMAT (const location_type& l); + + static inline + symbol_type + make_OVERRIDE_NO_UPDATE (const location_type& l); + + static inline + symbol_type + make_OVERRIDE_CLIENT_UPDATE (const location_type& l); + + static inline + symbol_type + make_REPLACE_CLIENT_NAME (const location_type& l); + + static inline + symbol_type + make_GENERATED_PREFIX (const location_type& l); + + static inline + symbol_type + make_UDP (const location_type& l); + + static inline + symbol_type + make_TCP (const location_type& l); + + static inline + symbol_type + make_JSON (const location_type& l); + + static inline + symbol_type + make_WHEN_PRESENT (const location_type& l); + + static inline + symbol_type + make_NEVER (const location_type& l); + + static inline + symbol_type + make_ALWAYS (const location_type& l); + + static inline + symbol_type + make_WHEN_NOT_PRESENT (const location_type& l); + + static inline + symbol_type + make_HOSTNAME_CHAR_SET (const location_type& l); + + static inline + symbol_type + make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l); + + static inline + symbol_type + make_IP_RESERVATIONS_UNIQUE (const location_type& l); + + static inline + symbol_type + make_LOGGERS (const location_type& l); + + static inline + symbol_type + make_OUTPUT_OPTIONS (const location_type& l); + + static inline + symbol_type + make_OUTPUT (const location_type& l); + + static inline + symbol_type + make_DEBUGLEVEL (const location_type& l); + + static inline + symbol_type + make_SEVERITY (const location_type& l); + + static inline + symbol_type + make_FLUSH (const location_type& l); + + static inline + symbol_type + make_MAXSIZE (const location_type& l); + + static inline + symbol_type + make_MAXVER (const location_type& l); + + static inline + symbol_type + make_PATTERN (const location_type& l); + + static inline + symbol_type + make_TOPLEVEL_JSON (const location_type& l); + + static inline + symbol_type + make_TOPLEVEL_DHCP6 (const location_type& l); + + static inline + symbol_type + make_SUB_DHCP6 (const location_type& l); + + static inline + symbol_type + make_SUB_INTERFACES6 (const location_type& l); + + static inline + symbol_type + make_SUB_SUBNET6 (const location_type& l); + + static inline + symbol_type + make_SUB_POOL6 (const location_type& l); + + static inline + symbol_type + make_SUB_PD_POOL (const location_type& l); + + static inline + symbol_type + make_SUB_RESERVATION (const location_type& l); + + static inline + symbol_type + make_SUB_OPTION_DEFS (const location_type& l); + + static inline + symbol_type + make_SUB_OPTION_DEF (const location_type& l); + + static inline + symbol_type + make_SUB_OPTION_DATA (const location_type& l); + + static inline + symbol_type + make_SUB_HOOKS_LIBRARY (const location_type& l); + + static inline + symbol_type + make_SUB_DHCP_DDNS (const location_type& l); + + static inline + symbol_type + make_SUB_CONFIG_CONTROL (const location_type& l); + + static inline + symbol_type + make_STRING (const std::string& v, const location_type& l); + + static inline + symbol_type + make_INTEGER (const int64_t& v, const location_type& l); + + static inline + symbol_type + make_FLOAT (const double& v, const location_type& l); + + static inline + symbol_type + make_BOOLEAN (const bool& v, const location_type& l); + + + /// Build a parser object. + Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg); + virtual ~Dhcp6Parser (); + + /// Parse. + /// \returns 0 iff parsing succeeded. + virtual int parse (); + +#if PARSER6_DEBUG + /// The current debugging stream. + std::ostream& debug_stream () const YY_ATTRIBUTE_PURE; + /// Set the current debugging stream. + void set_debug_stream (std::ostream &); + + /// Type for debugging levels. + typedef int debug_level_type; + /// The current debugging level. + debug_level_type debug_level () const YY_ATTRIBUTE_PURE; + /// Set the current debugging level. + void set_debug_level (debug_level_type l); #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TYPE (location_type l) - { - return symbol_type (token::TOKEN_TYPE, std::move (l)); - } -#else - static - symbol_type - make_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MEMFILE (location_type l) - { - return symbol_type (token::TOKEN_MEMFILE, std::move (l)); - } -#else - static - symbol_type - make_MEMFILE (const location_type& l) - { - return symbol_type (token::TOKEN_MEMFILE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MYSQL (location_type l) - { - return symbol_type (token::TOKEN_MYSQL, std::move (l)); - } -#else - static - symbol_type - make_MYSQL (const location_type& l) - { - return symbol_type (token::TOKEN_MYSQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POSTGRESQL (location_type l) - { - return symbol_type (token::TOKEN_POSTGRESQL, std::move (l)); - } -#else - static - symbol_type - make_POSTGRESQL (const location_type& l) - { - return symbol_type (token::TOKEN_POSTGRESQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CQL (location_type l) - { - return symbol_type (token::TOKEN_CQL, std::move (l)); - } -#else - static - symbol_type - make_CQL (const location_type& l) - { - return symbol_type (token::TOKEN_CQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USER (location_type l) - { - return symbol_type (token::TOKEN_USER, std::move (l)); - } -#else - static - symbol_type - make_USER (const location_type& l) - { - return symbol_type (token::TOKEN_USER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PASSWORD (location_type l) - { - return symbol_type (token::TOKEN_PASSWORD, std::move (l)); - } -#else - static - symbol_type - make_PASSWORD (const location_type& l) - { - return symbol_type (token::TOKEN_PASSWORD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOST (location_type l) - { - return symbol_type (token::TOKEN_HOST, std::move (l)); - } -#else - static - symbol_type - make_HOST (const location_type& l) - { - return symbol_type (token::TOKEN_HOST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PORT (location_type l) - { - return symbol_type (token::TOKEN_PORT, std::move (l)); - } -#else - static - symbol_type - make_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PERSIST (location_type l) - { - return symbol_type (token::TOKEN_PERSIST, std::move (l)); - } -#else - static - symbol_type - make_PERSIST (const location_type& l) - { - return symbol_type (token::TOKEN_PERSIST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LFC_INTERVAL (location_type l) - { - return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l)); - } -#else - static - symbol_type - make_LFC_INTERVAL (const location_type& l) - { - return symbol_type (token::TOKEN_LFC_INTERVAL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_READONLY (location_type l) - { - return symbol_type (token::TOKEN_READONLY, std::move (l)); - } -#else - static - symbol_type - make_READONLY (const location_type& l) - { - return symbol_type (token::TOKEN_READONLY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONNECT_TIMEOUT (location_type l) - { - return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l)); - } -#else - static - symbol_type - make_CONNECT_TIMEOUT (const location_type& l) - { - return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTACT_POINTS (location_type l) - { - return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l)); - } -#else - static - symbol_type - make_CONTACT_POINTS (const location_type& l) - { - return symbol_type (token::TOKEN_CONTACT_POINTS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECONNECT_TRIES (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECONNECT_TRIES (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECONNECT_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_RECONNECT_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_KEYSPACE (location_type l) - { - return symbol_type (token::TOKEN_KEYSPACE, std::move (l)); - } -#else - static - symbol_type - make_KEYSPACE (const location_type& l) - { - return symbol_type (token::TOKEN_KEYSPACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONSISTENCY (location_type l) - { - return symbol_type (token::TOKEN_CONSISTENCY, std::move (l)); - } -#else - static - symbol_type - make_CONSISTENCY (const location_type& l) - { - return symbol_type (token::TOKEN_CONSISTENCY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERIAL_CONSISTENCY (location_type l) - { - return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l)); - } -#else - static - symbol_type - make_SERIAL_CONSISTENCY (const location_type& l) - { - return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REQUEST_TIMEOUT (location_type l) - { - return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l)); - } -#else - static - symbol_type - make_REQUEST_TIMEOUT (const location_type& l) - { - return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP_KEEPALIVE (location_type l) - { - return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l)); - } -#else - static - symbol_type - make_TCP_KEEPALIVE (const location_type& l) - { - return symbol_type (token::TOKEN_TCP_KEEPALIVE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP_NODELAY (location_type l) - { - return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l)); - } -#else - static - symbol_type - make_TCP_NODELAY (const location_type& l) - { - return symbol_type (token::TOKEN_TCP_NODELAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_ROW_ERRORS (location_type l) - { - return symbol_type (token::TOKEN_MAX_ROW_ERRORS, std::move (l)); - } -#else - static - symbol_type - make_MAX_ROW_ERRORS (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFERRED_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_PREFERRED_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_PREFERRED_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MIN_PREFERRED_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_MIN_PREFERRED_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_PREFERRED_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_MAX_PREFERRED_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MIN_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_MIN_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_MAX_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RENEW_TIMER (location_type l) - { - return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l)); - } -#else - static - symbol_type - make_RENEW_TIMER (const location_type& l) - { - return symbol_type (token::TOKEN_RENEW_TIMER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REBIND_TIMER (location_type l) - { - return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l)); - } -#else - static - symbol_type - make_REBIND_TIMER (const location_type& l) - { - return symbol_type (token::TOKEN_REBIND_TIMER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CALCULATE_TEE_TIMES (location_type l) - { - return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l)); - } -#else - static - symbol_type - make_CALCULATE_TEE_TIMES (const location_type& l) - { - return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_T1_PERCENT (location_type l) - { - return symbol_type (token::TOKEN_T1_PERCENT, std::move (l)); - } -#else - static - symbol_type - make_T1_PERCENT (const location_type& l) - { - return symbol_type (token::TOKEN_T1_PERCENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_T2_PERCENT (location_type l) - { - return symbol_type (token::TOKEN_T2_PERCENT, std::move (l)); - } -#else - static - symbol_type - make_T2_PERCENT (const location_type& l) - { - return symbol_type (token::TOKEN_T2_PERCENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CACHE_THRESHOLD (location_type l) - { - return symbol_type (token::TOKEN_CACHE_THRESHOLD, std::move (l)); - } -#else - static - symbol_type - make_CACHE_THRESHOLD (const location_type& l) - { - return symbol_type (token::TOKEN_CACHE_THRESHOLD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CACHE_MAX_AGE (location_type l) - { - return symbol_type (token::TOKEN_CACHE_MAX_AGE, std::move (l)); - } -#else - static - symbol_type - make_CACHE_MAX_AGE (const location_type& l) - { - return symbol_type (token::TOKEN_CACHE_MAX_AGE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DECLINE_PROBATION_PERIOD (location_type l) - { - return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l)); - } -#else - static - symbol_type - make_DECLINE_PROBATION_PERIOD (const location_type& l) - { - return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_TAG (location_type l) - { - return symbol_type (token::TOKEN_SERVER_TAG, std::move (l)); - } -#else - static - symbol_type - make_SERVER_TAG (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_TAG, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_COUNT (location_type l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, std::move (l)); - } -#else - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_AGE (location_type l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, std::move (l)); - } -#else - static - symbol_type - make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l) - { - return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_SEND_UPDATES (location_type l) - { - return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, std::move (l)); - } -#else - static - symbol_type - make_DDNS_SEND_UPDATES (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_OVERRIDE_NO_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_OVERRIDE_CLIENT_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_REPLACE_CLIENT_NAME (location_type l) - { - return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, std::move (l)); - } -#else - static - symbol_type - make_DDNS_REPLACE_CLIENT_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_GENERATED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_DDNS_GENERATED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_QUALIFYING_SUFFIX (location_type l) - { - return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, std::move (l)); - } -#else - static - symbol_type - make_DDNS_QUALIFYING_SUFFIX (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DDNS_UPDATE_ON_RENEW (location_type l) - { - return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, std::move (l)); - } -#else - static - symbol_type - make_DDNS_UPDATE_ON_RENEW (const location_type& l) - { - return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STORE_EXTENDED_INFO (location_type l) - { - return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l)); - } -#else - static - symbol_type - make_STORE_EXTENDED_INFO (const location_type& l) - { - return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET6 (location_type l) - { - return symbol_type (token::TOKEN_SUBNET6, std::move (l)); - } -#else - static - symbol_type - make_SUBNET6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OPTION_DEF (location_type l) - { - return symbol_type (token::TOKEN_OPTION_DEF, std::move (l)); - } -#else - static - symbol_type - make_OPTION_DEF (const location_type& l) - { - return symbol_type (token::TOKEN_OPTION_DEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OPTION_DATA (location_type l) - { - return symbol_type (token::TOKEN_OPTION_DATA, std::move (l)); - } -#else - static - symbol_type - make_OPTION_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_OPTION_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NAME (location_type l) - { - return symbol_type (token::TOKEN_NAME, std::move (l)); - } -#else - static - symbol_type - make_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DATA (location_type l) - { - return symbol_type (token::TOKEN_DATA, std::move (l)); - } -#else - static - symbol_type - make_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CODE (location_type l) - { - return symbol_type (token::TOKEN_CODE, std::move (l)); - } -#else - static - symbol_type - make_CODE (const location_type& l) - { - return symbol_type (token::TOKEN_CODE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SPACE (location_type l) - { - return symbol_type (token::TOKEN_SPACE, std::move (l)); - } -#else - static - symbol_type - make_SPACE (const location_type& l) - { - return symbol_type (token::TOKEN_SPACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CSV_FORMAT (location_type l) - { - return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l)); - } -#else - static - symbol_type - make_CSV_FORMAT (const location_type& l) - { - return symbol_type (token::TOKEN_CSV_FORMAT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALWAYS_SEND (location_type l) - { - return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l)); - } -#else - static - symbol_type - make_ALWAYS_SEND (const location_type& l) - { - return symbol_type (token::TOKEN_ALWAYS_SEND, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECORD_TYPES (location_type l) - { - return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l)); - } -#else - static - symbol_type - make_RECORD_TYPES (const location_type& l) - { - return symbol_type (token::TOKEN_RECORD_TYPES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENCAPSULATE (location_type l) - { - return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l)); - } -#else - static - symbol_type - make_ENCAPSULATE (const location_type& l) - { - return symbol_type (token::TOKEN_ENCAPSULATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ARRAY (location_type l) - { - return symbol_type (token::TOKEN_ARRAY, std::move (l)); - } -#else - static - symbol_type - make_ARRAY (const location_type& l) - { - return symbol_type (token::TOKEN_ARRAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POOLS (location_type l) - { - return symbol_type (token::TOKEN_POOLS, std::move (l)); - } -#else - static - symbol_type - make_POOLS (const location_type& l) - { - return symbol_type (token::TOKEN_POOLS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POOL (location_type l) - { - return symbol_type (token::TOKEN_POOL, std::move (l)); - } -#else - static - symbol_type - make_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PD_POOLS (location_type l) - { - return symbol_type (token::TOKEN_PD_POOLS, std::move (l)); - } -#else - static - symbol_type - make_PD_POOLS (const location_type& l) - { - return symbol_type (token::TOKEN_PD_POOLS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFIX_LEN (location_type l) - { - return symbol_type (token::TOKEN_PREFIX_LEN, std::move (l)); - } -#else - static - symbol_type - make_PREFIX_LEN (const location_type& l) - { - return symbol_type (token::TOKEN_PREFIX_LEN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXCLUDED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_EXCLUDED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXCLUDED_PREFIX_LEN (location_type l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, std::move (l)); - } -#else - static - symbol_type - make_EXCLUDED_PREFIX_LEN (const location_type& l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DELEGATED_LEN (location_type l) - { - return symbol_type (token::TOKEN_DELEGATED_LEN, std::move (l)); - } -#else - static - symbol_type - make_DELEGATED_LEN (const location_type& l) - { - return symbol_type (token::TOKEN_DELEGATED_LEN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USER_CONTEXT (location_type l) - { - return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l)); - } -#else - static - symbol_type - make_USER_CONTEXT (const location_type& l) - { - return symbol_type (token::TOKEN_USER_CONTEXT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COMMENT (location_type l) - { - return symbol_type (token::TOKEN_COMMENT, std::move (l)); - } -#else - static - symbol_type - make_COMMENT (const location_type& l) - { - return symbol_type (token::TOKEN_COMMENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET (location_type l) - { - return symbol_type (token::TOKEN_SUBNET, std::move (l)); - } -#else - static - symbol_type - make_SUBNET (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACE (location_type l) - { - return symbol_type (token::TOKEN_INTERFACE, std::move (l)); - } -#else - static - symbol_type - make_INTERFACE (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACE_ID (location_type l) - { - return symbol_type (token::TOKEN_INTERFACE_ID, std::move (l)); - } -#else - static - symbol_type - make_INTERFACE_ID (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACE_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ID (location_type l) - { - return symbol_type (token::TOKEN_ID, std::move (l)); - } -#else - static - symbol_type - make_ID (const location_type& l) - { - return symbol_type (token::TOKEN_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RAPID_COMMIT (location_type l) - { - return symbol_type (token::TOKEN_RAPID_COMMIT, std::move (l)); - } -#else - static - symbol_type - make_RAPID_COMMIT (const location_type& l) - { - return symbol_type (token::TOKEN_RAPID_COMMIT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RESERVATION_MODE (location_type l) - { - return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l)); - } -#else - static - symbol_type - make_RESERVATION_MODE (const location_type& l) - { - return symbol_type (token::TOKEN_RESERVATION_MODE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DISABLED (location_type l) - { - return symbol_type (token::TOKEN_DISABLED, std::move (l)); - } -#else - static - symbol_type - make_DISABLED (const location_type& l) - { - return symbol_type (token::TOKEN_DISABLED, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUT_OF_POOL (location_type l) - { - return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l)); - } -#else - static - symbol_type - make_OUT_OF_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_OUT_OF_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_GLOBAL (location_type l) - { - return symbol_type (token::TOKEN_GLOBAL, std::move (l)); - } -#else - static - symbol_type - make_GLOBAL (const location_type& l) - { - return symbol_type (token::TOKEN_GLOBAL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALL (location_type l) - { - return symbol_type (token::TOKEN_ALL, std::move (l)); - } -#else - static - symbol_type - make_ALL (const location_type& l) - { - return symbol_type (token::TOKEN_ALL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SHARED_NETWORKS (location_type l) - { - return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l)); - } -#else - static - symbol_type - make_SHARED_NETWORKS (const location_type& l) - { - return symbol_type (token::TOKEN_SHARED_NETWORKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAC_SOURCES (location_type l) - { - return symbol_type (token::TOKEN_MAC_SOURCES, std::move (l)); - } -#else - static - symbol_type - make_MAC_SOURCES (const location_type& l) - { - return symbol_type (token::TOKEN_MAC_SOURCES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RELAY_SUPPLIED_OPTIONS (location_type l) - { - return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, std::move (l)); - } -#else - static - symbol_type - make_RELAY_SUPPLIED_OPTIONS (const location_type& l) - { - return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOST_RESERVATION_IDENTIFIERS (location_type l) - { - return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l)); - } -#else - static - symbol_type - make_HOST_RESERVATION_IDENTIFIERS (const location_type& l) - { - return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SANITY_CHECKS (location_type l) - { - return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l)); - } -#else - static - symbol_type - make_SANITY_CHECKS (const location_type& l) - { - return symbol_type (token::TOKEN_SANITY_CHECKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LEASE_CHECKS (location_type l) - { - return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l)); - } -#else - static - symbol_type - make_LEASE_CHECKS (const location_type& l) - { - return symbol_type (token::TOKEN_LEASE_CHECKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_CLASSES (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_CLASSES (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_CLASSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REQUIRE_CLIENT_CLASSES (location_type l) - { - return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l)); - } -#else - static - symbol_type - make_REQUIRE_CLIENT_CLASSES (const location_type& l) - { - return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TEST (location_type l) - { - return symbol_type (token::TOKEN_TEST, std::move (l)); - } -#else - static - symbol_type - make_TEST (const location_type& l) - { - return symbol_type (token::TOKEN_TEST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ONLY_IF_REQUIRED (location_type l) - { - return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l)); - } -#else - static - symbol_type - make_ONLY_IF_REQUIRED (const location_type& l) - { - return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_CLASS (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_CLASS (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_CLASS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RESERVATIONS (location_type l) - { - return symbol_type (token::TOKEN_RESERVATIONS, std::move (l)); - } -#else - static - symbol_type - make_RESERVATIONS (const location_type& l) - { - return symbol_type (token::TOKEN_RESERVATIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_ADDRESSES (location_type l) - { - return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l)); - } -#else - static - symbol_type - make_IP_ADDRESSES (const location_type& l) - { - return symbol_type (token::TOKEN_IP_ADDRESSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFIXES (location_type l) - { - return symbol_type (token::TOKEN_PREFIXES, std::move (l)); - } -#else - static - symbol_type - make_PREFIXES (const location_type& l) - { - return symbol_type (token::TOKEN_PREFIXES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DUID (location_type l) - { - return symbol_type (token::TOKEN_DUID, std::move (l)); - } -#else - static - symbol_type - make_DUID (const location_type& l) - { - return symbol_type (token::TOKEN_DUID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HW_ADDRESS (location_type l) - { - return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l)); - } -#else - static - symbol_type - make_HW_ADDRESS (const location_type& l) - { - return symbol_type (token::TOKEN_HW_ADDRESS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLEX_ID (location_type l) - { - return symbol_type (token::TOKEN_FLEX_ID, std::move (l)); - } -#else - static - symbol_type - make_FLEX_ID (const location_type& l) - { - return symbol_type (token::TOKEN_FLEX_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RELAY (location_type l) - { - return symbol_type (token::TOKEN_RELAY, std::move (l)); - } -#else - static - symbol_type - make_RELAY (const location_type& l) - { - return symbol_type (token::TOKEN_RELAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_ADDRESS (location_type l) - { - return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l)); - } -#else - static - symbol_type - make_IP_ADDRESS (const location_type& l) - { - return symbol_type (token::TOKEN_IP_ADDRESS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOOKS_LIBRARIES (location_type l) - { - return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l)); - } -#else - static - symbol_type - make_HOOKS_LIBRARIES (const location_type& l) - { - return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LIBRARY (location_type l) - { - return symbol_type (token::TOKEN_LIBRARY, std::move (l)); - } -#else - static - symbol_type - make_LIBRARY (const location_type& l) - { - return symbol_type (token::TOKEN_LIBRARY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARAMETERS (location_type l) - { - return symbol_type (token::TOKEN_PARAMETERS, std::move (l)); - } -#else - static - symbol_type - make_PARAMETERS (const location_type& l) - { - return symbol_type (token::TOKEN_PARAMETERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXPIRED_LEASES_PROCESSING (location_type l) - { - return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l)); - } -#else - static - symbol_type - make_EXPIRED_LEASES_PROCESSING (const location_type& l) - { - return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECLAIM_TIMER_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_RECLAIM_TIMER_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOLD_RECLAIMED_TIME (location_type l) - { - return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l)); - } -#else - static - symbol_type - make_HOLD_RECLAIMED_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECLAIM_LEASES (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECLAIM_LEASES (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECLAIM_TIME (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECLAIM_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_UNWARNED_RECLAIM_CYCLES (location_type l) - { - return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l)); - } -#else - static - symbol_type - make_UNWARNED_RECLAIM_CYCLES (const location_type& l) - { - return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_ID (location_type l) - { - return symbol_type (token::TOKEN_SERVER_ID, std::move (l)); - } -#else - static - symbol_type - make_SERVER_ID (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LLT (location_type l) - { - return symbol_type (token::TOKEN_LLT, std::move (l)); - } -#else - static - symbol_type - make_LLT (const location_type& l) - { - return symbol_type (token::TOKEN_LLT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EN (location_type l) - { - return symbol_type (token::TOKEN_EN, std::move (l)); - } -#else - static - symbol_type - make_EN (const location_type& l) - { - return symbol_type (token::TOKEN_EN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LL (location_type l) - { - return symbol_type (token::TOKEN_LL, std::move (l)); - } -#else - static - symbol_type - make_LL (const location_type& l) - { - return symbol_type (token::TOKEN_LL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IDENTIFIER (location_type l) - { - return symbol_type (token::TOKEN_IDENTIFIER, std::move (l)); - } -#else - static - symbol_type - make_IDENTIFIER (const location_type& l) - { - return symbol_type (token::TOKEN_IDENTIFIER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HTYPE (location_type l) - { - return symbol_type (token::TOKEN_HTYPE, std::move (l)); - } -#else - static - symbol_type - make_HTYPE (const location_type& l) - { - return symbol_type (token::TOKEN_HTYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TIME (location_type l) - { - return symbol_type (token::TOKEN_TIME, std::move (l)); - } -#else - static - symbol_type - make_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENTERPRISE_ID (location_type l) - { - return symbol_type (token::TOKEN_ENTERPRISE_ID, std::move (l)); - } -#else - static - symbol_type - make_ENTERPRISE_ID (const location_type& l) - { - return symbol_type (token::TOKEN_ENTERPRISE_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP4O6_PORT (location_type l) - { - return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l)); - } -#else - static - symbol_type - make_DHCP4O6_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP4O6_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_MULTI_THREADING (location_type l) - { - return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, std::move (l)); - } -#else - static - symbol_type - make_DHCP_MULTI_THREADING (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_MULTI_THREADING (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_MULTI_THREADING (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_THREAD_POOL_SIZE (location_type l) - { - return symbol_type (token::TOKEN_THREAD_POOL_SIZE, std::move (l)); - } -#else - static - symbol_type - make_THREAD_POOL_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PACKET_QUEUE_SIZE (location_type l) - { - return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, std::move (l)); - } -#else - static - symbol_type - make_PACKET_QUEUE_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTROL_SOCKET (location_type l) - { - return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l)); - } -#else - static - symbol_type - make_CONTROL_SOCKET (const location_type& l) - { - return symbol_type (token::TOKEN_CONTROL_SOCKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SOCKET_TYPE (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SOCKET_NAME (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_QUEUE_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_DHCP_QUEUE_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_QUEUE (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_QUEUE, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_QUEUE (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_QUEUE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_QUEUE_TYPE (location_type l) - { - return symbol_type (token::TOKEN_QUEUE_TYPE, std::move (l)); - } -#else - static - symbol_type - make_QUEUE_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_QUEUE_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CAPACITY (location_type l) - { - return symbol_type (token::TOKEN_CAPACITY, std::move (l)); - } -#else - static - symbol_type - make_CAPACITY (const location_type& l) - { - return symbol_type (token::TOKEN_CAPACITY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_DDNS (location_type l) - { - return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l)); - } -#else - static - symbol_type - make_DHCP_DDNS (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_DDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_UPDATES (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_UPDATES (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_UPDATES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_QUALIFYING_SUFFIX (location_type l) - { - return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l)); - } -#else - static - symbol_type - make_QUALIFYING_SUFFIX (const location_type& l) - { - return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_IP (location_type l) - { - return symbol_type (token::TOKEN_SERVER_IP, std::move (l)); - } -#else - static - symbol_type - make_SERVER_IP (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_IP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_PORT (location_type l) - { - return symbol_type (token::TOKEN_SERVER_PORT, std::move (l)); - } -#else - static - symbol_type - make_SERVER_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SENDER_IP (location_type l) - { - return symbol_type (token::TOKEN_SENDER_IP, std::move (l)); - } -#else - static - symbol_type - make_SENDER_IP (const location_type& l) - { - return symbol_type (token::TOKEN_SENDER_IP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SENDER_PORT (location_type l) - { - return symbol_type (token::TOKEN_SENDER_PORT, std::move (l)); - } -#else - static - symbol_type - make_SENDER_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_SENDER_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_QUEUE_SIZE (location_type l) - { - return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l)); - } -#else - static - symbol_type - make_MAX_QUEUE_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NCR_PROTOCOL (location_type l) - { - return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l)); - } -#else - static - symbol_type - make_NCR_PROTOCOL (const location_type& l) - { - return symbol_type (token::TOKEN_NCR_PROTOCOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NCR_FORMAT (location_type l) - { - return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l)); - } -#else - static - symbol_type - make_NCR_FORMAT (const location_type& l) - { - return symbol_type (token::TOKEN_NCR_FORMAT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OVERRIDE_NO_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_OVERRIDE_NO_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OVERRIDE_CLIENT_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_OVERRIDE_CLIENT_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REPLACE_CLIENT_NAME (location_type l) - { - return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l)); - } -#else - static - symbol_type - make_REPLACE_CLIENT_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_GENERATED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_GENERATED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_GENERATED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_UDP (location_type l) - { - return symbol_type (token::TOKEN_UDP, std::move (l)); - } -#else - static - symbol_type - make_UDP (const location_type& l) - { - return symbol_type (token::TOKEN_UDP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP (location_type l) - { - return symbol_type (token::TOKEN_TCP, std::move (l)); - } -#else - static - symbol_type - make_TCP (const location_type& l) - { - return symbol_type (token::TOKEN_TCP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_JSON (location_type l) - { - return symbol_type (token::TOKEN_JSON, std::move (l)); - } -#else - static - symbol_type - make_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_WHEN_PRESENT (location_type l) - { - return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l)); - } -#else - static - symbol_type - make_WHEN_PRESENT (const location_type& l) - { - return symbol_type (token::TOKEN_WHEN_PRESENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NEVER (location_type l) - { - return symbol_type (token::TOKEN_NEVER, std::move (l)); - } -#else - static - symbol_type - make_NEVER (const location_type& l) - { - return symbol_type (token::TOKEN_NEVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALWAYS (location_type l) - { - return symbol_type (token::TOKEN_ALWAYS, std::move (l)); - } -#else - static - symbol_type - make_ALWAYS (const location_type& l) - { - return symbol_type (token::TOKEN_ALWAYS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_WHEN_NOT_PRESENT (location_type l) - { - return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l)); - } -#else - static - symbol_type - make_WHEN_NOT_PRESENT (const location_type& l) - { - return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME_CHAR_SET (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME_CHAR_SET (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME_CHAR_REPLACEMENT (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_RESERVATIONS_UNIQUE (location_type l) - { - return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, std::move (l)); - } -#else - static - symbol_type - make_IP_RESERVATIONS_UNIQUE (const location_type& l) - { - return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LOGGERS (location_type l) - { - return symbol_type (token::TOKEN_LOGGERS, std::move (l)); - } -#else - static - symbol_type - make_LOGGERS (const location_type& l) - { - return symbol_type (token::TOKEN_LOGGERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTPUT_OPTIONS (location_type l) - { - return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l)); - } -#else - static - symbol_type - make_OUTPUT_OPTIONS (const location_type& l) - { - return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTPUT (location_type l) - { - return symbol_type (token::TOKEN_OUTPUT, std::move (l)); - } -#else - static - symbol_type - make_OUTPUT (const location_type& l) - { - return symbol_type (token::TOKEN_OUTPUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DEBUGLEVEL (location_type l) - { - return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l)); - } -#else - static - symbol_type - make_DEBUGLEVEL (const location_type& l) - { - return symbol_type (token::TOKEN_DEBUGLEVEL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SEVERITY (location_type l) - { - return symbol_type (token::TOKEN_SEVERITY, std::move (l)); - } -#else - static - symbol_type - make_SEVERITY (const location_type& l) - { - return symbol_type (token::TOKEN_SEVERITY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLUSH (location_type l) - { - return symbol_type (token::TOKEN_FLUSH, std::move (l)); - } -#else - static - symbol_type - make_FLUSH (const location_type& l) - { - return symbol_type (token::TOKEN_FLUSH, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAXSIZE (location_type l) - { - return symbol_type (token::TOKEN_MAXSIZE, std::move (l)); - } -#else - static - symbol_type - make_MAXSIZE (const location_type& l) - { - return symbol_type (token::TOKEN_MAXSIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAXVER (location_type l) - { - return symbol_type (token::TOKEN_MAXVER, std::move (l)); - } -#else - static - symbol_type - make_MAXVER (const location_type& l) - { - return symbol_type (token::TOKEN_MAXVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PATTERN (location_type l) - { - return symbol_type (token::TOKEN_PATTERN, std::move (l)); - } -#else - static - symbol_type - make_PATTERN (const location_type& l) - { - return symbol_type (token::TOKEN_PATTERN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TOPLEVEL_JSON (location_type l) - { - return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l)); - } -#else - static - symbol_type - make_TOPLEVEL_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_TOPLEVEL_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TOPLEVEL_DHCP6 (location_type l) - { - return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, std::move (l)); - } -#else - static - symbol_type - make_TOPLEVEL_DHCP6 (const location_type& l) - { - return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_DHCP6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_DHCP6, std::move (l)); - } -#else - static - symbol_type - make_SUB_DHCP6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_DHCP6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_INTERFACES6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_INTERFACES6, std::move (l)); - } -#else - static - symbol_type - make_SUB_INTERFACES6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_INTERFACES6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_SUBNET6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_SUBNET6, std::move (l)); - } -#else - static - symbol_type - make_SUB_SUBNET6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_SUBNET6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_POOL6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_POOL6, std::move (l)); - } -#else - static - symbol_type - make_SUB_POOL6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_POOL6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_PD_POOL (location_type l) - { - return symbol_type (token::TOKEN_SUB_PD_POOL, std::move (l)); - } -#else - static - symbol_type - make_SUB_PD_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_PD_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_RESERVATION (location_type l) - { - return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l)); - } -#else - static - symbol_type - make_SUB_RESERVATION (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_RESERVATION, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DEFS (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DEFS (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DEF (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DEF (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DATA (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_HOOKS_LIBRARY (location_type l) - { - return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l)); - } -#else - static - symbol_type - make_SUB_HOOKS_LIBRARY (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_DHCP_DDNS (location_type l) - { - return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l)); - } -#else - static - symbol_type - make_SUB_DHCP_DDNS (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_CONFIG_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_SUB_CONFIG_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STRING (std::string v, location_type l) - { - return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_STRING (const std::string& v, const location_type& l) - { - return symbol_type (token::TOKEN_STRING, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTEGER (int64_t v, location_type l) - { - return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_INTEGER (const int64_t& v, const location_type& l) - { - return symbol_type (token::TOKEN_INTEGER, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLOAT (double v, location_type l) - { - return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FLOAT (const double& v, const location_type& l) - { - return symbol_type (token::TOKEN_FLOAT, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_BOOLEAN (bool v, location_type l) - { - return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_BOOLEAN (const bool& v, const location_type& l) - { - return symbol_type (token::TOKEN_BOOLEAN, v, l); - } + + /// Report a syntax error. + /// \param loc where the syntax error is found. + /// \param msg a description of the syntax error. + virtual void error (const location_type& loc, const std::string& msg); + + /// Report a syntax error. + void error (const syntax_error& err); + + private: + /// This class is not copyable. + Dhcp6Parser (const Dhcp6Parser&); + Dhcp6Parser& operator= (const Dhcp6Parser&); + + /// State numbers. + typedef int state_type; + + /// Generate an error message. + /// \param yystate the state where the error occurred. + /// \param yyla the lookahead token. + virtual std::string yysyntax_error_ (state_type yystate, + const symbol_type& yyla) const; + + /// Compute post-reduction state. + /// \param yystate the current state + /// \param yysym the nonterminal to push on the stack + state_type yy_lr_goto_state_ (state_type yystate, int yysym); + + /// Whether the given \c yypact_ value indicates a defaulted state. + /// \param yyvalue the value to check + static bool yy_pact_value_is_default_ (int yyvalue); + + /// Whether the given \c yytable_ value indicates a syntax error. + /// \param yyvalue the value to check + static bool yy_table_value_is_error_ (int yyvalue); + + static const short int yypact_ninf_; + static const signed char yytable_ninf_; + + /// Convert a scanner token number \a t to a symbol number. + static token_number_type yytranslate_ (token_type t); + + // Tables. + // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + // STATE-NUM. + static const short int yypact_[]; + + // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + // Performed when YYTABLE does not specify something else to do. Zero + // means the default is an error. + static const unsigned short int yydefact_[]; + + // YYPGOTO[NTERM-NUM]. + static const short int yypgoto_[]; + + // YYDEFGOTO[NTERM-NUM]. + static const short int yydefgoto_[]; + + // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + // positive, shift that token. If negative, reduce the rule whose + // number is the opposite. If YYTABLE_NINF, syntax error. + static const unsigned short int yytable_[]; + + static const short int yycheck_[]; + + // YYSTOS[STATE-NUM] -- The (internal number of the) accessing + // symbol of state STATE-NUM. + static const unsigned short int yystos_[]; + + // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. + static const unsigned short int yyr1_[]; + + // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. + static const unsigned char yyr2_[]; + + + /// Convert the symbol name \a n to a form suitable for a diagnostic. + static std::string yytnamerr_ (const char *n); + + + /// For a symbol, its name in clear. + static const char* const yytname_[]; +#if PARSER6_DEBUG + // YYRLINE[YYN] -- Source line where rule number YYN was defined. + static const unsigned short int yyrline_[]; + /// Report on the debug stream that the rule \a r is going to be reduced. + virtual void yy_reduce_print_ (int r); + /// Print the state stack on the debug stream. + virtual void yystack_print_ (); + + // Debugging. + int yydebug_; + std::ostream* yycdebug_; + + /// \brief Display a symbol type, value and location. + /// \param yyo The output stream. + /// \param yysym The symbol. + template + void yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const; #endif + /// \brief Reclaim the memory associated to a symbol. + /// \param yymsg Why this token is reclaimed. + /// If null, print nothing. + /// \param yysym The symbol. + template + void yy_destroy_ (const char* yymsg, basic_symbol& yysym) const; + + private: + /// Type access provider for state based symbols. + struct by_state + { + /// Default constructor. + by_state (); + + /// The symbol type as needed by the constructor. + typedef state_type kind_type; + + /// Constructor. + by_state (kind_type s); + + /// Copy constructor. + by_state (const by_state& other); + + /// Record that this symbol is empty. + void clear (); + + /// Steal the symbol type from \a that. + void move (by_state& that); + + /// The (internal) type number (corresponding to \a state). + /// \a empty_symbol when empty. + symbol_number_type type_get () const; + + /// The state number used to denote an empty symbol. + enum { empty_state = -1 }; + + /// The state. + /// \a empty when empty. + state_type state; + }; + + /// "Internal" symbol: element of the stack. + struct stack_symbol_type : basic_symbol + { + /// Superclass. + typedef basic_symbol super_type; + /// Construct an empty symbol. + stack_symbol_type (); + /// Steal the contents from \a sym to build this. + stack_symbol_type (state_type s, symbol_type& sym); + /// Assignment, needed by push_back. + stack_symbol_type& operator= (const stack_symbol_type& that); + }; + + /// Stack type. + typedef stack stack_type; + + /// The stack. + stack_type yystack_; + + /// Push a new state on the stack. + /// \param m a debug message to display + /// if null, no trace is output. + /// \param s the symbol + /// \warning the contents of \a s.value is stolen. + void yypush_ (const char* m, stack_symbol_type& s); + + /// Push a new look ahead token on the state on the stack. + /// \param m a debug message to display + /// if null, no trace is output. + /// \param s the state + /// \param sym the symbol (for its value and location). + /// \warning the contents of \a s.value is stolen. + void yypush_ (const char* m, state_type s, symbol_type& sym); + + /// Pop \a n symbols the three stacks. + void yypop_ (unsigned int n = 1); + + /// Constants. + enum + { + yyeof_ = 0, + yylast_ = 1240, ///< Last index in yytable_. + yynnts_ = 427, ///< Number of nonterminal symbols. + yyfinal_ = 30, ///< Termination state number. + yyterror_ = 1, + yyerrcode_ = 256, + yyntokens_ = 203 ///< Number of tokens. + }; + + + // User arguments. + isc::dhcp::Parser6Context& ctx; + }; + + // Symbol number corresponding to token number t. + inline + Dhcp6Parser::token_number_type + Dhcp6Parser::yytranslate_ (token_type t) + { + static + const token_number_type + translate_table[] = + { + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202 + }; + const unsigned int user_token_number_max_ = 457; + const token_number_type undef_token_ = 2; + + if (static_cast(t) <= yyeof_) + return yyeof_; + else if (static_cast (t) <= user_token_number_max_) + return translate_table[t]; + else + return undef_token_; + } + + inline + Dhcp6Parser::syntax_error::syntax_error (const location_type& l, const std::string& m) + : std::runtime_error (m) + , location (l) + {} + + // basic_symbol. + template + inline + Dhcp6Parser::basic_symbol::basic_symbol () + : value () + {} + + template + inline + Dhcp6Parser::basic_symbol::basic_symbol (const basic_symbol& other) + : Base (other) + , value () + , location (other.location) + { + switch (other.type_get ()) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value + value.copy< ElementPtr > (other.value); + break; + + case 202: // "boolean" + value.copy< bool > (other.value); + break; + + case 201: // "floating point" + value.copy< double > (other.value); + break; + + case 200: // "integer" + value.copy< int64_t > (other.value); + break; + + case 199: // "constant string" + value.copy< std::string > (other.value); + break; + + default: + break; + } + + } + + + template + inline + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l) + : Base (t) + , value () + , location (l) + { + (void) v; + switch (this->type_get ()) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value + value.copy< ElementPtr > (v); + break; + + case 202: // "boolean" + value.copy< bool > (v); + break; + + case 201: // "floating point" + value.copy< double > (v); + break; + + case 200: // "integer" + value.copy< int64_t > (v); + break; + + case 199: // "constant string" + value.copy< std::string > (v); + break; + + default: + break; + } +} + + + // Implementation of basic_symbol constructor for each type. + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const location_type& l) + : Base (t) + , value () + , location (l) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const double v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} + + + template + inline + Dhcp6Parser::basic_symbol::~basic_symbol () + { + clear (); + } + + template + inline + void + Dhcp6Parser::basic_symbol::clear () + { + // User destructor. + symbol_number_type yytype = this->type_get (); + basic_symbol& yysym = *this; + (void) yysym; + switch (yytype) + { + default: + break; + } + + // Type destructor. + switch (yytype) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value + value.template destroy< ElementPtr > (); + break; + + case 202: // "boolean" + value.template destroy< bool > (); + break; + + case 201: // "floating point" + value.template destroy< double > (); + break; + + case 200: // "integer" + value.template destroy< int64_t > (); + break; + + case 199: // "constant string" + value.template destroy< std::string > (); + break; + + default: + break; + } + + Base::clear (); + } + + template + inline + bool + Dhcp6Parser::basic_symbol::empty () const + { + return Base::type_get () == empty_symbol; + } + + template + inline + void + Dhcp6Parser::basic_symbol::move (basic_symbol& s) + { + super_type::move(s); + switch (this->type_get ()) + { + case 219: // value + case 223: // map_value + case 264: // ddns_replace_client_name_value + case 304: // db_type + case 405: // hr_mode + case 541: // duid_type + case 584: // ncr_protocol_value + value.move< ElementPtr > (s.value); + break; + + case 202: // "boolean" + value.move< bool > (s.value); + break; + + case 201: // "floating point" + value.move< double > (s.value); + break; + + case 200: // "integer" + value.move< int64_t > (s.value); + break; + + case 199: // "constant string" + value.move< std::string > (s.value); + break; + + default: + break; + } + + location = s.location; + } + + // by_type. + inline + Dhcp6Parser::by_type::by_type () + : type (empty_symbol) + {} + + inline + Dhcp6Parser::by_type::by_type (const by_type& other) + : type (other.type) + {} + + inline + Dhcp6Parser::by_type::by_type (token_type t) + : type (yytranslate_ (t)) + {} + + inline + void + Dhcp6Parser::by_type::clear () + { + type = empty_symbol; + } + + inline + void + Dhcp6Parser::by_type::move (by_type& that) + { + type = that.type; + that.clear (); + } + + inline + int + Dhcp6Parser::by_type::type_get () const + { + return type; + } + + inline + Dhcp6Parser::token_type + Dhcp6Parser::by_type::token () const + { + // YYTOKNUM[NUM] -- (External) token number corresponding to the + // (internal) symbol number NUM (which must be that of a token). */ + static + const unsigned short int + yytoken_number_[] = + { + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457 + }; + return static_cast (yytoken_number_[type]); + } + // Implementation of make_symbol for each symbol type. + Dhcp6Parser::symbol_type + Dhcp6Parser::make_END (const location_type& l) + { + return symbol_type (token::TOKEN_END, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_COMMA (const location_type& l) + { + return symbol_type (token::TOKEN_COMMA, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_COLON (const location_type& l) + { + return symbol_type (token::TOKEN_COLON, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LSQUARE_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_LSQUARE_BRACKET, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RSQUARE_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_RSQUARE_BRACKET, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LCURLY_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_LCURLY_BRACKET, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RCURLY_BRACKET (const location_type& l) + { + return symbol_type (token::TOKEN_RCURLY_BRACKET, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NULL_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_NULL_TYPE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP6 (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP6, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DATA_DIRECTORY (const location_type& l) + { + return symbol_type (token::TOKEN_DATA_DIRECTORY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONFIG_CONTROL (const location_type& l) + { + return symbol_type (token::TOKEN_CONFIG_CONTROL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONFIG_DATABASES (const location_type& l) + { + return symbol_type (token::TOKEN_CONFIG_DATABASES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACES_CONFIG (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACES_CONFIG, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACES (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RE_DETECT (const location_type& l) + { + return symbol_type (token::TOKEN_RE_DETECT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LEASE_DATABASE (const location_type& l) + { + return symbol_type (token::TOKEN_LEASE_DATABASE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTS_DATABASE (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTS_DATABASE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTS_DATABASES (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTS_DATABASES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_TYPE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MEMFILE (const location_type& l) + { + return symbol_type (token::TOKEN_MEMFILE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MYSQL (const location_type& l) + { + return symbol_type (token::TOKEN_MYSQL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_POSTGRESQL (const location_type& l) + { + return symbol_type (token::TOKEN_POSTGRESQL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CQL (const location_type& l) + { + return symbol_type (token::TOKEN_CQL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_USER (const location_type& l) + { + return symbol_type (token::TOKEN_USER, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PASSWORD (const location_type& l) + { + return symbol_type (token::TOKEN_PASSWORD, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOST (const location_type& l) + { + return symbol_type (token::TOKEN_HOST, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_PORT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PERSIST (const location_type& l) + { + return symbol_type (token::TOKEN_PERSIST, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LFC_INTERVAL (const location_type& l) + { + return symbol_type (token::TOKEN_LFC_INTERVAL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_READONLY (const location_type& l) + { + return symbol_type (token::TOKEN_READONLY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONNECT_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONTACT_POINTS (const location_type& l) + { + return symbol_type (token::TOKEN_CONTACT_POINTS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_RECONNECT_TRIES (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RECONNECT_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_KEYSPACE (const location_type& l) + { + return symbol_type (token::TOKEN_KEYSPACE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONSISTENCY (const location_type& l) + { + return symbol_type (token::TOKEN_CONSISTENCY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERIAL_CONSISTENCY (const location_type& l) + { + return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REQUEST_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TCP_KEEPALIVE (const location_type& l) + { + return symbol_type (token::TOKEN_TCP_KEEPALIVE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TCP_NODELAY (const location_type& l) + { + return symbol_type (token::TOKEN_TCP_NODELAY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_ROW_ERRORS (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFERRED_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MIN_PREFERRED_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_PREFERRED_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_VALID_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_VALID_LIFETIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MIN_VALID_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_VALID_LIFETIME (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RENEW_TIMER (const location_type& l) + { + return symbol_type (token::TOKEN_RENEW_TIMER, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REBIND_TIMER (const location_type& l) + { + return symbol_type (token::TOKEN_REBIND_TIMER, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CALCULATE_TEE_TIMES (const location_type& l) + { + return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_T1_PERCENT (const location_type& l) + { + return symbol_type (token::TOKEN_T1_PERCENT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_T2_PERCENT (const location_type& l) + { + return symbol_type (token::TOKEN_T2_PERCENT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CACHE_THRESHOLD (const location_type& l) + { + return symbol_type (token::TOKEN_CACHE_THRESHOLD, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CACHE_MAX_AGE (const location_type& l) + { + return symbol_type (token::TOKEN_CACHE_MAX_AGE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l) + { + return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_TAG (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_TAG, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l) + { + return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l) + { + return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_SEND_UPDATES (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l); + } - class context - { - public: - context (const Dhcp6Parser& yyparser, const symbol_type& yyla); - const symbol_type& lookahead () const { return yyla_; } - symbol_kind_type token () const { return yyla_.kind (); } - const location_type& location () const { return yyla_.location; } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l); + } - /// Put in YYARG at most YYARGN of the expected tokens, and return the - /// number of tokens stored in YYARG. If YYARG is null, return the - /// number of expected tokens (guaranteed to be less than YYNTOKENS). - int expected_tokens (symbol_kind_type yyarg[], int yyargn) const; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l); + } - private: - const Dhcp6Parser& yyparser_; - const symbol_type& yyla_; - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_REPLACE_CLIENT_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l); + } - private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - Dhcp6Parser (const Dhcp6Parser&); - /// Non copyable. - Dhcp6Parser& operator= (const Dhcp6Parser&); -#endif + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_GENERATED_PREFIX (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_QUALIFYING_SUFFIX (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l); + } - /// Stored state numbers (used for stacks). - typedef short state_type; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_UPDATE_ON_RENEW (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l); + } - /// The arguments of the error message. - int yy_syntax_error_arguments_ (const context& yyctx, - symbol_kind_type yyarg[], int yyargn) const; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l) + { + return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, l); + } - /// Generate an error message. - /// \param yyctx the context in which the error occurred. - virtual std::string yysyntax_error_ (const context& yyctx) const; - /// Compute post-reduction state. - /// \param yystate the current state - /// \param yysym the nonterminal to push on the stack - static state_type yy_lr_goto_state_ (state_type yystate, int yysym); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_STORE_EXTENDED_INFO (const location_type& l) + { + return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l); + } - /// Whether the given \c yypact_ value indicates a defaulted state. - /// \param yyvalue the value to check - static bool yy_pact_value_is_default_ (int yyvalue); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUBNET6 (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET6, l); + } - /// Whether the given \c yytable_ value indicates a syntax error. - /// \param yyvalue the value to check - static bool yy_table_value_is_error_ (int yyvalue); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OPTION_DEF (const location_type& l) + { + return symbol_type (token::TOKEN_OPTION_DEF, l); + } - static const short yypact_ninf_; - static const signed char yytable_ninf_; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OPTION_DATA (const location_type& l) + { + return symbol_type (token::TOKEN_OPTION_DATA, l); + } - /// Convert a scanner token kind \a t to a symbol kind. - /// In theory \a t should be a token_kind_type, but character literals - /// are valid, yet not members of the token_type enum. - static symbol_kind_type yytranslate_ (int t); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_NAME, l); + } - /// Convert the symbol name \a n to a form suitable for a diagnostic. - static std::string yytnamerr_ (const char *yystr); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DATA (const location_type& l) + { + return symbol_type (token::TOKEN_DATA, l); + } - /// For a symbol, its name in clear. - static const char* const yytname_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CODE (const location_type& l) + { + return symbol_type (token::TOKEN_CODE, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SPACE (const location_type& l) + { + return symbol_type (token::TOKEN_SPACE, l); + } - // Tables. - // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - // STATE-NUM. - static const short yypact_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CSV_FORMAT (const location_type& l) + { + return symbol_type (token::TOKEN_CSV_FORMAT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ALWAYS_SEND (const location_type& l) + { + return symbol_type (token::TOKEN_ALWAYS_SEND, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RECORD_TYPES (const location_type& l) + { + return symbol_type (token::TOKEN_RECORD_TYPES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENCAPSULATE (const location_type& l) + { + return symbol_type (token::TOKEN_ENCAPSULATE, l); + } - // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - // Performed when YYTABLE does not specify something else to do. Zero - // means the default is an error. - static const short yydefact_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ARRAY (const location_type& l) + { + return symbol_type (token::TOKEN_ARRAY, l); + } - // YYPGOTO[NTERM-NUM]. - static const short yypgoto_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_POOLS (const location_type& l) + { + return symbol_type (token::TOKEN_POOLS, l); + } - // YYDEFGOTO[NTERM-NUM]. - static const short yydefgoto_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_POOL (const location_type& l) + { + return symbol_type (token::TOKEN_POOL, l); + } - // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - // positive, shift that token. If negative, reduce the rule whose - // number is the opposite. If YYTABLE_NINF, syntax error. - static const short yytable_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PD_POOLS (const location_type& l) + { + return symbol_type (token::TOKEN_PD_POOLS, l); + } - static const short yycheck_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFIX (const location_type& l) + { + return symbol_type (token::TOKEN_PREFIX, l); + } - // YYSTOS[STATE-NUM] -- The (internal number of the) accessing - // symbol of state STATE-NUM. - static const short yystos_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFIX_LEN (const location_type& l) + { + return symbol_type (token::TOKEN_PREFIX_LEN, l); + } - // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. - static const short yyr1_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EXCLUDED_PREFIX (const location_type& l) + { + return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l); + } - // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. - static const signed char yyr2_[]; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (const location_type& l) + { + return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DELEGATED_LEN (const location_type& l) + { + return symbol_type (token::TOKEN_DELEGATED_LEN, l); + } -#if PARSER6_DEBUG - // YYRLINE[YYN] -- Source line where rule number YYN was defined. - static const short yyrline_[]; - /// Report on the debug stream that the rule \a r is going to be reduced. - virtual void yy_reduce_print_ (int r) const; - /// Print the state stack on the debug stream. - virtual void yy_stack_print_ () const; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_USER_CONTEXT (const location_type& l) + { + return symbol_type (token::TOKEN_USER_CONTEXT, l); + } - /// Debugging level. - int yydebug_; - /// Debug stream. - std::ostream* yycdebug_; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_COMMENT (const location_type& l) + { + return symbol_type (token::TOKEN_COMMENT, l); + } - /// \brief Display a symbol kind, value and location. - /// \param yyo The output stream. - /// \param yysym The symbol. - template - void yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const; -#endif + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUBNET (const location_type& l) + { + return symbol_type (token::TOKEN_SUBNET, l); + } - /// \brief Reclaim the memory associated to a symbol. - /// \param yymsg Why this token is reclaimed. - /// If null, print nothing. - /// \param yysym The symbol. - template - void yy_destroy_ (const char* yymsg, basic_symbol& yysym) const; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACE (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACE_ID (const location_type& l) + { + return symbol_type (token::TOKEN_INTERFACE_ID, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ID (const location_type& l) + { + return symbol_type (token::TOKEN_ID, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RAPID_COMMIT (const location_type& l) + { + return symbol_type (token::TOKEN_RAPID_COMMIT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RESERVATION_MODE (const location_type& l) + { + return symbol_type (token::TOKEN_RESERVATION_MODE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DISABLED (const location_type& l) + { + return symbol_type (token::TOKEN_DISABLED, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OUT_OF_POOL (const location_type& l) + { + return symbol_type (token::TOKEN_OUT_OF_POOL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_GLOBAL (const location_type& l) + { + return symbol_type (token::TOKEN_GLOBAL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ALL (const location_type& l) + { + return symbol_type (token::TOKEN_ALL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SHARED_NETWORKS (const location_type& l) + { + return symbol_type (token::TOKEN_SHARED_NETWORKS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAC_SOURCES (const location_type& l) + { + return symbol_type (token::TOKEN_MAC_SOURCES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RELAY_SUPPLIED_OPTIONS (const location_type& l) + { + return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l) + { + return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SANITY_CHECKS (const location_type& l) + { + return symbol_type (token::TOKEN_SANITY_CHECKS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LEASE_CHECKS (const location_type& l) + { + return symbol_type (token::TOKEN_LEASE_CHECKS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CLIENT_CLASSES (const location_type& l) + { + return symbol_type (token::TOKEN_CLIENT_CLASSES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l) + { + return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TEST (const location_type& l) + { + return symbol_type (token::TOKEN_TEST, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ONLY_IF_REQUIRED (const location_type& l) + { + return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CLIENT_CLASS (const location_type& l) + { + return symbol_type (token::TOKEN_CLIENT_CLASS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RESERVATIONS (const location_type& l) + { + return symbol_type (token::TOKEN_RESERVATIONS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IP_ADDRESSES (const location_type& l) + { + return symbol_type (token::TOKEN_IP_ADDRESSES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFIXES (const location_type& l) + { + return symbol_type (token::TOKEN_PREFIXES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DUID (const location_type& l) + { + return symbol_type (token::TOKEN_DUID, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HW_ADDRESS (const location_type& l) + { + return symbol_type (token::TOKEN_HW_ADDRESS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTNAME (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTNAME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLEX_ID (const location_type& l) + { + return symbol_type (token::TOKEN_FLEX_ID, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RELAY (const location_type& l) + { + return symbol_type (token::TOKEN_RELAY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IP_ADDRESS (const location_type& l) + { + return symbol_type (token::TOKEN_IP_ADDRESS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOOKS_LIBRARIES (const location_type& l) + { + return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LIBRARY (const location_type& l) + { + return symbol_type (token::TOKEN_LIBRARY, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PARAMETERS (const location_type& l) + { + return symbol_type (token::TOKEN_PARAMETERS, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l) + { + return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOLD_RECLAIMED_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_RECLAIM_LEASES (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_RECLAIM_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l) + { + return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_ID (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_ID, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LLT (const location_type& l) + { + return symbol_type (token::TOKEN_LLT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EN (const location_type& l) + { + return symbol_type (token::TOKEN_EN, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LL (const location_type& l) + { + return symbol_type (token::TOKEN_LL, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IDENTIFIER (const location_type& l) + { + return symbol_type (token::TOKEN_IDENTIFIER, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HTYPE (const location_type& l) + { + return symbol_type (token::TOKEN_HTYPE, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TIME (const location_type& l) + { + return symbol_type (token::TOKEN_TIME, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENTERPRISE_ID (const location_type& l) + { + return symbol_type (token::TOKEN_ENTERPRISE_ID, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP4O6_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP4O6_PORT, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP_MULTI_THREADING (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENABLE_MULTI_THREADING (const location_type& l) + { + return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_THREAD_POOL_SIZE (const location_type& l) + { + return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l); + } - private: - /// Type access provider for state based symbols. - struct by_state - { - /// Default constructor. - by_state () YY_NOEXCEPT; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PACKET_QUEUE_SIZE (const location_type& l) + { + return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l); + } - /// The symbol kind as needed by the constructor. - typedef state_type kind_type; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONTROL_SOCKET (const location_type& l) + { + return symbol_type (token::TOKEN_CONTROL_SOCKET, l); + } - /// Constructor. - by_state (kind_type s) YY_NOEXCEPT; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SOCKET_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_SOCKET_TYPE, l); + } - /// Copy constructor. - by_state (const by_state& that) YY_NOEXCEPT; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SOCKET_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_SOCKET_NAME, l); + } - /// Record that this symbol is empty. - void clear () YY_NOEXCEPT; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP_QUEUE_CONTROL (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); + } - /// Steal the symbol kind from \a that. - void move (by_state& that); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENABLE_QUEUE (const location_type& l) + { + return symbol_type (token::TOKEN_ENABLE_QUEUE, l); + } - /// The symbol kind (corresponding to \a state). - /// \a symbol_kind::S_YYEMPTY when empty. - symbol_kind_type kind () const YY_NOEXCEPT; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_QUEUE_TYPE (const location_type& l) + { + return symbol_type (token::TOKEN_QUEUE_TYPE, l); + } - /// The state number used to denote an empty symbol. - /// We use the initial state, as it does not have a value. - enum { empty_state = 0 }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CAPACITY (const location_type& l) + { + return symbol_type (token::TOKEN_CAPACITY, l); + } - /// The state. - /// \a empty when empty. - state_type state; - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP_DDNS (const location_type& l) + { + return symbol_type (token::TOKEN_DHCP_DDNS, l); + } - /// "Internal" symbol: element of the stack. - struct stack_symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; - /// Construct an empty symbol. - stack_symbol_type (); - /// Move or copy construction. - stack_symbol_type (YY_RVREF (stack_symbol_type) that); - /// Steal the contents from \a sym to build this. - stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym); -#if YY_CPLUSPLUS < 201103L - /// Assignment, needed by push_back by some old implementations. - /// Moves the contents of that. - stack_symbol_type& operator= (stack_symbol_type& that); - - /// Assignment, needed by push_back by other implementations. - /// Needed by some other old implementations. - stack_symbol_type& operator= (const stack_symbol_type& that); -#endif - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENABLE_UPDATES (const location_type& l) + { + return symbol_type (token::TOKEN_ENABLE_UPDATES, l); + } - /// A stack with random access from its top. - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::iterator iterator; - typedef typename S::const_iterator const_iterator; - typedef typename S::size_type size_type; - typedef typename std::ptrdiff_t index_type; - - stack (size_type n = 200) - : seq_ (n) - {} - -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - stack (const stack&) = delete; - /// Non copyable. - stack& operator= (const stack&) = delete; -#endif + Dhcp6Parser::symbol_type + Dhcp6Parser::make_QUALIFYING_SUFFIX (const location_type& l) + { + return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l); + } - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (index_type i) const - { - return seq_[size_type (size () - 1 - i)]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (index_type i) - { - return seq_[size_type (size () - 1 - i)]; - } - - /// Steal the contents of \a t. - /// - /// Close to move-semantics. - void - push (YY_MOVE_REF (T) t) - { - seq_.push_back (T ()); - operator[] (0).move (t); - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_IP (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_IP, l); + } - /// Pop elements from the stack. - void - pop (std::ptrdiff_t n = 1) YY_NOEXCEPT - { - for (; 0 < n; --n) - seq_.pop_back (); - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_SERVER_PORT, l); + } - /// Pop all elements from the stack. - void - clear () YY_NOEXCEPT - { - seq_.clear (); - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SENDER_IP (const location_type& l) + { + return symbol_type (token::TOKEN_SENDER_IP, l); + } - /// Number of elements on the stack. - index_type - size () const YY_NOEXCEPT - { - return index_type (seq_.size ()); - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SENDER_PORT (const location_type& l) + { + return symbol_type (token::TOKEN_SENDER_PORT, l); + } - /// Iterator on top of the stack (going downwards). - const_iterator - begin () const YY_NOEXCEPT - { - return seq_.begin (); - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_QUEUE_SIZE (const location_type& l) + { + return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l); + } - /// Bottom of the stack. - const_iterator - end () const YY_NOEXCEPT - { - return seq_.end (); - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NCR_PROTOCOL (const location_type& l) + { + return symbol_type (token::TOKEN_NCR_PROTOCOL, l); + } - /// Present a slice of the top of a stack. - class slice - { - public: - slice (const stack& stack, index_type range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (index_type i) const - { - return stack_[range_ - i]; - } - - private: - const stack& stack_; - index_type range_; - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NCR_FORMAT (const location_type& l) + { + return symbol_type (token::TOKEN_NCR_FORMAT, l); + } - private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - stack (const stack&); - /// Non copyable. - stack& operator= (const stack&); -#endif - /// The wrapped container. - S seq_; - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OVERRIDE_NO_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l) + { + return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l); + } - /// Stack type. - typedef stack stack_type; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REPLACE_CLIENT_NAME (const location_type& l) + { + return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l); + } - /// The stack. - stack_type yystack_; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_GENERATED_PREFIX (const location_type& l) + { + return symbol_type (token::TOKEN_GENERATED_PREFIX, l); + } - /// Push a new state on the stack. - /// \param m a debug message to display - /// if null, no trace is output. - /// \param sym the symbol - /// \warning the contents of \a s.value is stolen. - void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_UDP (const location_type& l) + { + return symbol_type (token::TOKEN_UDP, l); + } - /// Push a new look ahead token on the state on the stack. - /// \param m a debug message to display - /// if null, no trace is output. - /// \param s the state - /// \param sym the symbol (for its value and location). - /// \warning the contents of \a sym.value is stolen. - void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TCP (const location_type& l) + { + return symbol_type (token::TOKEN_TCP, l); + } - /// Pop \a n symbols from the stack. - void yypop_ (int n = 1); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_JSON (const location_type& l) + { + return symbol_type (token::TOKEN_JSON, l); + } - /// Constants. - enum - { - yylast_ = 1231, ///< Last index in yytable_. - yynnts_ = 426, ///< Number of nonterminal symbols. - yyfinal_ = 30 ///< Termination state number. - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_WHEN_PRESENT (const location_type& l) + { + return symbol_type (token::TOKEN_WHEN_PRESENT, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NEVER (const location_type& l) + { + return symbol_type (token::TOKEN_NEVER, l); + } - // User arguments. - isc::dhcp::Parser6Context& ctx; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ALWAYS (const location_type& l) + { + return symbol_type (token::TOKEN_ALWAYS, l); + } - }; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_WHEN_NOT_PRESENT (const location_type& l) + { + return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l); + } - inline - Dhcp6Parser::symbol_kind_type - Dhcp6Parser::yytranslate_ (int t) + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTNAME_CHAR_SET (const location_type& l) { - // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to - // TOKEN-NUM as returned by yylex. - static - const unsigned char - translate_table[] = - { - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201 - }; - // Last valid token kind. - const int code_max = 456; + return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l); + } - if (t <= 0) - return symbol_kind::S_YYEOF; - else if (t <= code_max) - return YY_CAST (symbol_kind_type, translate_table[t]); - else - return symbol_kind::S_YYUNDEF; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l) + { + return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l); } - // basic_symbol. - template - Dhcp6Parser::basic_symbol::basic_symbol (const basic_symbol& that) - : Base (that) - , value () - , location (that.location) + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IP_RESERVATIONS_UNIQUE (const location_type& l) { - switch (this->kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.copy< ElementPtr > (YY_MOVE (that.value)); - break; + return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l); + } - case symbol_kind::S_BOOLEAN: // "boolean" - value.copy< bool > (YY_MOVE (that.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LOGGERS (const location_type& l) + { + return symbol_type (token::TOKEN_LOGGERS, l); + } - case symbol_kind::S_FLOAT: // "floating point" - value.copy< double > (YY_MOVE (that.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OUTPUT_OPTIONS (const location_type& l) + { + return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l); + } - case symbol_kind::S_INTEGER: // "integer" - value.copy< int64_t > (YY_MOVE (that.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OUTPUT (const location_type& l) + { + return symbol_type (token::TOKEN_OUTPUT, l); + } - case symbol_kind::S_STRING: // "constant string" - value.copy< std::string > (YY_MOVE (that.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DEBUGLEVEL (const location_type& l) + { + return symbol_type (token::TOKEN_DEBUGLEVEL, l); + } - default: - break; - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SEVERITY (const location_type& l) + { + return symbol_type (token::TOKEN_SEVERITY, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLUSH (const location_type& l) + { + return symbol_type (token::TOKEN_FLUSH, l); } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAXSIZE (const location_type& l) + { + return symbol_type (token::TOKEN_MAXSIZE, l); + } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAXVER (const location_type& l) + { + return symbol_type (token::TOKEN_MAXVER, l); + } - template - Dhcp6Parser::symbol_kind_type - Dhcp6Parser::basic_symbol::type_get () const YY_NOEXCEPT + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PATTERN (const location_type& l) { - return this->kind (); + return symbol_type (token::TOKEN_PATTERN, l); } - template - bool - Dhcp6Parser::basic_symbol::empty () const YY_NOEXCEPT + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TOPLEVEL_JSON (const location_type& l) { - return this->kind () == symbol_kind::S_YYEMPTY; + return symbol_type (token::TOKEN_TOPLEVEL_JSON, l); } - template - void - Dhcp6Parser::basic_symbol::move (basic_symbol& s) + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TOPLEVEL_DHCP6 (const location_type& l) { - super_type::move (s); - switch (this->kind ()) - { - case symbol_kind::S_value: // value - case symbol_kind::S_map_value: // map_value - case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value - case symbol_kind::S_db_type: // db_type - case symbol_kind::S_hr_mode: // hr_mode - case symbol_kind::S_duid_type: // duid_type - case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value - value.move< ElementPtr > (YY_MOVE (s.value)); - break; + return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l); + } - case symbol_kind::S_BOOLEAN: // "boolean" - value.move< bool > (YY_MOVE (s.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_DHCP6 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_DHCP6, l); + } - case symbol_kind::S_FLOAT: // "floating point" - value.move< double > (YY_MOVE (s.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_INTERFACES6 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_INTERFACES6, l); + } - case symbol_kind::S_INTEGER: // "integer" - value.move< int64_t > (YY_MOVE (s.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_SUBNET6 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_SUBNET6, l); + } - case symbol_kind::S_STRING: // "constant string" - value.move< std::string > (YY_MOVE (s.value)); - break; + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_POOL6 (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_POOL6, l); + } - default: - break; - } + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_PD_POOL (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_PD_POOL, l); + } - location = YY_MOVE (s.location); + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_RESERVATION (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_RESERVATION, l); } - // by_kind. - inline - Dhcp6Parser::by_kind::by_kind () - : kind_ (symbol_kind::S_YYEMPTY) - {} + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_OPTION_DEFS (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l); + } -#if 201103L <= YY_CPLUSPLUS - inline - Dhcp6Parser::by_kind::by_kind (by_kind&& that) - : kind_ (that.kind_) + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_OPTION_DEF (const location_type& l) { - that.clear (); + return symbol_type (token::TOKEN_SUB_OPTION_DEF, l); } -#endif - inline - Dhcp6Parser::by_kind::by_kind (const by_kind& that) - : kind_ (that.kind_) - {} + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_OPTION_DATA (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DATA, l); + } - inline - Dhcp6Parser::by_kind::by_kind (token_kind_type t) - : kind_ (yytranslate_ (t)) - {} + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_HOOKS_LIBRARY (const location_type& l) + { + return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l); + } - inline - void - Dhcp6Parser::by_kind::clear () + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_DHCP_DDNS (const location_type& l) { - kind_ = symbol_kind::S_YYEMPTY; + return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l); } - inline - void - Dhcp6Parser::by_kind::move (by_kind& that) + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_CONFIG_CONTROL (const location_type& l) { - kind_ = that.kind_; - that.clear (); + return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l); } - inline - Dhcp6Parser::symbol_kind_type - Dhcp6Parser::by_kind::kind () const YY_NOEXCEPT + Dhcp6Parser::symbol_type + Dhcp6Parser::make_STRING (const std::string& v, const location_type& l) { - return kind_; + return symbol_type (token::TOKEN_STRING, v, l); } - inline - Dhcp6Parser::symbol_kind_type - Dhcp6Parser::by_kind::type_get () const YY_NOEXCEPT + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTEGER (const int64_t& v, const location_type& l) + { + return symbol_type (token::TOKEN_INTEGER, v, l); + } + + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLOAT (const double& v, const location_type& l) { - return this->kind (); + return symbol_type (token::TOKEN_FLOAT, v, l); } -#line 14 "dhcp6_parser.yy" + Dhcp6Parser::symbol_type + Dhcp6Parser::make_BOOLEAN (const bool& v, const location_type& l) + { + return symbol_type (token::TOKEN_BOOLEAN, v, l); + } + + +#line 14 "dhcp6_parser.yy" // lalr1.cc:377 } } // isc::dhcp -#line 5323 "dhcp6_parser.h" +#line 3285 "dhcp6_parser.h" // lalr1.cc:377 diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 367b27bc13..e0fe398404 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -111,6 +111,7 @@ using namespace std; DDNS_GENERATED_PREFIX "ddns-generated-prefix" DDNS_QUALIFYING_SUFFIX "ddns-qualifying-suffix" DDNS_UPDATE_ON_RENEW "ddns-update-on-renew" + DDNS_USE_CONFLICT_RESOLUTION "ddns-use-conflict-resolution" STORE_EXTENDED_INFO "store-extended-info" SUBNET6 "subnet6" OPTION_DEF "option-def" @@ -505,6 +506,7 @@ global_param: data_directory | ddns_generated_prefix | ddns_qualifying_suffix | ddns_update_on_renew + | ddns_use_conflict_resolution | store_extended_info | statistic_default_sample_count | statistic_default_sample_age @@ -675,6 +677,12 @@ ddns_update_on_renew: DDNS_UPDATE_ON_RENEW COLON BOOLEAN { ctx.stack_.back()->set("ddns-update-on-renew", b); }; +ddns_use_conflict_resolution: DDNS_USE_CONFLICT_RESOLUTION COLON BOOLEAN { + ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(@1)); + ElementPtr b(new BoolElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("ddns-use-conflict-resolution", b); +}; + hostname_char_set: HOSTNAME_CHAR_SET { ctx.unique("hostname-char-set", ctx.loc2pos(@1)); ctx.enter(ctx.NO_KEYWORD); @@ -1395,6 +1403,7 @@ subnet6_param: preferred_lifetime | ddns_generated_prefix | ddns_qualifying_suffix | ddns_update_on_renew + | ddns_use_conflict_resolution | store_extended_info | unknown_map_entry ; @@ -1541,6 +1550,7 @@ shared_network_param: name | ddns_generated_prefix | ddns_qualifying_suffix | ddns_update_on_renew + | ddns_use_conflict_resolution | store_extended_info | unknown_map_entry ; diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index 1632aaddc6..227fb54c16 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -776,6 +776,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, (config_pair.first == "ddns-generated-prefix") || (config_pair.first == "ddns-qualifying-suffix") || (config_pair.first == "ddns-update-on-renew") || + (config_pair.first == "ddns-use-conflict-resolution") || (config_pair.first == "store-extended-info") || (config_pair.first == "statistic-default-sample-count") || (config_pair.first == "statistic-default-sample-age") || diff --git a/src/bin/dhcp6/location.hh b/src/bin/dhcp6/location.hh index a24ac29e54..239704683c 100644 --- a/src/bin/dhcp6/location.hh +++ b/src/bin/dhcp6/location.hh @@ -1,9 +1,8 @@ -// Generated 202010091455 -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.0.4. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. +// Copyright (C) 2002-2015 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -39,164 +38,44 @@ #ifndef YY_PARSER6_LOCATION_HH_INCLUDED # define YY_PARSER6_LOCATION_HH_INCLUDED -# include -# include +# include "position.hh" -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -#line 14 "dhcp6_parser.yy" +#line 14 "dhcp6_parser.yy" // location.cc:296 namespace isc { namespace dhcp { -#line 59 "location.hh" - - /// A point in a source file. - class position - { - public: - /// Type for file name. - typedef const std::string filename_type; - /// Type for line and column numbers. - typedef int counter_type; - - /// Construct a position. - explicit position (filename_type* f = YY_NULLPTR, - counter_type l = 1, - counter_type c = 1) - : filename (f) - , line (l) - , column (c) - {} - - - /// Initialization. - void initialize (filename_type* fn = YY_NULLPTR, - counter_type l = 1, - counter_type c = 1) - { - filename = fn; - line = l; - column = c; - } - - /** \name Line and Column related manipulators - ** \{ */ - /// (line related) Advance to the COUNT next lines. - void lines (counter_type count = 1) - { - if (count) - { - column = 1; - line = add_ (line, count, 1); - } - } - - /// (column related) Advance to the COUNT next columns. - void columns (counter_type count = 1) - { - column = add_ (column, count, 1); - } - /** \} */ - - /// File name to which this position refers. - filename_type* filename; - /// Current line number. - counter_type line; - /// Current column number. - counter_type column; - - private: - /// Compute max (min, lhs+rhs). - static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min) - { - return lhs + rhs < min ? min : lhs + rhs; - } - }; - - /// Add \a width columns, in place. - inline position& - operator+= (position& res, position::counter_type width) - { - res.columns (width); - return res; - } - - /// Add \a width columns. - inline position - operator+ (position res, position::counter_type width) - { - return res += width; - } - - /// Subtract \a width columns, in place. - inline position& - operator-= (position& res, position::counter_type width) - { - return res += -width; - } - - /// Subtract \a width columns. - inline position - operator- (position res, position::counter_type width) - { - return res -= width; - } - - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param pos a reference to the position to redirect - */ - template - std::basic_ostream& - operator<< (std::basic_ostream& ostr, const position& pos) - { - if (pos.filename) - ostr << *pos.filename << ':'; - return ostr << pos.line << '.' << pos.column; - } - - /// Two points in a source file. +#line 46 "location.hh" // location.cc:296 + /// Abstract a location. class location { public: - /// Type for file name. - typedef position::filename_type filename_type; - /// Type for line and column numbers. - typedef position::counter_type counter_type; /// Construct a location from \a b to \a e. location (const position& b, const position& e) : begin (b) , end (e) - {} + { + } /// Construct a 0-width location in \a p. explicit location (const position& p = position ()) : begin (p) , end (p) - {} + { + } /// Construct a 0-width location in \a f, \a l, \a c. - explicit location (filename_type* f, - counter_type l = 1, - counter_type c = 1) + explicit location (std::string* f, + unsigned int l = 1u, + unsigned int c = 1u) : begin (f, l, c) , end (f, l, c) - {} + { + } /// Initialization. - void initialize (filename_type* f = YY_NULLPTR, - counter_type l = 1, - counter_type c = 1) + void initialize (std::string* f = YY_NULLPTR, + unsigned int l = 1u, + unsigned int c = 1u) { begin.initialize (f, l, c); end = begin; @@ -212,13 +91,13 @@ namespace isc { namespace dhcp { } /// Extend the current location to the COUNT next columns. - void columns (counter_type count = 1) + void columns (int count = 1) { end += count; } /// Extend the current location to the COUNT next lines. - void lines (counter_type count = 1) + void lines (int count = 1) { end.lines (count); } @@ -233,49 +112,57 @@ namespace isc { namespace dhcp { }; /// Join two locations, in place. - inline location& - operator+= (location& res, const location& end) + inline location& operator+= (location& res, const location& end) { res.end = end.end; return res; } /// Join two locations. - inline location - operator+ (location res, const location& end) + inline location operator+ (location res, const location& end) { return res += end; } /// Add \a width columns to the end position, in place. - inline location& - operator+= (location& res, location::counter_type width) + inline location& operator+= (location& res, int width) { res.columns (width); return res; } /// Add \a width columns to the end position. - inline location - operator+ (location res, location::counter_type width) + inline location operator+ (location res, int width) { return res += width; } /// Subtract \a width columns to the end position, in place. - inline location& - operator-= (location& res, location::counter_type width) + inline location& operator-= (location& res, int width) { return res += -width; } /// Subtract \a width columns to the end position. - inline location - operator- (location res, location::counter_type width) + inline location operator- (location res, int width) { return res -= width; } + /// Compare two location objects. + inline bool + operator== (const location& loc1, const location& loc2) + { + return loc1.begin == loc2.begin && loc1.end == loc2.end; + } + + /// Compare two location objects. + inline bool + operator!= (const location& loc1, const location& loc2) + { + return !(loc1 == loc2); + } + /** \brief Intercept output stream redirection. ** \param ostr the destination output stream ** \param loc a reference to the location to redirect @@ -283,11 +170,10 @@ namespace isc { namespace dhcp { ** Avoid duplicate information. */ template - std::basic_ostream& + inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const location& loc) { - location::counter_type end_col - = 0 < loc.end.column ? loc.end.column - 1 : 0; + unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; ostr << loc.begin; if (loc.end.filename && (!loc.begin.filename @@ -300,8 +186,7 @@ namespace isc { namespace dhcp { return ostr; } -#line 14 "dhcp6_parser.yy" +#line 14 "dhcp6_parser.yy" // location.cc:296 } } // isc::dhcp -#line 305 "location.hh" - +#line 192 "location.hh" // location.cc:296 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED diff --git a/src/bin/dhcp6/position.hh b/src/bin/dhcp6/position.hh index 48ecfcbf2b..2ee80e6d0a 100644 --- a/src/bin/dhcp6/position.hh +++ b/src/bin/dhcp6/position.hh @@ -1,12 +1,180 @@ -// Generated 202010091455 -// A Bison parser, made by GNU Bison 3.7.2. - -// Starting with Bison 3.2, this file is useless: the structure it -// used to define is now defined in "location.hh". -// -// To get rid of this file: -// 1. add '%require "3.2"' (or newer) to your grammar file -// 2. remove references to this file from your build system -// 3. if you used to include it, include "location.hh" instead. - -#include "location.hh" +// A Bison parser, made by GNU Bison 3.0.4. + +// Positions for Bison parsers in C++ + +// Copyright (C) 2002-2015 Free Software Foundation, Inc. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// As a special exception, you may create a larger work that contains +// part or all of the Bison parser skeleton and distribute that work +// under terms of your choice, so long as that work isn't itself a +// parser generator using the skeleton or a modified version thereof +// as a parser skeleton. Alternatively, if you modify or redistribute +// the parser skeleton itself, you may (at your option) remove this +// special exception, which will cause the skeleton and the resulting +// Bison output files to be licensed under the GNU General Public +// License without this special exception. + +// This special exception was added by the Free Software Foundation in +// version 2.2 of Bison. + +/** + ** \file position.hh + ** Define the isc::dhcp::position class. + */ + +#ifndef YY_PARSER6_POSITION_HH_INCLUDED +# define YY_PARSER6_POSITION_HH_INCLUDED + +# include // std::max +# include +# include + +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif + +#line 14 "dhcp6_parser.yy" // location.cc:296 +namespace isc { namespace dhcp { +#line 56 "position.hh" // location.cc:296 + /// Abstract a position. + class position + { + public: + /// Construct a position. + explicit position (std::string* f = YY_NULLPTR, + unsigned int l = 1u, + unsigned int c = 1u) + : filename (f) + , line (l) + , column (c) + { + } + + + /// Initialization. + void initialize (std::string* fn = YY_NULLPTR, + unsigned int l = 1u, + unsigned int c = 1u) + { + filename = fn; + line = l; + column = c; + } + + /** \name Line and Column related manipulators + ** \{ */ + /// (line related) Advance to the COUNT next lines. + void lines (int count = 1) + { + if (count) + { + column = 1u; + line = add_ (line, count, 1); + } + } + + /// (column related) Advance to the COUNT next columns. + void columns (int count = 1) + { + column = add_ (column, count, 1); + } + /** \} */ + + /// File name to which this position refers. + std::string* filename; + /// Current line number. + unsigned int line; + /// Current column number. + unsigned int column; + + private: + /// Compute max(min, lhs+rhs) (provided min <= lhs). + static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + { + return (0 < rhs || -static_cast(rhs) < lhs + ? rhs + lhs + : min); + } + }; + + /// Add \a width columns, in place. + inline position& + operator+= (position& res, int width) + { + res.columns (width); + return res; + } + + /// Add \a width columns. + inline position + operator+ (position res, int width) + { + return res += width; + } + + /// Subtract \a width columns, in place. + inline position& + operator-= (position& res, int width) + { + return res += -width; + } + + /// Subtract \a width columns. + inline position + operator- (position res, int width) + { + return res -= width; + } + + /// Compare two position objects. + inline bool + operator== (const position& pos1, const position& pos2) + { + return (pos1.line == pos2.line + && pos1.column == pos2.column + && (pos1.filename == pos2.filename + || (pos1.filename && pos2.filename + && *pos1.filename == *pos2.filename))); + } + + /// Compare two position objects. + inline bool + operator!= (const position& pos1, const position& pos2) + { + return !(pos1 == pos2); + } + + /** \brief Intercept output stream redirection. + ** \param ostr the destination output stream + ** \param pos a reference to the position to redirect + */ + template + inline std::basic_ostream& + operator<< (std::basic_ostream& ostr, const position& pos) + { + if (pos.filename) + ostr << *pos.filename << ':'; + return ostr << pos.line << '.' << pos.column; + } + +#line 14 "dhcp6_parser.yy" // location.cc:296 +} } // isc::dhcp +#line 180 "position.hh" // location.cc:296 +#endif // !YY_PARSER6_POSITION_HH_INCLUDED diff --git a/src/bin/dhcp6/stack.hh b/src/bin/dhcp6/stack.hh index 1bd3435eff..db2863a06e 100644 --- a/src/bin/dhcp6/stack.hh +++ b/src/bin/dhcp6/stack.hh @@ -1,9 +1,157 @@ -// Generated 202010091455 -// A Bison parser, made by GNU Bison 3.7.2. - -// Starting with Bison 3.2, this file is useless: the structure it -// used to define is now defined with the parser itself. -// -// To get rid of this file: -// 1. add '%require "3.2"' (or newer) to your grammar file -// 2. remove references to this file from your build system. +// A Bison parser, made by GNU Bison 3.0.4. + +// Stack handling for Bison parsers in C++ + +// Copyright (C) 2002-2015 Free Software Foundation, Inc. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// As a special exception, you may create a larger work that contains +// part or all of the Bison parser skeleton and distribute that work +// under terms of your choice, so long as that work isn't itself a +// parser generator using the skeleton or a modified version thereof +// as a parser skeleton. Alternatively, if you modify or redistribute +// the parser skeleton itself, you may (at your option) remove this +// special exception, which will cause the skeleton and the resulting +// Bison output files to be licensed under the GNU General Public +// License without this special exception. + +// This special exception was added by the Free Software Foundation in +// version 2.2 of Bison. + +/** + ** \file stack.hh + ** Define the isc::dhcp::stack class. + */ + +#ifndef YY_PARSER6_STACK_HH_INCLUDED +# define YY_PARSER6_STACK_HH_INCLUDED + +# include + +#line 14 "dhcp6_parser.yy" // stack.hh:132 +namespace isc { namespace dhcp { +#line 46 "stack.hh" // stack.hh:132 + template > + class stack + { + public: + // Hide our reversed order. + typedef typename S::reverse_iterator iterator; + typedef typename S::const_reverse_iterator const_iterator; + + stack () + : seq_ () + { + seq_.reserve (200); + } + + stack (unsigned int n) + : seq_ (n) + {} + + inline + T& + operator[] (unsigned int i) + { + return seq_[seq_.size () - 1 - i]; + } + + inline + const T& + operator[] (unsigned int i) const + { + return seq_[seq_.size () - 1 - i]; + } + + /// Steal the contents of \a t. + /// + /// Close to move-semantics. + inline + void + push (T& t) + { + seq_.push_back (T()); + operator[](0).move (t); + } + + inline + void + pop (unsigned int n = 1) + { + for (; n; --n) + seq_.pop_back (); + } + + void + clear () + { + seq_.clear (); + } + + inline + typename S::size_type + size () const + { + return seq_.size (); + } + + inline + const_iterator + begin () const + { + return seq_.rbegin (); + } + + inline + const_iterator + end () const + { + return seq_.rend (); + } + + private: + stack (const stack&); + stack& operator= (const stack&); + /// The wrapped container. + S seq_; + }; + + /// Present a slice of the top of a stack. + template > + class slice + { + public: + slice (const S& stack, unsigned int range) + : stack_ (stack) + , range_ (range) + {} + + inline + const T& + operator [] (unsigned int i) const + { + return stack_[range_ - i]; + } + + private: + const S& stack_; + unsigned int range_; + }; + +#line 14 "dhcp6_parser.yy" // stack.hh:132 +} } // isc::dhcp +#line 156 "stack.hh" // stack.hh:132 + +#endif // !YY_PARSER6_STACK_HH_INCLUDED diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc index 327812c8a0..a8eb129169 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc +++ b/src/bin/dhcp6/tests/get_config_unittest.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -1997,6 +1998,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2078,6 +2080,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2193,6 +2196,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2375,6 +2379,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2557,6 +2562,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2739,6 +2745,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2854,6 +2861,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -2962,6 +2970,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3070,6 +3079,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3210,6 +3220,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3317,6 +3328,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3426,6 +3438,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3537,6 +3550,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3663,6 +3677,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3772,6 +3787,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3861,6 +3877,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -3950,6 +3967,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4048,6 +4066,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4137,6 +4156,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4226,6 +4246,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4350,6 +4371,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4474,6 +4496,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4608,6 +4631,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4725,6 +4749,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -4885,6 +4910,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5035,6 +5061,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5195,6 +5222,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5317,6 +5345,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5443,6 +5472,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5524,6 +5554,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5605,6 +5636,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5712,6 +5744,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -5819,6 +5852,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6004,6 +6038,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6126,6 +6161,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6256,6 +6292,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": true,\n" @@ -6363,6 +6400,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"when-present\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": true,\n" @@ -6470,6 +6508,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"always\",\n" " \"ddns-send-updates\": false,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": true,\n" @@ -6577,6 +6616,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6809,6 +6849,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -6939,6 +6980,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7020,6 +7062,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7101,6 +7144,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7312,6 +7356,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7445,6 +7490,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7526,6 +7572,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7605,6 +7652,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7684,6 +7732,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 12345,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7763,6 +7812,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7856,6 +7906,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -7963,6 +8014,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8070,6 +8122,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8178,6 +8231,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8291,6 +8345,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8404,6 +8459,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8513,6 +8569,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8623,6 +8680,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8738,6 +8796,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -8862,6 +8921,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9060,6 +9120,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9259,6 +9320,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9340,6 +9402,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9419,6 +9482,7 @@ const char* UNPARSED_CONFIGS[] = { " \"ddns-replace-client-name\": \"never\",\n" " \"ddns-send-updates\": true,\n" " \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" " \"enable-updates\": false,\n" @@ -9719,9 +9783,9 @@ TEST_P(Dhcp6GetConfigTest, run) { // unparse it ConstSrvConfigPtr extracted = CfgMgr::instance().getStagingCfg(); ConstElementPtr unparsed; - ASSERT_NO_THROW(unparsed = extracted->toElement()); + ASSERT_NO_THROW_LOG(unparsed = extracted->toElement()); ConstElementPtr dhcp; - ASSERT_NO_THROW(dhcp = unparsed->get("Dhcp6")); + ASSERT_NO_THROW_LOG(dhcp = unparsed->get("Dhcp6")); ASSERT_TRUE(dhcp); // dump if wanted else check @@ -9731,16 +9795,16 @@ TEST_P(Dhcp6GetConfigTest, run) { std::cerr << ",\n"; } std::cerr << " // CONFIGURATION " << config_counter; - ASSERT_NO_THROW(expected = prettyPrint(dhcp)); - ASSERT_NO_THROW(outputFormatted(dhcp->str())); + ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp)); + ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str())); } else { expected = UNPARSED_CONFIGS[config_counter]; // get the expected config using the dhcpv6 syntax parser ElementPtr jsond; - ASSERT_NO_THROW(jsond = parseDHCP6(expected, true)); + ASSERT_NO_THROW_LOG(jsond = parseDHCP6(expected, true)); // get the expected config using the generic JSON syntax parser ElementPtr jsonj; - ASSERT_NO_THROW(jsonj = parseJSON(expected)); + ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected)); // the generic JSON parser does not handle comments EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj))); // check that unparsed and expected values match @@ -9761,7 +9825,7 @@ TEST_P(Dhcp6GetConfigTest, run) { // is it a fixed point? ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg(); ConstElementPtr unparsed2; - ASSERT_NO_THROW(unparsed2 = extracted2->toElement()); + ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement()); ASSERT_TRUE(unparsed2); EXPECT_TRUE(isEquivalent(unparsed, unparsed2)); } diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc.skel b/src/bin/dhcp6/tests/get_config_unittest.cc.skel index 5c227dbc53..0945e09fa6 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc.skel +++ b/src/bin/dhcp6/tests/get_config_unittest.cc.skel @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -306,9 +307,9 @@ TEST_P(Dhcp6GetConfigTest, run) { // unparse it ConstSrvConfigPtr extracted = CfgMgr::instance().getStagingCfg(); ConstElementPtr unparsed; - ASSERT_NO_THROW(unparsed = extracted->toElement()); + ASSERT_NO_THROW_LOG(unparsed = extracted->toElement()); ConstElementPtr dhcp; - ASSERT_NO_THROW(dhcp = unparsed->get("Dhcp6")); + ASSERT_NO_THROW_LOG(dhcp = unparsed->get("Dhcp6")); ASSERT_TRUE(dhcp); // dump if wanted else check @@ -318,16 +319,16 @@ TEST_P(Dhcp6GetConfigTest, run) { std::cerr << ",\n"; } std::cerr << " // CONFIGURATION " << config_counter; - ASSERT_NO_THROW(expected = prettyPrint(dhcp)); - ASSERT_NO_THROW(outputFormatted(dhcp->str())); + ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp)); + ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str())); } else { expected = UNPARSED_CONFIGS[config_counter]; // get the expected config using the dhcpv6 syntax parser ElementPtr jsond; - ASSERT_NO_THROW(jsond = parseDHCP6(expected, true)); + ASSERT_NO_THROW_LOG(jsond = parseDHCP6(expected, true)); // get the expected config using the generic JSON syntax parser ElementPtr jsonj; - ASSERT_NO_THROW(jsonj = parseJSON(expected)); + ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected)); // the generic JSON parser does not handle comments EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj))); // check that unparsed and expected values match @@ -348,7 +349,7 @@ TEST_P(Dhcp6GetConfigTest, run) { // is it a fixed point? ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg(); ConstElementPtr unparsed2; - ASSERT_NO_THROW(unparsed2 = extracted2->toElement()); + ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement()); ASSERT_TRUE(unparsed2); EXPECT_TRUE(isEquivalent(unparsed, unparsed2)); } diff --git a/src/lib/dhcpsrv/parsers/base_network_parser.cc b/src/lib/dhcpsrv/parsers/base_network_parser.cc index 79dc59ff57..abfc37bcac 100644 --- a/src/lib/dhcpsrv/parsers/base_network_parser.cc +++ b/src/lib/dhcpsrv/parsers/base_network_parser.cc @@ -273,7 +273,7 @@ BaseNetworkParser::parseDdnsParams(const data::ConstElementPtr& network_data, } if (network_data->contains("ddns-use-conflict-resolution")) { - network->setDdnsUpdateOnRenew(getBoolean(network_data, "ddns-use-conflict-resolution")); + network->setDdnsUseConflictResolution(getBoolean(network_data, "ddns-use-conflict-resolution")); } } diff --git a/src/lib/dhcpsrv/parsers/simple_parser4.cc b/src/lib/dhcpsrv/parsers/simple_parser4.cc index 7aa709e4a7..fe3a7059a2 100644 --- a/src/lib/dhcpsrv/parsers/simple_parser4.cc +++ b/src/lib/dhcpsrv/parsers/simple_parser4.cc @@ -287,8 +287,7 @@ const ParamsList SimpleParser4::INHERIT_TO_SUBNET4 = { "t2-percent", "store-extended-info", "cache-threshold", - "cache-max-age", - "ddns-use-conflict-resolution" + "cache-max-age" }; /// @brief This table defines all pool parameters.