From: Thomas Markwalder Date: Fri, 31 Oct 2025 14:03:08 +0000 (-0400) Subject: [#4161] Added allow-address-regisration global X-Git-Tag: Kea-3.1.4~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=378a0f8837730ba5c78faddf39a37de683f7bfe7;p=thirdparty%2Fkea.git [#4161] Added allow-address-regisration global modified: doc/examples/kea6/all-keys.json modified: doc/sphinx/arm/dhcp6-srv.rst modified: src/bin/agent/agent_lexer.cc modified: src/bin/d2/d2_lexer.cc modified: src/bin/dhcp4/dhcp4_lexer.cc modified: src/bin/dhcp6/dhcp6_lexer.cc modified: src/bin/dhcp6/dhcp6_lexer.ll modified: src/bin/dhcp6/dhcp6_messages.cc modified: src/bin/dhcp6/dhcp6_messages.h modified: src/bin/dhcp6/dhcp6_messages.mes modified: src/bin/dhcp6/dhcp6_parser.cc modified: src/bin/dhcp6/dhcp6_parser.h modified: src/bin/dhcp6/dhcp6_parser.yy modified: src/bin/dhcp6/dhcp6_srv.cc modified: src/bin/dhcp6/json_config_parser.cc modified: src/bin/dhcp6/tests/addr_reg_unittest.cc modified: src/bin/dhcp6/tests/get_config_unittest.cc modified: src/bin/dhcp6/tests/http_control_socket_unittest.cc modified: src/lib/dhcpsrv/cfg_globals.cc modified: src/lib/dhcpsrv/cfg_globals.h modified: src/lib/dhcpsrv/parsers/simple_parser6.cc modified: src/lib/eval/lexer.cc --- diff --git a/doc/examples/kea6/all-keys.json b/doc/examples/kea6/all-keys.json index b26dac54a2..5e3973e6a5 100644 --- a/doc/examples/kea6/all-keys.json +++ b/doc/examples/kea6/all-keys.json @@ -15,6 +15,10 @@ // subnets. "allocator": "iterative", + // Global flag that enables or disables client address registration + // via ADDR-REG-INFORM packets (see RFC 9686). It defaults to true. + "allow-address-registration": true, + // Global flag selecting a delegated prefix allocation strategy // for all subnets. "pd-allocator": "random", diff --git a/doc/sphinx/arm/dhcp6-srv.rst b/doc/sphinx/arm/dhcp6-srv.rst index e193b5cced..d8a2fd4855 100644 --- a/doc/sphinx/arm/dhcp6-srv.rst +++ b/doc/sphinx/arm/dhcp6-srv.rst @@ -6909,6 +6909,17 @@ as defined in `RFC 9686 `__ i.e. when a valid ADDR-REG-INFORM (36) message is received a registered lease is added or updated and a ADDR-REG-REPLY (37) is sent back to the client. +As of Kea 3.1.4, this feature can be enabled or disabled globally by +setting the parameter, ``allow-address-registration`` to true or false +respectively. It is enabled by default. + +`RFC 9686 `__ calls for servers +that support address registration to return option 148 to clients that +request it via the ORO option. As with any other standard option, this +option must be specified in the server configuration in order to be +sent to clients and that this behavior is independent of +``allow-address-resgistration``. + .. note:: Even if they share a common lease database with leases in other states, diff --git a/src/bin/agent/agent_lexer.cc b/src/bin/agent/agent_lexer.cc index 75f2a9a036..7d49ac15f0 100644 --- a/src/bin/agent/agent_lexer.cc +++ b/src/bin/agent/agent_lexer.cc @@ -1,6 +1,6 @@ -#line 1 "agent_lexer.cc" +#line 2 "agent_lexer.cc" -#line 3 "agent_lexer.cc" +#line 4 "agent_lexer.cc" #define YY_INT_ALIGNED short int @@ -1624,7 +1624,7 @@ using isc::agent::AgentParser; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg) -#line 1627 "agent_lexer.cc" +#line 1628 "agent_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 @@ -1650,8 +1650,8 @@ using isc::agent::AgentParser; 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 1653 "agent_lexer.cc" #line 1654 "agent_lexer.cc" +#line 1655 "agent_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -1965,7 +1965,7 @@ YY_DECL } -#line 1968 "agent_lexer.cc" +#line 1969 "agent_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2982,7 +2982,7 @@ YY_RULE_SETUP #line 835 "agent_lexer.ll" ECHO; YY_BREAK -#line 2985 "agent_lexer.cc" +#line 2986 "agent_lexer.cc" case YY_END_OF_BUFFER: { diff --git a/src/bin/d2/d2_lexer.cc b/src/bin/d2/d2_lexer.cc index 92e386daa0..1e56767ffb 100644 --- a/src/bin/d2/d2_lexer.cc +++ b/src/bin/d2/d2_lexer.cc @@ -1,6 +1,6 @@ -#line 1 "d2_lexer.cc" +#line 2 "d2_lexer.cc" -#line 3 "d2_lexer.cc" +#line 4 "d2_lexer.cc" #define YY_INT_ALIGNED short int @@ -1214,7 +1214,7 @@ unsigned int comment_start_line = 0; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::d2::D2ParserContext::fatal(msg) -#line 1217 "d2_lexer.cc" +#line 1218 "d2_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 @@ -1240,8 +1240,8 @@ unsigned int comment_start_line = 0; 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 1243 "d2_lexer.cc" #line 1244 "d2_lexer.cc" +#line 1245 "d2_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -1561,7 +1561,7 @@ YY_DECL } -#line 1564 "d2_lexer.cc" +#line 1565 "d2_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2812,7 +2812,7 @@ YY_RULE_SETUP #line 1022 "d2_lexer.ll" ECHO; YY_BREAK -#line 2815 "d2_lexer.cc" +#line 2816 "d2_lexer.cc" case YY_END_OF_BUFFER: { diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 7e602585ad..9d7e68689e 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -1,6 +1,6 @@ -#line 1 "dhcp4_lexer.cc" +#line 2 "dhcp4_lexer.cc" -#line 3 "dhcp4_lexer.cc" +#line 4 "dhcp4_lexer.cc" #define YY_INT_ALIGNED short int @@ -2311,7 +2311,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 2314 "dhcp4_lexer.cc" +#line 2315 "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 @@ -2337,8 +2337,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 2340 "dhcp4_lexer.cc" #line 2341 "dhcp4_lexer.cc" +#line 2342 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2666,7 +2666,7 @@ YY_DECL } -#line 2669 "dhcp4_lexer.cc" +#line 2670 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -6008,7 +6008,7 @@ YY_RULE_SETUP #line 2642 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 6011 "dhcp4_lexer.cc" +#line 6012 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index db7809eb03..aabce98447 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -1,6 +1,6 @@ -#line 1 "dhcp6_lexer.cc" +#line 2 "dhcp6_lexer.cc" -#line 3 "dhcp6_lexer.cc" +#line 4 "dhcp6_lexer.cc" #define YY_INT_ALIGNED short int @@ -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 252 -#define YY_END_OF_BUFFER 253 +#define YY_NUM_RULES 253 +#define YY_END_OF_BUFFER 254 /* 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[2385] = +static const flex_int16_t yy_accept[2408] = { 0, - 245, 245, 0, 0, 0, 0, 0, 0, 0, 0, - 253, 251, 10, 11, 251, 1, 245, 242, 245, 245, - 251, 244, 243, 251, 251, 251, 251, 251, 238, 239, - 251, 251, 251, 240, 241, 5, 5, 5, 251, 251, - 251, 10, 11, 0, 0, 233, 0, 0, 0, 0, + 246, 246, 0, 0, 0, 0, 0, 0, 0, 0, + 254, 252, 10, 11, 252, 1, 246, 243, 246, 246, + 252, 245, 244, 252, 252, 252, 252, 252, 239, 240, + 252, 252, 252, 241, 242, 5, 5, 5, 252, 252, + 252, 10, 11, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 245, 245, 0, 244, 245, 3, 2, 6, 0, 245, + 246, 246, 0, 245, 246, 3, 2, 6, 0, 246, 0, 0, 0, 0, 0, 0, 4, 0, 0, 9, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, + 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -725,7 +725,7 @@ static const flex_int16_t yy_accept[2385] = 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 186, 0, 0, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 235, 237, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -737,8 +737,8 @@ static const flex_int16_t yy_accept[2385] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 250, 248, 0, 247, - 246, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 0, 0, 0, 0, 0, 0, 251, 249, 0, 248, + 247, 0, 0, 0, 0, 0, 0, 185, 0, 0, 23, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -752,40 +752,40 @@ static const flex_int16_t yy_accept[2385] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 249, 246, 0, 0, 0, 0, + 0, 0, 0, 0, 250, 247, 0, 0, 0, 0, 0, 24, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, - 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 139, 0, 0, 0, 0, 0, 0, 117, 0, 0, - 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, + 53, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 127, 0, 0, 54, 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, 127, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 163, 0, 190, 0, 50, 207, 0, 51, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 29, - 28, 0, 0, 0, 0, 0, 0, 179, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 163, 0, 190, 0, 50, 207, 0, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 32, + 29, 28, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, - 0, 0, 0, 0, 0, 0, 0, 209, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 0, 0, 0, 0, 0, 0, 0, 209, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, - 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, - 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120, 0, 0, 0, 0, 0, 0, 0, 215, 0, + 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 222, 0, 0, 7, 30, 0, 0, 0, 0, + 0, 0, 0, 222, 0, 0, 7, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -794,103 +794,104 @@ static const flex_int16_t yy_accept[2385] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 74, 0, 122, 0, + 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, + 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, + 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 130, + 0, 0, 217, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 149, 0, 0, 0, 0, 0, - 0, 0, 154, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 0, 183, 149, 0, + 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, - 0, 0, 55, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, + 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 156, 0, 0, 55, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 75, 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, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, - + 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 0, 121, - 0, 0, 169, 0, 0, 0, 0, 49, 0, 0, + 0, 52, 0, 0, 121, 0, 0, 169, 0, 0, + 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, + 0, 158, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, - 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 227, 0, 0, 216, + 90, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 227, 0, 0, 216, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 184, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 218, 0, 76, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 184, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, + 76, 0, 0, 0, 0, 0, 0, 0, 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, 176, 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, 0, 172, 188, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 119, 0, 0, 0, 114, - 0, 0, 0, 182, 0, 0, 0, 0, 123, 225, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, + 188, 0, 35, 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, 144, 145, 0, 0, 0, + 19, 0, 119, 0, 0, 0, 114, 0, 0, 0, + 182, 0, 0, 0, 0, 123, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 0, 0, 0, 0, 0, 78, 0, + 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 144, 145, 0, 0, 0, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, + 0, 0, 0, 0, 178, 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, 85, 0, 0, 0, 0, - 16, 0, 14, 0, 0, 0, 210, 212, 206, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, - - 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 110, 109, 0, - 0, 0, 0, 0, 0, 199, 0, 0, 224, 0, + 0, 0, 0, 0, 0, 140, 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, 221, 133, 0, 168, 0, 41, 0, 0, 56, + 0, 0, 0, 85, 0, 0, 0, 0, 16, 0, + 14, 0, 0, 0, 210, 212, 206, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, + + 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 109, 0, 0, + 0, 0, 0, 0, 199, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 91, 0, - 135, 58, 86, 0, 0, 177, 0, 0, 167, 0, + 221, 133, 0, 168, 0, 41, 0, 0, 56, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 91, 0, 135, + 58, 86, 0, 0, 177, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 69, 0, 129, 0, 0, 0, 0, + 0, 0, 69, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 220, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -898,72 +899,74 @@ static const flex_int16_t yy_accept[2385] = 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 59, 0, - 0, 0, 0, 0, 0, 213, 0, 0, 159, 46, - 0, 0, 0, 204, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 44, 0, 0, 0, 43, 0, 0, 17, 0, - 0, 0, 68, 0, 0, 0, 0, 0, 0, 151, - 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, - 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, - 0, 146, 0, 0, 0, 57, 205, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 213, 0, 0, 159, + 46, 0, 0, 0, 204, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 0, 0, 0, 43, 0, 0, 17, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, + 151, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, + 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, + 0, 0, 0, 146, 0, 0, 0, 57, 205, 0, - 0, 0, 124, 0, 0, 0, 0, 0, 0, 181, - 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 113, 0, 63, 0, 0, 0, 0, 0, - 103, 0, 0, 31, 0, 0, 47, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, + 0, 181, 0, 0, 0, 45, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, - 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 66, 0, 64, 0, 0, - 0, 0, 60, 202, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, - 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, - 0, 0, 0, 20, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 113, 0, 63, 0, 0, 0, + 0, 0, 103, 0, 0, 31, 0, 0, 0, 47, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 196, 0, 84, 0, 83, 0, 0, 79, 0, 0, + 197, 0, 0, 0, 0, 165, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, + 64, 0, 0, 0, 0, 60, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 0, 0, 143, 0, 0, + 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, + 170, 0, 0, 0, 0, 0, 0, 20, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 125, 0, 0, 0, 195, 0, 0, 0, 0, - 0, 67, 0, 0, 89, 0, 61, 0, 0, 136, - 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 100, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, + 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 196, 0, 84, 0, 83, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 195, 0, 0, 0, 0, 0, 67, 0, 0, + 89, 0, 61, 0, 0, 136, 0, 0, 0, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, + + 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 0, 48, 0, 0, 0, - 99, 0, 0, 0, 0, 201, 0, 0, 0, 0, - 0, 229, 232, 81, 80, 0, 0, 141, 160, 137, - 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, + 0, 0, 106, 0, 0, 48, 0, 0, 0, 99, + 0, 0, 0, 0, 201, 0, 0, 0, 0, 0, + 229, 233, 81, 80, 0, 0, 141, 160, 137, 0, + 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 193, 0, 0, 0, 0, 0, 0, 198, - - 0, 0, 0, 97, 0, 87, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 0, 0, 21, 230, 0, + 0, 0, 0, 0, 97, 0, 87, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 0, 0, 21, + 230, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 161, 0, 0, 39, 37, 0, 0, 0, - 0, 0, 101, 0, 0, 142, 0, 93, 0, 148, - 102, 0, 0, 0, 0, 0, 0, 0, 92, 0, - 194, 38, 228, 0 + 0, 0, 96, 0, 0, 161, 0, 0, 39, 37, + 0, 0, 0, 0, 0, 101, 0, 0, 142, 0, + 93, 0, 148, 102, 0, 0, 0, 0, 0, 0, + + 0, 92, 0, 194, 38, 228, 0 } ; static const YY_CHAR yy_ec[256] = @@ -1010,289 +1013,291 @@ static const YY_CHAR yy_meta[77] = 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[2393] = +static const flex_int16_t yy_base[2416] = { 0, 0, 75, 21, 28, 39, 47, 53, 61, 95, 103, - 2833, 2834, 31, 2829, 151, 0, 216, 2834, 223, 230, - 13, 237, 2834, 2809, 124, 17, 4, 34, 2834, 2834, - 23, 43, 64, 2834, 2834, 2834, 56, 2817, 2767, 0, - 2807, 106, 2824, 2, 268, 2834, 85, 90, 2770, 2791, - 98, 77, 2791, 235, 231, 97, 207, 298, 240, 2774, - 294, 306, 62, 254, 203, 223, 2769, 315, 210, 338, - 196, 327, 2752, 21, 339, 384, 319, 78, 249, 0, - 396, 412, 437, 444, 452, 2834, 0, 2834, 401, 458, - 253, 256, 272, 323, 337, 313, 2834, 2769, 2813, 2834, - - 379, 2834, 432, 362, 367, 2767, 2811, 372, 17, 392, - 393, 2805, 310, 424, 313, 369, 2809, 0, 500, 2765, - 439, 2747, 2744, 2744, 432, 2744, 2745, 2751, 428, 2737, - 2738, 2743, 452, 2753, 214, 2746, 2736, 436, 2752, 468, - 438, 470, 374, 2789, 16, 2731, 2787, 2724, 64, 2745, - 2745, 2739, 437, 2731, 2732, 2730, 2724, 443, 484, 2721, - 2720, 480, 2776, 2720, 445, 2732, 2731, 2719, 509, 2720, - 472, 2732, 2729, 2730, 2718, 472, 2727, 2765, 2764, 493, - 478, 2708, 2712, 501, 2708, 504, 2718, 2710, 2703, 2711, - 0, 505, 507, 528, 518, 529, 537, 2707, 2834, 542, - - 541, 2702, 2834, 530, 539, 2834, 2759, 551, 554, 2758, - 553, 2757, 548, 2756, 2834, 2834, 597, 2697, 2697, 560, - 2710, 2702, 2700, 2700, 2704, 2705, 2685, 2696, 2698, 2697, - 523, 532, 2738, 2699, 2680, 2677, 2685, 2691, 2679, 2689, - 2692, 2688, 2679, 2688, 2688, 2683, 2675, 2674, 2676, 2679, - 2659, 2663, 2677, 2669, 2659, 2662, 2661, 2675, 2834, 2661, - 2669, 550, 2710, 2653, 2662, 2707, 2651, 2661, 2704, 585, - 2703, 2645, 2659, 2700, 566, 2656, 2636, 2651, 2643, 2647, - 539, 2638, 2636, 553, 2636, 2642, 2633, 2646, 2630, 2641, - 2645, 384, 2639, 566, 2646, 2641, 2624, 2639, 2625, 2633, - - 2637, 2618, 2634, 2620, 2626, 2633, 2672, 2614, 276, 2619, - 2616, 2615, 597, 2614, 2609, 2623, 2622, 591, 2621, 2601, - 2623, 2605, 79, 2613, 2601, 580, 2834, 2834, 600, 2834, - 2834, 2599, 584, 600, 2649, 603, 2660, 2834, 594, 605, - 2834, 2659, 2834, 2653, 648, 2595, 2611, 594, 2588, 2607, - 2608, 2605, 2588, 2605, 2644, 2601, 2591, 2646, 2598, 2601, - 2592, 2595, 2581, 2592, 629, 2634, 2589, 2586, 2587, 625, - 2590, 2590, 2633, 2565, 2577, 2572, 2569, 2565, 2564, 2566, - 2569, 2619, 2573, 2617, 2560, 671, 672, 2573, 2573, 2556, - 2557, 2570, 2568, 2566, 2566, 2565, 2560, 2567, 2562, 2547, - - 615, 2556, 2559, 573, 2554, 2604, 630, 602, 2560, 2597, - 2544, 2537, 2552, 2543, 2550, 2531, 2548, 2540, 2536, 2541, - 680, 2591, 588, 2543, 2543, 2541, 643, 2532, 2530, 2542, - 626, 2517, 2518, 2531, 2521, 2513, 2517, 2531, 636, 2517, - 2529, 2528, 2527, 2518, 2521, 2566, 2523, 2522, 2521, 2520, - 2503, 2511, 2564, 2520, 2562, 2499, 2560, 2559, 2498, 684, - 2511, 2509, 2507, 2507, 2834, 2834, 2507, 649, 2547, 2551, - 2550, 2834, 2549, 643, 2834, 673, 734, 2497, 2504, 665, - 2546, 2489, 2544, 2538, 2488, 2490, 218, 2480, 2477, 2834, - 2482, 2475, 2487, 2490, 2477, 2476, 2834, 2486, 657, 2477, - - 2474, 2486, 177, 2471, 2465, 2472, 2834, 2520, 2477, 2462, - 2464, 2478, 2474, 2472, 2472, 2466, 699, 2456, 2510, 2834, - 2454, 2470, 2507, 2834, 2461, 2510, 2509, 2462, 2456, 2458, - 2459, 2443, 2452, 2497, 2445, 2444, 2439, 2438, 2440, 2436, - 2432, 651, 2451, 2425, 2432, 2431, 2447, 2484, 2834, 2431, - 2427, 707, 2435, 2434, 2428, 2421, 2420, 2434, 2434, 2422, - 2418, 2423, 2419, 2414, 2834, 2423, 2473, 2834, 2412, 2405, - 2465, 2464, 2406, 2405, 2410, 2465, 2418, 2412, 2406, 2415, - 723, 2455, 2399, 2394, 2452, 2389, 2395, 50, 2409, 2402, - 2406, 2389, 2450, 2392, 2387, 2387, 2441, 2383, 2384, 2383, - - 2381, 2398, 2834, 2394, 2834, 2434, 2834, 2834, 2382, 2834, - 676, 2432, 2436, 2368, 2429, 2386, 2432, 701, 2834, 2834, - 2834, 690, 682, 674, 2367, 2368, 725, 2834, 2367, 2834, - 685, 2385, 2365, 2375, 2378, 2419, 708, 2361, 2371, 2416, - 2358, 2365, 2358, 2366, 2359, 2368, 2350, 2350, 2365, 2364, - 2348, 699, 2362, 2361, 2345, 2360, 2342, 2392, 2346, 2355, - 2352, 2395, 2336, 2338, 2335, 2349, 2349, 2347, 2347, 2834, - 2332, 2344, 2336, 2342, 2333, 2341, 2339, 2834, 2834, 2325, - 2336, 2340, 2322, 2334, 2326, 704, 2317, 2316, 2310, 2315, - 2312, 2327, 2326, 2327, 2306, 2316, 2322, 2368, 2320, 2312, - - 2303, 2304, 2306, 2834, 2301, 2307, 711, 2355, 758, 2354, - 2296, 2352, 2296, 2299, 2297, 2299, 2290, 2305, 2834, 715, - 765, 2288, 2304, 2301, 2296, 2292, 2834, 2340, 2289, 2296, - 2337, 2834, 2280, 2278, 2292, 2295, 2280, 2331, 2330, 2274, - 2328, 2285, 2269, 2325, 2320, 2834, 209, 316, 390, 424, - 761, 471, 512, 542, 601, 731, 695, 715, 707, 717, - 717, 2834, 767, 712, 2834, 2834, 739, 759, 758, 752, - 766, 739, 731, 728, 739, 748, 742, 731, 727, 741, - 737, 743, 753, 799, 801, 758, 758, 802, 803, 754, - 755, 760, 761, 771, 776, 762, 765, 768, 777, 777, - - 761, 821, 780, 772, 782, 825, 771, 832, 779, 779, - 781, 785, 790, 793, 835, 795, 843, 797, 800, 795, - 786, 801, 806, 807, 804, 801, 808, 807, 795, 809, - 807, 815, 854, 813, 861, 862, 803, 816, 802, 812, - 862, 817, 870, 2834, 823, 821, 823, 819, 813, 829, - 877, 873, 874, 834, 2834, 824, 825, 824, 837, 827, - 840, 887, 843, 828, 890, 891, 2834, 845, 2834, 839, - 833, 828, 839, 852, 843, 832, 838, 896, 857, 841, - 841, 854, 906, 845, 852, 864, 859, 865, 862, 909, - 848, 860, 875, 872, 870, 860, 857, 2834, 925, 879, - - 880, 868, 882, 872, 876, 888, 879, 882, 887, 894, - 889, 917, 910, 939, 940, 914, 942, 888, 902, 905, - 885, 892, 906, 954, 908, 893, 906, 904, 2834, 2834, - 908, 903, 918, 915, 901, 903, 922, 919, 919, 922, - 910, 917, 919, 928, 976, 934, 973, 932, 922, 936, - 922, 921, 927, 919, 2834, 930, 925, 926, 932, 948, - 931, 988, 989, 941, 991, 2834, 952, 944, 955, 953, - 1001, 940, 957, 943, 958, 960, 947, 945, 1010, 964, - 950, 956, 954, 2834, 2834, 970, 969, 970, 975, 963, - 973, 975, 2834, 975, 977, 964, 982, 969, 971, 2834, - - 968, 986, 987, 973, 974, 970, 975, 993, 1037, 2834, - 995, 1039, 2834, 2834, 994, 994, 1043, 986, 990, 984, - 1000, 1048, 998, 988, 989, 985, 995, 999, 2834, 1010, - 1005, 1052, 1008, 1001, 1003, 999, 1016, 1006, 1021, 1004, - 1066, 1020, 1022, 1026, 1013, 1004, 1072, 1028, 1015, 1014, - 2834, 1021, 1022, 1074, 1075, 1024, 1037, 1078, 1022, 1038, - 1038, 1044, 1025, 1034, 1058, 1068, 1056, 1064, 1076, 1039, - 1095, 1040, 1055, 1094, 1053, 1096, 2834, 1102, 1052, 1043, - 1062, 1052, 1051, 1046, 1047, 1059, 1054, 1050, 1068, 1060, - 1055, 1056, 1066, 1077, 1119, 2834, 1070, 1064, 1082, 1075, - - 1070, 1126, 1132, 1086, 1077, 1135, 1092, 1083, 1091, 1093, - 1078, 1094, 1099, 1085, 1097, 1094, 1092, 1104, 1088, 1089, - 2834, 1105, 1108, 1105, 1092, 1094, 1155, 1095, 1114, 2834, - 1113, 1116, 1103, 1098, 1116, 1104, 1160, 1115, 1111, 1108, - 1164, 1110, 1166, 1125, 1111, 1129, 1129, 1129, 1131, 1116, - 1131, 1118, 1119, 1135, 1122, 1139, 2834, 1137, 1124, 2834, - 1182, 1132, 2834, 1142, 1135, 1191, 1135, 2834, 1138, 1143, - 1190, 1138, 1139, 1151, 1145, 1143, 1140, 1155, 1203, 1144, - 1145, 1206, 1207, 1148, 1160, 1153, 2834, 1149, 1166, 1158, - 1154, 1157, 2834, 1212, 1151, 1172, 1158, 1159, 1160, 1161, - - 1167, 1175, 1166, 1180, 1228, 1182, 1230, 1177, 1185, 1200, - 1229, 1212, 1204, 1209, 1191, 2834, 1193, 1178, 1198, 1181, - 1181, 2834, 1184, 1183, 1185, 1196, 1186, 1206, 1205, 1196, - 1207, 1253, 1192, 1204, 1213, 1206, 1210, 1214, 1197, 1218, - 1219, 1220, 1211, 1270, 1214, 1218, 2834, 1268, 1214, 2834, - 1232, 1214, 1214, 1235, 1232, 1275, 1235, 1222, 1240, 1228, - 1242, 1235, 1244, 1224, 1239, 1246, 1231, 1292, 1293, 2834, - 1243, 1295, 1249, 1235, 1245, 1255, 1239, 1259, 1242, 1244, - 1244, 1251, 1260, 1248, 1255, 1250, 1257, 1269, 1313, 1257, - 1315, 1257, 1271, 1275, 1319, 1269, 1270, 1259, 1323, 1271, - - 1274, 1269, 1273, 1328, 1329, 1279, 2834, 1268, 1285, 1278, - 1269, 1288, 1282, 1277, 1287, 1283, 1278, 1296, 2834, 1280, - 1276, 2834, 2834, 1282, 1345, 1301, 1282, 1288, 1302, 1288, - 1304, 1306, 1348, 1298, 1355, 1356, 1306, 1311, 1305, 1303, - 1314, 1296, 2834, 1301, 2834, 1310, 1308, 1334, 1347, 1335, - 1349, 1336, 1328, 1372, 1322, 1325, 1325, 1329, 1330, 1378, - 1318, 1318, 1321, 1338, 1333, 1337, 1332, 2834, 1329, 1342, - 1326, 1343, 1323, 1344, 1334, 1328, 1343, 1340, 1396, 1346, - 2834, 1359, 1357, 1360, 1344, 1353, 1357, 1362, 1348, 1411, - 1361, 1367, 1367, 1354, 1368, 1366, 1363, 1359, 1377, 1378, - - 1379, 1362, 2834, 2834, 1378, 2834, 1380, 1365, 1376, 1367, - 1386, 1379, 1377, 1432, 1386, 1383, 1430, 1391, 1380, 1387, - 1392, 1389, 1395, 2834, 1388, 2834, 1380, 1393, 1445, 2834, - 1389, 1390, 1401, 2834, 1402, 1396, 1391, 1401, 2834, 2834, - 1391, 1392, 1395, 1409, 1414, 1397, 1408, 1460, 1414, 1401, - 1420, 1411, 1465, 1461, 1467, 2834, 1415, 1412, 1423, 1471, - 1472, 1473, 1427, 1428, 1430, 2834, 2834, 1422, 1417, 1474, - 1420, 1436, 1420, 1432, 1484, 1422, 1481, 1464, 1465, 1457, - 1490, 1430, 2834, 1435, 1446, 1437, 1448, 1450, 2834, 1497, - 1431, 1442, 1457, 1496, 1445, 1456, 1444, 1443, 1459, 1460, - - 1457, 1504, 1464, 1511, 1512, 1468, 1459, 1469, 1476, 1464, - 1464, 1522, 1518, 1519, 1525, 1479, 2834, 1481, 1477, 1481, - 1483, 1474, 1477, 1486, 1483, 1473, 1476, 1476, 1538, 1539, - 1483, 1541, 1485, 1543, 1484, 1489, 1547, 2834, 1502, 1481, - 1496, 1489, 1492, 1505, 1508, 1507, 1505, 1557, 1508, 1498, - 2834, 1505, 1506, 1558, 1502, 1518, 1566, 1519, 1568, 1569, - 1570, 1511, 1521, 1573, 1527, 2834, 1519, 1576, 1517, 1517, - 2834, 1535, 2834, 1532, 1523, 1523, 2834, 2834, 2834, 1537, - 1520, 1540, 1541, 1527, 1529, 1591, 1538, 1593, 1539, 2834, - 1533, 1560, 1578, 1593, 1579, 2834, 1552, 1545, 1602, 1549, - - 1599, 1605, 2834, 1545, 1607, 1554, 1548, 1545, 1548, 1550, - 1546, 1609, 1569, 1611, 1561, 1573, 1576, 2834, 2834, 1573, - 1565, 1570, 1565, 1628, 1573, 2834, 1570, 1569, 2834, 1571, - 1633, 1572, 1584, 1575, 1632, 1591, 1593, 1593, 1590, 1637, - 1596, 2834, 2834, 1588, 2834, 1589, 2834, 1599, 1591, 2834, - 1643, 1602, 1604, 1601, 1648, 1593, 1608, 1651, 1610, 1602, - 2834, 1599, 1609, 1600, 1601, 1602, 1659, 1665, 2834, 1619, - 2834, 2834, 2834, 1662, 1606, 2834, 1623, 1608, 2834, 1622, - 1610, 1674, 1618, 1611, 1616, 1627, 1620, 1639, 1632, 1638, - 1628, 1686, 1636, 2834, 1645, 2834, 1642, 1690, 1667, 1668, - - 1674, 1659, 1667, 1691, 1697, 2834, 1652, 1637, 2834, 1700, - 2834, 1701, 1655, 1660, 1642, 1705, 1706, 1647, 1703, 1665, - 1660, 1657, 1650, 1657, 1709, 1664, 1665, 2834, 1655, 1677, - 1675, 1726, 2834, 1676, 1662, 1724, 1685, 1685, 1727, 1672, - 1677, 1675, 1737, 1690, 1678, 1740, 1736, 1688, 1743, 1701, - 1690, 1684, 1747, 1686, 1695, 1688, 1702, 1705, 1696, 1754, - 1755, 1705, 1703, 2834, 1696, 1694, 1755, 1756, 1757, 1709, - 1708, 1708, 1704, 1705, 2834, 1713, 1719, 1710, 1711, 1773, - 1711, 1713, 1771, 1714, 2834, 1710, 1728, 1780, 2834, 1748, - 1762, 1761, 1750, 1752, 1724, 2834, 1787, 1737, 2834, 2834, - - 1728, 1739, 1791, 2834, 1792, 2834, 1746, 1736, 1741, 1739, - 1792, 1748, 1753, 1739, 1742, 1758, 1747, 1745, 1745, 1747, - 2834, 1752, 1813, 1757, 1766, 1812, 1757, 1820, 1765, 1775, - 1776, 2834, 1824, 1774, 1821, 2834, 1769, 1777, 2834, 1768, - 1783, 1771, 2834, 1781, 1782, 1783, 1835, 1790, 1781, 2834, - 2834, 1770, 1788, 1789, 1798, 1780, 1786, 1799, 1788, 1841, - 1790, 1786, 1791, 1788, 1789, 1847, 1853, 2834, 1800, 1855, - 1805, 1795, 1811, 1804, 2834, 1838, 1862, 1844, 1859, 1865, - 1815, 2834, 1812, 1868, 1807, 2834, 2834, 1809, 1811, 1821, - 1868, 1813, 1828, 1815, 1877, 1831, 1817, 1824, 1824, 1835, - - 1836, 1828, 2834, 1831, 1825, 1827, 1843, 1829, 1841, 2834, - 1888, 1836, 1833, 2834, 1847, 1834, 1855, 1851, 1853, 1901, - 1851, 1848, 1856, 1850, 2834, 1906, 1864, 1861, 1854, 1855, - 1860, 1861, 1855, 1860, 1871, 1855, 1864, 1913, 1919, 1869, - 1921, 1867, 2834, 1861, 2834, 1868, 1925, 1926, 1923, 1924, - 2834, 1906, 1912, 2834, 1876, 1886, 2834, 1929, 1878, 1889, - 1890, 1875, 1876, 1884, 1941, 2834, 1886, 1938, 1939, 1891, - 1886, 1904, 1905, 1902, 1950, 1894, 1907, 1902, 1899, 1904, - 1902, 1959, 1960, 1905, 1902, 1916, 1903, 2834, 1918, 1919, - 1920, 1921, 2834, 1915, 1970, 1920, 1925, 1911, 1919, 1913, - - 1933, 1934, 1915, 1916, 1923, 2834, 1925, 2834, 1939, 1936, - 1979, 1937, 2834, 2834, 1941, 1967, 1968, 1966, 1943, 1930, - 1930, 1939, 1946, 1939, 1938, 1949, 1936, 2834, 1952, 1940, - 1943, 2002, 1939, 1958, 1951, 1950, 2834, 1962, 1955, 1954, - 1963, 1965, 1969, 2834, 2834, 1964, 1956, 1956, 2019, 1959, - 2021, 1960, 2023, 2019, 2834, 1963, 2026, 2022, 1981, 1978, - 1969, 1977, 1988, 1975, 1986, 1972, 1970, 1978, 1977, 1982, - 1974, 2019, 2043, 2025, 2040, 2046, 1996, 1985, 1998, 1988, - 2005, 2004, 2048, 1989, 2008, 2009, 2834, 2014, 2007, 2054, - 2060, 2014, 2001, 2016, 2064, 2018, 2021, 2008, 2017, 2020, - - 2834, 2072, 2834, 2022, 2834, 2020, 2075, 2834, 2014, 2077, - 2021, 2018, 2080, 2025, 2077, 2078, 2037, 2080, 2023, 2027, - 2045, 2089, 2045, 2072, 2834, 2068, 2031, 2834, 2039, 2033, - 2030, 2092, 2055, 2048, 2044, 2101, 2041, 2043, 2042, 2049, - 2061, 2834, 2046, 2108, 2049, 2834, 2054, 2064, 2049, 2057, - 2059, 2834, 2060, 2065, 2834, 2067, 2834, 2064, 2074, 2834, - 2075, 2075, 2066, 2125, 2066, 2076, 2061, 2074, 2834, 2076, - 2107, 2113, 2082, 2087, 2084, 2136, 2074, 2076, 2073, 2097, - 2834, 2084, 2091, 2092, 2095, 2091, 2085, 2834, 2142, 2086, - 2094, 2103, 2102, 2105, 2106, 2093, 2100, 2095, 2096, 2098, - - 2110, 2105, 2834, 2116, 2104, 2160, 2108, 2120, 2148, 2169, - 2110, 2171, 2115, 2834, 2115, 2127, 2175, 2121, 2123, 2121, - 2122, 2180, 2138, 2131, 2118, 2133, 2138, 2186, 2187, 2188, - 2189, 2128, 2144, 2192, 2193, 2195, 2136, 2140, 2136, 2152, - 2135, 2147, 2141, 2203, 2834, 2157, 2834, 2149, 2160, 2207, - 2834, 2161, 2146, 2164, 2155, 2834, 2151, 2157, 2171, 2167, - 2160, 2834, 2834, 2834, 2834, 2217, 2218, 2834, 2834, 2834, - 2158, 2166, 2161, 2217, 2180, 2177, 2225, 2834, 2165, 2222, - 2185, 2834, 2229, 2168, 2231, 2171, 2172, 2185, 2184, 2185, - 2175, 2834, 2834, 2176, 2239, 2189, 2198, 2191, 2238, 2834, - - 2194, 2190, 2184, 2834, 2196, 2834, 2243, 2202, 2250, 2189, - 2205, 2253, 2254, 2834, 2208, 2202, 2195, 2215, 2202, 2204, - 2215, 2206, 2210, 2204, 2834, 2261, 2207, 2834, 2834, 2207, - 2215, 2265, 2222, 2215, 2219, 2228, 2275, 2220, 2220, 2278, - 2217, 2219, 2281, 2282, 2221, 2237, 2222, 2240, 2240, 2834, - 2288, 2232, 2834, 2239, 2291, 2834, 2834, 2241, 2293, 2238, - 2295, 2296, 2834, 2244, 2243, 2834, 2244, 2834, 2238, 2834, - 2834, 2238, 2255, 2256, 2304, 2247, 2306, 2307, 2834, 2308, - 2834, 2834, 2834, 2834, 2314, 2317, 2320, 2321, 2323, 2326, - 2329, 2332 - + 2855, 2856, 31, 2851, 151, 0, 216, 2856, 223, 230, + 13, 237, 2856, 2831, 124, 17, 4, 34, 2856, 2856, + 23, 43, 64, 2856, 2856, 2856, 56, 2839, 2789, 0, + 2829, 106, 2846, 2, 268, 2856, 85, 90, 2792, 2813, + 98, 77, 2813, 235, 231, 97, 207, 298, 240, 2796, + 294, 306, 62, 254, 203, 223, 2791, 315, 210, 338, + 196, 327, 2774, 21, 339, 384, 319, 78, 249, 0, + 396, 412, 437, 444, 452, 2856, 0, 2856, 401, 458, + 253, 256, 272, 323, 337, 313, 2856, 2791, 2835, 2856, + + 379, 2856, 432, 362, 367, 2789, 2833, 372, 17, 392, + 393, 2827, 310, 424, 313, 369, 2831, 0, 500, 2787, + 439, 2769, 2766, 2766, 432, 2766, 2767, 2773, 428, 2759, + 2760, 2765, 452, 2775, 214, 2768, 2758, 436, 2774, 468, + 438, 470, 374, 2811, 16, 2753, 2809, 2746, 64, 2767, + 2767, 2761, 437, 2753, 2754, 2752, 2746, 443, 484, 2743, + 2742, 480, 2798, 2742, 445, 2754, 2753, 2741, 509, 2742, + 472, 2754, 2751, 2752, 2740, 472, 2749, 2787, 2786, 493, + 478, 2730, 2734, 501, 2730, 504, 2740, 2732, 2725, 2733, + 0, 505, 507, 528, 518, 529, 537, 2729, 2856, 542, + + 541, 2724, 2856, 530, 539, 2856, 2781, 551, 554, 2780, + 553, 2779, 548, 2778, 2856, 2856, 597, 2719, 2719, 560, + 2732, 2724, 2722, 2722, 2726, 2727, 2707, 2718, 2720, 2719, + 523, 532, 2760, 2721, 2702, 2699, 2707, 2713, 2701, 2711, + 2714, 2710, 2701, 2710, 2710, 2705, 2697, 2696, 2698, 2701, + 2681, 2685, 2699, 2691, 2681, 2684, 2683, 2697, 2856, 2683, + 2691, 550, 2732, 2675, 2684, 2729, 2673, 2683, 2726, 585, + 2725, 2667, 2681, 2722, 566, 2678, 2658, 2673, 2665, 2669, + 539, 2660, 2658, 553, 2658, 2664, 2655, 2668, 2652, 2663, + 2667, 384, 2661, 566, 2668, 2663, 2646, 2661, 2647, 2655, + + 2659, 2640, 2656, 2642, 2648, 2655, 2694, 2636, 276, 2641, + 2638, 2637, 597, 2636, 2631, 2645, 2644, 591, 2643, 2623, + 2645, 2627, 79, 2635, 2623, 580, 2856, 2856, 600, 2856, + 2856, 2621, 584, 600, 2671, 603, 2682, 2856, 594, 605, + 2856, 2681, 2856, 2675, 648, 2617, 616, 595, 2611, 2630, + 2631, 2628, 2611, 2628, 2667, 2624, 2614, 2669, 2621, 2624, + 2615, 2618, 2604, 2615, 629, 2657, 2612, 2609, 2610, 625, + 2613, 2613, 2656, 2588, 2600, 2595, 2592, 2588, 2587, 2589, + 2592, 2642, 2596, 2640, 2583, 671, 672, 2596, 2596, 2579, + 2580, 2593, 2591, 2589, 2589, 2588, 2583, 2590, 2585, 2570, + + 615, 2579, 2582, 573, 2577, 2627, 630, 604, 2583, 2620, + 2567, 2560, 2575, 2566, 2573, 2554, 2571, 2563, 2559, 2564, + 680, 2614, 635, 2566, 2566, 2564, 627, 2555, 2553, 2565, + 627, 2540, 2541, 2554, 2544, 2536, 2540, 2554, 650, 2540, + 2552, 2551, 2550, 2541, 2544, 2589, 2546, 2545, 2544, 2543, + 2526, 2534, 2587, 2543, 2585, 2522, 2583, 2582, 2521, 698, + 2534, 2532, 2530, 2530, 2856, 2856, 2530, 657, 2570, 2574, + 2573, 2856, 2572, 669, 2856, 672, 734, 2520, 2527, 2564, + 673, 2568, 2511, 2566, 2560, 2510, 2512, 218, 2502, 2499, + 2856, 2504, 2497, 2509, 2512, 2499, 2498, 2856, 2508, 662, + + 2499, 2496, 2508, 177, 2493, 2487, 2494, 2856, 2542, 2499, + 2484, 2486, 2500, 2496, 2494, 2494, 2488, 699, 2478, 2532, + 2856, 2476, 2492, 2529, 2856, 2483, 2532, 2531, 2484, 2478, + 2480, 2481, 2465, 2474, 2519, 2467, 2466, 2461, 2460, 2462, + 2458, 2454, 663, 2473, 2447, 2454, 2453, 2469, 2506, 2856, + 2453, 2449, 708, 2457, 2456, 2450, 2443, 2442, 2456, 2456, + 2444, 2440, 2445, 2441, 2436, 2856, 2445, 2495, 2856, 2434, + 2427, 2487, 2486, 2428, 2427, 2432, 2487, 2440, 2434, 2428, + 2437, 709, 2477, 2421, 2416, 2474, 2411, 2417, 50, 2431, + 2424, 2428, 2411, 2472, 2414, 2409, 2409, 2463, 2405, 2406, + + 2405, 2403, 2420, 2856, 2416, 2856, 2456, 2856, 2856, 2404, + 2856, 667, 2454, 2458, 2390, 2451, 2408, 2454, 726, 2856, + 2856, 2856, 712, 706, 698, 2389, 2390, 2408, 759, 2856, + 2388, 2856, 705, 2406, 2386, 2396, 2399, 2440, 731, 2382, + 2392, 2437, 2379, 2386, 2379, 2387, 2380, 2389, 2371, 2371, + 2386, 2385, 2369, 679, 2383, 2382, 2366, 2381, 2363, 2413, + 2367, 2376, 2373, 2416, 2357, 2359, 2356, 2370, 2370, 2368, + 2368, 2856, 2353, 2365, 2357, 2363, 2354, 2362, 2360, 2856, + 2856, 2346, 2357, 2361, 2343, 2355, 2347, 693, 2338, 2337, + 2331, 2336, 2333, 2348, 2347, 2348, 2327, 2337, 2343, 2389, + + 2341, 2333, 2324, 2325, 2327, 2856, 2322, 2328, 713, 2376, + 765, 2375, 2317, 2373, 2317, 2320, 2318, 2320, 2311, 2326, + 2856, 706, 771, 2309, 2325, 2322, 2317, 2313, 2856, 2361, + 2310, 2317, 2358, 2856, 2301, 2299, 2313, 2316, 2301, 2352, + 2351, 2295, 2349, 2306, 2290, 2342, 26, 2856, 209, 316, + 390, 424, 772, 471, 512, 542, 577, 643, 620, 670, + 669, 697, 695, 2856, 745, 706, 2856, 2856, 737, 751, + 757, 752, 765, 740, 731, 743, 729, 742, 751, 745, + 734, 730, 744, 740, 746, 756, 804, 805, 762, 763, + 808, 810, 761, 757, 763, 764, 774, 779, 765, 768, + + 771, 780, 780, 764, 824, 783, 775, 785, 828, 774, + 835, 782, 782, 784, 788, 793, 796, 838, 798, 846, + 800, 803, 798, 789, 804, 809, 810, 807, 804, 811, + 810, 798, 812, 810, 818, 857, 816, 864, 865, 806, + 819, 805, 815, 865, 820, 873, 2856, 826, 824, 826, + 822, 816, 832, 880, 876, 877, 837, 2856, 827, 828, + 827, 840, 830, 843, 890, 846, 831, 893, 894, 2856, + 848, 2856, 842, 836, 831, 842, 855, 846, 835, 841, + 899, 860, 844, 844, 857, 909, 848, 855, 867, 862, + 868, 865, 912, 851, 863, 878, 875, 873, 863, 860, + + 2856, 928, 882, 883, 871, 885, 875, 879, 891, 882, + 885, 890, 897, 892, 920, 913, 942, 943, 917, 945, + 891, 906, 906, 909, 889, 896, 910, 958, 912, 897, + 910, 908, 2856, 2856, 912, 907, 922, 919, 905, 907, + 926, 923, 924, 926, 914, 922, 923, 933, 980, 938, + 977, 936, 926, 940, 926, 925, 931, 923, 2856, 934, + 929, 930, 936, 952, 935, 992, 993, 945, 995, 2856, + 956, 948, 959, 957, 1005, 944, 961, 947, 962, 964, + 951, 949, 1014, 968, 954, 960, 958, 2856, 2856, 974, + 973, 974, 979, 967, 977, 979, 2856, 979, 981, 968, + + 986, 973, 975, 2856, 972, 990, 991, 977, 978, 974, + 979, 997, 1041, 2856, 999, 1043, 2856, 2856, 998, 998, + 1047, 990, 994, 988, 1004, 1052, 1002, 992, 993, 989, + 999, 1003, 2856, 1014, 1009, 1056, 1012, 1005, 1007, 1003, + 1020, 1010, 1025, 1008, 1070, 1024, 1026, 1030, 1017, 1008, + 1076, 1032, 1019, 1018, 2856, 1025, 1026, 1078, 1079, 1028, + 1041, 1082, 1026, 1042, 1042, 1048, 1029, 1038, 1062, 1072, + 1060, 1068, 1080, 1043, 1099, 1040, 1046, 1060, 1099, 1058, + 1101, 2856, 1107, 1057, 1048, 1067, 1057, 1056, 1051, 1052, + 1064, 1059, 1055, 1073, 1065, 1060, 1061, 1073, 1085, 1124, + + 2856, 1075, 1069, 1087, 1080, 1075, 1131, 1137, 1091, 1082, + 1140, 1097, 1088, 1096, 1098, 1083, 1099, 1104, 1090, 1102, + 1099, 1097, 1109, 1093, 1094, 2856, 1110, 1113, 1110, 1097, + 1099, 1160, 1100, 1119, 2856, 1118, 1121, 1108, 1103, 1121, + 1109, 1165, 1120, 1116, 1113, 1169, 1115, 1171, 1130, 1116, + 1134, 1134, 1134, 1136, 1121, 1136, 1123, 1124, 1140, 1127, + 1144, 2856, 1142, 1129, 2856, 1187, 1137, 2856, 1147, 1140, + 1196, 1140, 2856, 1143, 1148, 1195, 1143, 1144, 1156, 1150, + 1148, 1145, 1160, 1208, 1149, 1150, 1211, 1212, 1153, 1165, + 1158, 2856, 1154, 1171, 1163, 1159, 1162, 2856, 1217, 1156, + + 1177, 1163, 1164, 1165, 1166, 1172, 1180, 1171, 1185, 1233, + 1187, 1235, 1182, 1190, 1205, 1234, 1217, 1209, 1214, 1196, + 2856, 1197, 1199, 1184, 1204, 1187, 1187, 2856, 1190, 1189, + 1191, 1202, 1192, 1212, 1211, 1202, 1213, 1259, 1198, 1210, + 1219, 1212, 1216, 1220, 1203, 1228, 1225, 1226, 1217, 1275, + 1219, 1223, 2856, 1273, 1220, 2856, 1238, 1220, 1220, 1241, + 1238, 1281, 1241, 1228, 1246, 1234, 1248, 1241, 1250, 1230, + 1245, 1252, 1237, 1298, 1299, 2856, 1249, 1301, 1255, 1241, + 1251, 1261, 1245, 1265, 1248, 1250, 1250, 1257, 1266, 1254, + 1261, 1256, 1263, 1275, 1319, 1263, 1321, 1263, 1277, 1281, + + 1325, 1275, 1276, 1265, 1329, 1277, 1280, 1275, 1279, 1334, + 1335, 1285, 2856, 1274, 1291, 1284, 1275, 1294, 1288, 1283, + 1293, 1289, 1284, 1302, 2856, 1286, 1282, 2856, 2856, 1288, + 1351, 1307, 1288, 1294, 1308, 1294, 1310, 1312, 1354, 1304, + 1361, 1362, 1312, 1317, 1311, 1309, 1320, 1302, 2856, 1307, + 2856, 1316, 1314, 1340, 1353, 1341, 1355, 1342, 1334, 1317, + 1379, 1329, 1332, 1332, 1336, 1337, 1385, 1325, 1325, 1328, + 1345, 1340, 1344, 1339, 2856, 1336, 1349, 1333, 1350, 1330, + 1351, 1342, 1339, 1350, 1347, 1403, 1353, 2856, 1366, 1364, + 1367, 1351, 1360, 1364, 1369, 1355, 1418, 1368, 1374, 1374, + + 1361, 1375, 1373, 1370, 1366, 1384, 1385, 1386, 1369, 2856, + 2856, 1385, 2856, 1387, 1372, 1383, 1374, 1393, 1386, 1384, + 1439, 1393, 1390, 1437, 1398, 1387, 1394, 1399, 1396, 1402, + 2856, 1395, 2856, 1387, 1400, 1452, 2856, 1396, 1397, 1408, + 2856, 1409, 1403, 1398, 1408, 2856, 2856, 1398, 1399, 1402, + 1416, 1421, 1404, 1415, 1467, 1421, 1408, 1427, 1418, 1472, + 1468, 1474, 2856, 1422, 1419, 1430, 1478, 1479, 1480, 1434, + 1435, 1437, 2856, 2856, 1429, 1424, 1481, 1427, 1443, 1427, + 1439, 1491, 1429, 1488, 1471, 1472, 1464, 1497, 1437, 1438, + 2856, 1443, 1454, 1445, 1456, 1458, 2856, 1505, 1439, 1450, + + 1465, 1504, 1453, 1464, 1452, 1451, 1467, 1468, 1465, 1512, + 1472, 1519, 1520, 1478, 1467, 1478, 1484, 1472, 1472, 1530, + 1526, 1527, 1533, 1487, 2856, 1489, 1485, 1489, 1491, 1482, + 1485, 1494, 1491, 1481, 1484, 1484, 1546, 1547, 1491, 1549, + 1493, 1551, 1492, 1497, 1555, 2856, 1510, 1489, 1504, 1497, + 1500, 1513, 1516, 1515, 1513, 1565, 1516, 1506, 2856, 1513, + 1514, 1566, 1510, 1526, 1574, 1527, 1576, 1577, 1578, 1519, + 1529, 1581, 1535, 2856, 1527, 1584, 1525, 1525, 2856, 1543, + 2856, 1540, 1531, 1531, 2856, 2856, 2856, 1545, 1528, 1548, + 1549, 1535, 1537, 1599, 1546, 1601, 1547, 2856, 1541, 1568, + + 1586, 1601, 1587, 2856, 1560, 1604, 1554, 1611, 1558, 1608, + 1614, 2856, 1554, 1616, 1563, 1557, 1554, 1557, 1559, 1555, + 1618, 1578, 1620, 1570, 1582, 1585, 2856, 2856, 1582, 1576, + 1581, 1574, 1637, 1582, 2856, 1579, 1578, 2856, 1580, 1642, + 1581, 1593, 1584, 1641, 1600, 1602, 1602, 1599, 1646, 1605, + 2856, 2856, 1597, 2856, 1598, 2856, 1608, 1600, 2856, 1652, + 1612, 1613, 1610, 1657, 1602, 1617, 1660, 1619, 1611, 2856, + 1608, 1618, 1609, 1610, 1611, 1668, 1674, 2856, 1628, 2856, + 2856, 2856, 1671, 1615, 2856, 1632, 1617, 2856, 1631, 1619, + 1683, 1627, 1620, 1625, 1636, 1629, 1648, 1641, 1647, 1637, + + 1695, 1645, 2856, 1654, 2856, 1651, 1699, 1676, 1677, 1683, + 1668, 1676, 1700, 1646, 1707, 2856, 1662, 1647, 2856, 1710, + 2856, 1711, 1665, 1670, 1652, 1715, 1716, 1657, 1713, 1674, + 1671, 1667, 1660, 1667, 1719, 1674, 1675, 2856, 1671, 1687, + 1685, 1736, 2856, 1686, 1672, 1734, 1695, 1695, 1737, 1682, + 1687, 1685, 1747, 1700, 1688, 1750, 1746, 1698, 1753, 1711, + 1700, 1694, 1757, 1696, 1705, 1698, 1712, 1715, 1706, 1764, + 1765, 1715, 1713, 2856, 1706, 1704, 1765, 1766, 1767, 1719, + 1718, 1718, 1714, 1715, 2856, 1723, 1729, 1720, 1721, 1783, + 1721, 1723, 1781, 1724, 2856, 1720, 1738, 1790, 2856, 1758, + + 1772, 1771, 1760, 1762, 1734, 1750, 2856, 1798, 1748, 2856, + 2856, 1739, 1750, 1802, 2856, 1803, 2856, 1757, 1747, 1752, + 1750, 1804, 1759, 1764, 1750, 1753, 1769, 1758, 1756, 1756, + 1759, 2856, 1766, 1825, 1768, 1777, 1823, 1767, 1831, 1776, + 1786, 1787, 2856, 1835, 1785, 1832, 2856, 1780, 1788, 2856, + 1779, 1794, 1782, 2856, 1792, 1793, 1794, 1846, 1801, 1792, + 2856, 2856, 1781, 1799, 1800, 1809, 1791, 1797, 1810, 1799, + 1852, 1801, 1797, 1802, 1799, 1800, 1858, 1864, 2856, 1811, + 1866, 1816, 1806, 1822, 1815, 2856, 1848, 1873, 1855, 1870, + 1876, 1826, 1829, 2856, 1824, 1880, 1819, 2856, 2856, 1821, + + 1823, 1833, 1880, 1825, 1840, 1827, 1889, 1843, 1829, 1836, + 1836, 1847, 1848, 1840, 2856, 1843, 1838, 1841, 1855, 1841, + 1853, 2856, 1900, 1848, 1845, 2856, 1859, 1846, 1867, 1863, + 1865, 1913, 1863, 1860, 1868, 1862, 2856, 1918, 1876, 1873, + 1866, 1867, 1872, 1873, 1867, 1872, 1883, 1867, 1876, 1925, + 1931, 1881, 1933, 1879, 2856, 1873, 2856, 1880, 1937, 1938, + 1935, 1936, 2856, 1918, 1924, 2856, 1888, 1894, 1899, 2856, + 1942, 1891, 1902, 1903, 1888, 1889, 1897, 1954, 2856, 1899, + 1951, 1952, 1904, 1899, 1917, 1918, 1915, 1963, 1907, 1920, + 1915, 1912, 1917, 1917, 1972, 1973, 1918, 1915, 1929, 1916, + + 2856, 1931, 1932, 1933, 1934, 2856, 1928, 1983, 1933, 1938, + 1924, 1932, 1926, 1946, 1947, 1928, 1929, 1936, 2856, 1938, + 2856, 1952, 1949, 1992, 1950, 2856, 2856, 1954, 1980, 1981, + 1979, 1956, 1943, 1944, 1944, 1953, 1960, 1953, 1952, 1963, + 1950, 2856, 1966, 1954, 1957, 2016, 1953, 1972, 1965, 1964, + 2856, 1976, 1969, 1968, 1977, 1979, 1985, 2856, 2856, 1979, + 1970, 1970, 2033, 1973, 2035, 1974, 2037, 2033, 2856, 1977, + 2040, 2036, 1995, 1992, 1983, 1991, 2002, 1989, 2000, 1986, + 1984, 1992, 1991, 1996, 1988, 2033, 2057, 2039, 2054, 1998, + 2061, 2011, 2000, 2013, 2003, 2020, 2019, 2063, 2004, 2023, + + 2024, 2856, 2029, 2022, 2069, 2075, 2029, 2016, 2031, 2079, + 2033, 2036, 2023, 2034, 2035, 2856, 2087, 2856, 2037, 2856, + 2035, 2090, 2856, 2029, 2092, 2036, 2033, 2095, 2040, 2092, + 2093, 2052, 2095, 2038, 2042, 2060, 2104, 2060, 2087, 2856, + 2083, 2046, 2049, 2856, 2055, 2049, 2046, 2108, 2071, 2064, + 2060, 2117, 2057, 2059, 2058, 2065, 2077, 2856, 2062, 2124, + 2065, 2856, 2070, 2080, 2065, 2073, 2075, 2856, 2076, 2082, + 2856, 2084, 2856, 2080, 2090, 2856, 2091, 2091, 2082, 2141, + 2082, 2092, 2077, 2090, 2856, 2092, 2123, 2129, 2098, 2107, + 2104, 2101, 2153, 2091, 2093, 2090, 2114, 2856, 2101, 2108, + + 2109, 2112, 2108, 2102, 2856, 2159, 2103, 2111, 2120, 2119, + 2122, 2123, 2110, 2117, 2112, 2115, 2115, 2127, 2122, 2856, + 2133, 2121, 2177, 2125, 2137, 2165, 2186, 2127, 2126, 2189, + 2133, 2856, 2133, 2145, 2193, 2139, 2141, 2139, 2140, 2198, + 2156, 2149, 2136, 2151, 2156, 2204, 2205, 2206, 2207, 2146, + 2162, 2210, 2212, 2213, 2154, 2158, 2154, 2170, 2153, 2165, + 2159, 2221, 2856, 2175, 2172, 2856, 2168, 2179, 2226, 2856, + 2180, 2165, 2183, 2174, 2856, 2170, 2176, 2190, 2186, 2179, + 2856, 2856, 2856, 2856, 2236, 2237, 2856, 2856, 2856, 2177, + 2185, 2180, 2236, 2199, 2196, 2244, 2856, 2184, 2189, 2242, + + 2205, 2856, 2249, 2188, 2251, 2191, 2192, 2205, 2204, 2205, + 2195, 2856, 2856, 2196, 2259, 2209, 2218, 2211, 2258, 2856, + 2214, 2209, 2211, 2205, 2856, 2217, 2856, 2264, 2223, 2271, + 2210, 2226, 2274, 2275, 2856, 2229, 2223, 2216, 2236, 2223, + 2282, 2226, 2237, 2228, 2232, 2226, 2856, 2283, 2229, 2856, + 2856, 2229, 2237, 2287, 2244, 2237, 2241, 2856, 2250, 2297, + 2242, 2242, 2300, 2239, 2241, 2303, 2304, 2243, 2259, 2244, + 2262, 2262, 2856, 2310, 2254, 2856, 2261, 2313, 2856, 2856, + 2263, 2315, 2260, 2317, 2318, 2856, 2266, 2265, 2856, 2266, + 2856, 2260, 2856, 2856, 2260, 2277, 2278, 2326, 2269, 2328, + + 2329, 2856, 2330, 2856, 2856, 2856, 2856, 2336, 2339, 2342, + 2343, 2345, 2348, 2351, 2354 } ; -static const flex_int16_t yy_def[2393] = +static const flex_int16_t yy_def[2416] = { 0, - 2385, 2385, 2386, 2386, 2385, 2385, 2385, 2385, 2385, 2385, - 2384, 2384, 2384, 2384, 2384, 2387, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2388, - 2384, 2384, 2384, 2389, 15, 2384, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2390, 45, 45, + 2408, 2408, 2409, 2409, 2408, 2408, 2408, 2408, 2408, 2408, + 2407, 2407, 2407, 2407, 2407, 2410, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2411, + 2407, 2407, 2407, 2412, 15, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2387, - 2384, 2384, 2384, 2384, 2384, 2384, 2391, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2388, 2384, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2410, + 2407, 2407, 2407, 2407, 2407, 2407, 2414, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2411, 2407, - 2389, 2384, 2384, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2392, 45, 2390, 45, + 2412, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2415, 45, 2413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1300,14 +1305,14 @@ static const flex_int16_t yy_def[2393] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2391, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 45, + 2414, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 45, - 45, 45, 2384, 45, 45, 2384, 45, 45, 45, 45, - 45, 45, 45, 2392, 2384, 2384, 119, 45, 45, 45, + 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 2415, 2407, 2407, 119, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1315,9 +1320,9 @@ static const flex_int16_t yy_def[2393] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 45, 45, 45, 45, 45, 2384, 45, 45, - 2384, 45, 2384, 45, 119, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 45, 45, 45, 45, 45, 2407, 45, 45, + 2407, 45, 2407, 45, 119, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1330,40 +1335,40 @@ static const flex_int16_t yy_def[2393] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 2384, 2384, 45, 45, 45, - 45, 2384, 45, 45, 2384, 45, 119, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 2407, 2407, 45, 45, 45, + 45, 2407, 45, 45, 2407, 45, 119, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 45, + 2407, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 2384, 45, 45, + 2407, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 2384, 45, 2384, 45, 2384, 2384, 45, 2384, - 45, 45, 45, 45, 45, 2384, 45, 45, 2384, 2384, - 2384, 45, 45, 45, 45, 45, 45, 2384, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 2407, 45, 2407, 45, 2407, 2407, 45, + 2407, 45, 45, 45, 45, 45, 2407, 45, 45, 2407, + 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 2407, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 45, 45, 45, 45, 45, 2384, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 2407, + 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, - 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2407, 45, 45, 45, 45, 45, 45, 45, 2407, 45, + 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2384, 45, 45, 2384, 2384, 45, 45, 45, 45, + 45, 45, 45, 2407, 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1372,195 +1377,197 @@ static const flex_int16_t yy_def[2393] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 2384, 45, + 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, + 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 2384, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 2384, 45, 45, 45, 45, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 2384, + 45, 45, 45, 45, 45, 45, 45, 2407, 2407, 45, + 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 2384, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 45, + 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2407, 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, - + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 2384, + 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 2384, - 45, 45, 2384, 45, 45, 45, 45, 2384, 45, 45, + 45, 2407, 45, 45, 2407, 45, 45, 2407, 45, 45, + 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, - 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 2384, + 2407, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, + 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 45, - 45, 2384, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2384, 45, 2384, 45, 45, 45, 45, 45, + 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, + 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2384, 2384, 45, 2384, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, + 2407, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 2384, 45, 45, 45, 2384, - 45, 45, 45, 2384, 45, 45, 45, 45, 2384, 2384, + 2407, 45, 2407, 45, 45, 45, 2407, 45, 45, 45, + 2407, 45, 45, 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 2384, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 2384, 45, + 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2407, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, - 2384, 45, 2384, 45, 45, 45, 2384, 2384, 2384, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, - - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 2384, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 2384, 45, + 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2384, 2384, 45, 2384, 45, 2384, 45, 45, 2384, + 45, 45, 45, 2407, 45, 45, 45, 45, 2407, 45, + 2407, 45, 45, 45, 2407, 2407, 2407, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + + 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2407, 2407, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 2384, 45, - 2384, 2384, 2384, 45, 45, 2384, 45, 45, 2384, 45, + 2407, 2407, 45, 2407, 45, 2407, 45, 45, 2407, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 2407, + 2407, 2407, 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 2384, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 2384, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2407, 45, 2407, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2407, 45, 45, 2407, 45, + 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 2384, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 2384, 2384, + 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 2407, 45, - 45, 45, 45, 2384, 45, 2384, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2384, 45, 45, 45, 2384, 45, 45, 2384, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 2384, - 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, - 45, 2384, 45, 45, 45, 2384, 2384, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2407, 45, 45, 2407, + 2407, 45, 45, 45, 2407, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2407, 45, 45, 45, 2407, 45, 45, 2407, + 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, + 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, + 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 2407, 45, 45, 45, 2407, 2407, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2384, 45, 2384, 45, 45, 45, 45, 45, - 2384, 45, 45, 2384, 45, 45, 2384, 45, 45, 45, - 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 2384, 45, 2384, 45, 45, - 45, 45, 2384, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, - 45, 45, 45, 2384, 2384, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 2407, 45, 45, 45, + 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 2407, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 2384, 45, 2384, 45, 45, 2384, 45, 45, + 2407, 45, 45, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, + 2407, 45, 45, 45, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 2384, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, + 2407, 45, 45, 45, 45, 45, 45, 2407, 2407, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2384, 45, 45, 45, 2384, 45, 45, 45, 45, - 45, 2384, 45, 45, 2384, 45, 2384, 45, 45, 2384, - 45, 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2384, 45, 45, 45, 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2384, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2407, 45, 2407, 45, 2407, + 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, + 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 2407, 45, 45, + 2407, 45, 2407, 45, 45, 2407, 45, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 2384, 45, 45, 45, - 2384, 45, 45, 45, 45, 2384, 45, 45, 45, 45, - 45, 2384, 2384, 2384, 2384, 45, 45, 2384, 2384, 2384, - 45, 45, 45, 45, 45, 45, 45, 2384, 45, 45, - 45, 2384, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2384, 2384, 45, 45, 45, 45, 45, 45, 2384, - - 45, 45, 45, 2384, 45, 2384, 45, 45, 45, 45, - 45, 45, 45, 2384, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2384, 45, 45, 2384, 2384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2384, - 45, 45, 2384, 45, 45, 2384, 2384, 45, 45, 45, - 45, 45, 2384, 45, 45, 2384, 45, 2384, 45, 2384, - 2384, 45, 45, 45, 45, 45, 45, 45, 2384, 45, - 2384, 2384, 2384, 0, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384 + 45, 45, 2407, 45, 45, 2407, 45, 45, 45, 2407, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 2407, 2407, 2407, 2407, 45, 45, 2407, 2407, 2407, 45, + 45, 45, 45, 45, 45, 45, 2407, 45, 45, 45, + + 45, 2407, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2407, 2407, 45, 45, 45, 45, 45, 45, 2407, + 45, 45, 45, 45, 2407, 45, 2407, 45, 45, 45, + 45, 45, 45, 45, 2407, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2407, 45, 45, 2407, + 2407, 45, 45, 45, 45, 45, 45, 2407, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2407, 45, 45, 2407, 45, 45, 2407, 2407, + 45, 45, 45, 45, 45, 2407, 45, 45, 2407, 45, + 2407, 45, 2407, 2407, 45, 45, 45, 45, 45, 45, + 45, 2407, 45, 2407, 2407, 2407, 0, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407 } ; -static const flex_int16_t yy_nxt[2911] = +static const flex_int16_t yy_nxt[2933] = { 0, - 2384, 13, 14, 13, 2384, 15, 16, 102, 17, 18, + 2407, 13, 14, 13, 2407, 15, 16, 102, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 86, 259, 37, 14, 37, 87, 25, 26, 38, 37, - 14, 37, 42, 27, 42, 38, 2384, 2384, 28, 91, + 14, 37, 42, 27, 42, 38, 896, 2407, 28, 91, 13, 14, 13, 92, 29, 91, 30, 103, 13, 14, 13, 205, 25, 31, 13, 14, 13, 42, 40, 42, - 740, 32, 13, 14, 13, 91, 40, 33, 260, 168, + 742, 32, 13, 14, 13, 91, 40, 33, 260, 168, 93, 94, 92, 169, 34, 35, 13, 14, 13, 205, 15, 16, 92, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 39, 13, 14, 13, 93, 93, 25, 26, 39, 13, 14, 13, 42, 27, 42, - 137, 95, 264, 28, 109, 741, 41, 104, 105, 29, + 137, 95, 264, 28, 109, 743, 41, 104, 105, 29, 108, 30, 115, 138, 41, 265, 188, 25, 31, 96, 189, 139, 89, 140, 89, 461, 32, 90, 90, 90, 90, 90, 33, 109, 104, 105, 108, 462, 115, 34, @@ -1572,13 +1579,13 @@ static const flex_int16_t yy_nxt[2911] = 60, 61, 62, 63, 64, 45, 65, 66, 52, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 45, 45, 45, 45, 45, 81, 656, 82, + 78, 79, 45, 45, 45, 45, 45, 81, 658, 82, 82, 82, 82, 82, 81, 116, 84, 84, 84, 84, - 84, 657, 83, 85, 85, 85, 85, 85, 81, 83, + 84, 659, 83, 85, 85, 85, 85, 85, 81, 83, 84, 84, 84, 84, 84, 113, 83, 159, 153, 160, - 894, 111, 116, 83, 161, 142, 154, 114, 83, 112, - 143, 634, 104, 144, 145, 83, 108, 116, 155, 240, - 241, 113, 83, 635, 146, 192, 147, 111, 193, 83, + 897, 111, 116, 83, 161, 142, 154, 114, 83, 112, + 143, 636, 104, 144, 145, 83, 108, 116, 155, 240, + 241, 113, 83, 637, 146, 192, 147, 111, 193, 83, 45, 120, 45, 45, 45, 45, 114, 112, 45, 121, 45, 45, 108, 118, 116, 122, 45, 45, 123, 45, @@ -1589,302 +1596,305 @@ static const flex_int16_t yy_nxt[2911] = 127, 45, 194, 128, 131, 192, 129, 132, 133, 45, 130, 134, 135, 45, 111, 45, 119, 149, 150, 193, 115, 151, 112, 210, 136, 162, 212, 152, 163, 164, - 186, 197, 195, 895, 102, 187, 156, 170, 157, 165, + 186, 197, 195, 898, 102, 187, 156, 170, 157, 165, 158, 171, 166, 201, 172, 213, 196, 206, 178, 179, 112, 173, 174, 200, 204, 175, 176, 177, 113, 85, 85, 85, 85, 85, 90, 90, 90, 90, 90, 201, 114, 213, 83, 81, 103, 82, 82, 82, 82, 82, 207, 204, 200, 208, 180, 427, 181, 101, 83, 182, - 183, 256, 896, 428, 101, 89, 257, 89, 83, 184, + 183, 256, 899, 428, 101, 89, 257, 89, 83, 184, 90, 90, 90, 90, 90, 81, 185, 84, 84, 84, 84, 84, 208, 211, 83, 85, 85, 85, 85, 85, - 83, 90, 90, 90, 90, 90, 897, 101, 83, 230, + 83, 90, 90, 90, 90, 90, 900, 101, 83, 230, 200, 101, 224, 208, 244, 101, 245, 269, 231, 232, 251, 225, 211, 101, 276, 226, 83, 101, 219, 101, 101, 236, 237, 246, 83, 216, 252, 286, 270, 220, 287, 238, 275, 217, 217, 217, 217, 217, 248, 291, - 308, 900, 217, 217, 217, 217, 217, 217, 210, 253, + 308, 903, 217, 217, 217, 217, 217, 217, 210, 253, 280, 249, 254, 301, 309, 250, 255, 302, 314, 327, 211, 303, 326, 277, 315, 281, 282, 283, 217, 217, 217, 217, 217, 217, 328, 326, 313, 292, 293, 294, - 320, 327, 901, 328, 333, 334, 327, 336, 295, 318, + 320, 327, 904, 328, 333, 334, 327, 336, 295, 318, 296, 326, 337, 297, 321, 298, 299, 339, 340, 342, 328, 344, 333, 359, 329, 361, 360, 414, 330, 331, - 333, 334, 339, 362, 902, 401, 336, 415, 392, 363, + 333, 334, 339, 362, 905, 401, 336, 415, 392, 363, 337, 418, 341, 339, 340, 342, 465, 451, 348, 344, 345, 345, 345, 345, 345, 393, 419, 342, 408, 345, 345, 345, 345, 345, 345, 430, 465, 468, 431, 471, - 473, 469, 465, 474, 497, 503, 546, 468, 473, 498, - 569, 504, 547, 342, 570, 345, 345, 345, 345, 345, - 345, 402, 466, 574, 403, 471, 468, 456, 469, 473, - 474, 477, 477, 477, 477, 477, 480, 552, 903, 622, - 477, 477, 477, 477, 477, 477, 520, 524, 540, 541, - 542, 521, 525, 550, 543, 565, 617, 579, 588, 610, - 566, 580, 589, 551, 611, 622, 477, 477, 477, 477, - - 477, 477, 617, 694, 670, 575, 623, 645, 624, 671, - 771, 646, 704, 695, 769, 617, 770, 705, 783, 647, - 867, 648, 649, 650, 651, 652, 759, 767, 732, 760, - 766, 627, 522, 733, 623, 774, 624, 523, 526, 771, - 769, 904, 768, 905, 770, 776, 567, 45, 45, 45, - 45, 45, 777, 767, 831, 832, 45, 45, 45, 45, - 45, 45, 799, 855, 852, 800, 898, 906, 856, 907, - 869, 768, 853, 908, 784, 870, 909, 910, 899, 911, - 868, 912, 45, 45, 45, 45, 45, 45, 913, 914, - 915, 917, 916, 918, 919, 920, 921, 922, 923, 924, - - 925, 926, 927, 928, 929, 857, 930, 931, 932, 933, - 912, 934, 935, 936, 937, 913, 914, 871, 916, 915, - 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, - 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, - 960, 961, 962, 958, 963, 964, 965, 959, 966, 967, - 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, - 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, - 988, 989, 991, 992, 990, 993, 994, 995, 996, 997, - 998, 999, 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, 1031, 1032, 1033, 1034, 1030, 1036, 1037, 1040, - 1041, 1042, 1035, 1043, 1047, 1038, 1048, 1049, 1050, 1039, - 1051, 1052, 1053, 1054, 1055, 1056, 1044, 1057, 1045, 1058, - 1059, 1060, 1046, 1061, 1062, 1064, 1065, 1063, 1066, 1067, - 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, - 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, - 1088, 1089, 1090, 1065, 1091, 1092, 1093, 1066, 1094, 1095, - 1069, 1096, 1098, 1099, 1100, 1101, 1097, 1102, 1103, 1104, - 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, - - 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1123, 1124, 1125, - 1126, 1122, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, - 1145, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1154, 1151, - 1155, 1156, 1157, 1159, 1160, 1161, 1162, 1158, 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, 1192, 1193, 1194, 1183, - 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1215, 1213, - - 1216, 1217, 1214, 1218, 1219, 1220, 1221, 1222, 1223, 1224, - 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, - 1235, 1236, 1237, 1211, 1210, 1238, 1212, 1213, 1214, 1239, - 1240, 1242, 1243, 1241, 1244, 1245, 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, 1273, 1274, 1275, 1276, 1271, 1277, 1278, 1279, 1280, - 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, - 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, - 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, + 473, 469, 465, 474, 498, 504, 547, 575, 468, 499, + 473, 505, 548, 342, 906, 345, 345, 345, 345, 345, + 345, 402, 466, 907, 403, 471, 468, 456, 469, 473, + 474, 477, 477, 477, 477, 477, 479, 481, 908, 553, + 477, 477, 477, 477, 477, 477, 521, 525, 541, 542, + 543, 522, 526, 551, 544, 566, 480, 570, 580, 576, + 567, 571, 581, 552, 618, 623, 477, 477, 477, 477, + + 477, 477, 589, 611, 672, 624, 590, 625, 612, 673, + 618, 870, 647, 706, 734, 696, 648, 761, 707, 735, + 762, 623, 909, 618, 649, 697, 650, 651, 652, 653, + 654, 910, 523, 624, 773, 625, 771, 524, 527, 629, + 772, 786, 802, 834, 835, 803, 568, 45, 45, 45, + 45, 45, 769, 911, 912, 913, 45, 45, 45, 45, + 45, 45, 771, 773, 768, 779, 855, 770, 772, 777, + 858, 871, 780, 914, 856, 859, 872, 901, 769, 915, + 916, 873, 45, 45, 45, 45, 45, 45, 917, 902, + 918, 919, 920, 921, 922, 923, 770, 787, 924, 925, + + 926, 927, 928, 929, 930, 931, 932, 916, 915, 933, + 934, 935, 860, 936, 937, 917, 938, 919, 939, 918, + 940, 941, 942, 874, 943, 944, 945, 946, 947, 948, + 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, + 959, 960, 961, 964, 965, 966, 962, 967, 968, 969, + 963, 970, 971, 972, 973, 974, 975, 976, 977, 978, + 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 993, 995, 996, 994, 997, 998, + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, - 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, - 1331, 1272, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, - 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, - 1351, 1350, 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, 1348, 1350, 1351, - 1352, 1378, 1379, 1380, 1377, 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, 1408, 1409, 1410, 1411, 1407, 1412, 1413, 1414, 1415, - 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, - 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, 1471, 1472, 1473, 1474, 1475, - 1476, 1477, 1478, 1479, 1481, 1480, 1482, 1483, 1484, 1485, - 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, - 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1478, 1504, - - 1477, 1480, 1479, 1481, 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, 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, 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, 1595, 1596, 1597, 1598, 1599, 1600, - - 1601, 1602, 1603, 1605, 1606, 1607, 1608, 1609, 1610, 1611, - 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1593, - 1594, 1621, 1622, 1595, 1623, 1624, 1625, 1626, 1627, 1628, - 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, - 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1604, - 1648, 1649, 1650, 1651, 1652, 1653, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 1654, 1662, 1663, 1664, 1665, 1666, 1667, - 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, - 1678, 1679, 1681, 1682, 1685, 1683, 1680, 1684, 1686, 1687, - 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, - - 1698, 1699, 1700, 1701, 1704, 1703, 1705, 1706, 1707, 1708, - 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, - 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1702, 1700, 1726, - 1699, 1703, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, - 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, - 1745, 1746, 1747, 1748, 1749, 1702, 1750, 1751, 1752, 1753, - 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, - 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1774, 1771, 1775, - 1776, 1772, 1777, 1778, 1773, 1779, 1780, 1781, 1782, 1783, - 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1793, 1792, - - 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, - 1804, 1806, 1807, 1808, 1811, 1809, 1812, 1813, 1814, 1815, - 1816, 1817, 1818, 1790, 1791, 1792, 1810, 1793, 1794, 1819, - 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, - 1830, 1831, 1832, 1834, 1835, 1836, 1837, 1838, 1839, 1840, - 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, - 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, - 1861, 1805, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, - 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1879, 1878, - 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, - - 1890, 1891, 1892, 1833, 1893, 1894, 1895, 1896, 1897, 1898, - 1899, 1900, 1901, 1877, 1902, 1876, 1878, 1879, 1903, 1880, - 1906, 1907, 1908, 1904, 1909, 1910, 1911, 1912, 1913, 1914, - 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, - 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, - 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, - 1945, 1946, 1947, 1948, 1949, 1905, 1950, 1951, 1952, 1953, - 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, - 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, - 1974, 1975, 1976, 1950, 1952, 1977, 1978, 1979, 1980, 1981, - - 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, - 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012, - 2013, 2014, 2010, 2015, 2016, 2017, 2019, 2018, 2020, 2021, - 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, - 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, - 2042, 2043, 2017, 2018, 2044, 2045, 2046, 2047, 2048, 2049, - 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, - 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, - 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, - - 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, - 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2072, 2073, - 2098, 2074, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, - 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, - 2117, 2118, 2119, 2121, 2122, 2120, 2123, 2124, 2125, 2126, - 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, - 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, - 2147, 2148, 2149, 2150, 2124, 2126, 2151, 2152, 2153, 2154, - 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, - 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, - - 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, - 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, - 2195, 2196, 2171, 2197, 2172, 2198, 2199, 2200, 2201, 2202, - 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2211, 2210, 2212, - 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, - 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, - 2233, 2234, 2235, 2209, 2210, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, - 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, - 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2244, - - 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, - 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, - 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, - 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, - 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, - 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, - 2330, 2331, 2332, 2333, 2335, 2334, 2336, 2337, 2338, 2339, - 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, - 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, - 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, - - 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, - 2380, 2381, 2382, 2383, 12, 12, 12, 36, 36, 36, - 80, 99, 80, 101, 101, 101, 117, 117, 117, 191, - 893, 191, 214, 214, 214, 892, 891, 890, 889, 888, - 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, - 877, 876, 875, 874, 873, 872, 866, 865, 864, 863, - 862, 861, 860, 859, 858, 854, 851, 850, 849, 848, - 847, 846, 845, 844, 843, 842, 841, 840, 839, 838, - 837, 836, 835, 834, 833, 830, 829, 828, 827, 826, - 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, - - 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, - 805, 804, 803, 802, 801, 798, 797, 796, 795, 794, - 793, 792, 791, 790, 789, 788, 787, 786, 785, 782, - 781, 780, 779, 778, 775, 773, 772, 766, 765, 764, - 763, 762, 761, 758, 757, 756, 755, 754, 753, 752, - 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, - 739, 738, 737, 736, 735, 734, 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, 703, 702, 701, 700, 699, 698, 697, 696, - - 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, - 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, - 673, 672, 669, 668, 667, 666, 665, 664, 663, 662, - 661, 660, 659, 658, 655, 654, 653, 644, 643, 642, - 641, 640, 639, 638, 637, 636, 633, 632, 631, 630, - 629, 628, 626, 625, 621, 620, 619, 618, 616, 615, - 614, 613, 612, 609, 608, 607, 606, 605, 604, 603, - 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, - 592, 591, 590, 587, 586, 585, 584, 583, 582, 581, - 578, 577, 576, 573, 572, 571, 568, 564, 563, 562, - - 561, 560, 559, 558, 557, 556, 555, 554, 553, 549, - 548, 545, 544, 539, 538, 537, 536, 535, 534, 533, - 532, 531, 530, 529, 528, 527, 519, 518, 517, 516, - 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, - 505, 502, 501, 500, 499, 496, 495, 494, 493, 492, - 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, - 481, 479, 478, 476, 475, 472, 470, 467, 464, 463, - 460, 459, 458, 457, 455, 454, 453, 452, 450, 449, - 448, 445, 444, 443, 442, 441, 440, 439, 438, 437, - 436, 435, 434, 433, 432, 429, 426, 425, 424, 423, - - 422, 421, 420, 417, 416, 413, 412, 411, 410, 409, - 407, 406, 405, 404, 400, 399, 398, 397, 396, 395, - 394, 391, 390, 389, 388, 387, 386, 385, 384, 383, - 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, - 372, 371, 370, 369, 368, 367, 366, 365, 364, 358, - 357, 356, 355, 354, 353, 352, 351, 350, 349, 347, - 346, 215, 343, 341, 338, 335, 332, 325, 324, 323, - 322, 319, 317, 316, 312, 311, 310, 307, 306, 305, - 304, 300, 290, 289, 288, 285, 284, 279, 278, 274, - 273, 272, 271, 268, 267, 266, 263, 262, 261, 258, - - 247, 243, 242, 239, 235, 234, 233, 229, 228, 227, - 223, 222, 221, 218, 215, 209, 203, 202, 199, 198, - 167, 148, 124, 110, 107, 106, 43, 100, 98, 97, - 88, 43, 2384, 11, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384 + 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, + 1029, 1030, 1031, 1032, 1033, 1035, 1036, 1037, 1038, 1034, + 1040, 1041, 1044, 1045, 1046, 1039, 1047, 1051, 1042, 1052, + 1053, 1054, 1043, 1055, 1056, 1057, 1058, 1059, 1060, 1048, + 1061, 1049, 1062, 1063, 1064, 1050, 1065, 1066, 1068, 1069, + 1067, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1092, 1093, 1094, 1069, 1095, 1096, 1097, + 1070, 1098, 1099, 1073, 1100, 1101, 1103, 1104, 1105, 1106, + 1102, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, + + 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1126, 1128, 1129, 1130, 1131, 1127, 1132, 1133, 1134, 1135, + 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, + 1157, 1158, 1159, 1156, 1160, 1161, 1162, 1164, 1165, 1166, + 1167, 1163, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, + 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, + 1186, 1187, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, + 1197, 1198, 1199, 1188, 1200, 1201, 1202, 1203, 1204, 1205, + 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + + 1216, 1217, 1220, 1218, 1221, 1222, 1219, 1223, 1224, 1225, + 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, + 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1216, 1215, 1243, + 1217, 1218, 1219, 1244, 1245, 1246, 1248, 1249, 1247, 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, 1279, 1280, 1281, 1282, + 1277, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 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, 1331, + 1332, 1333, 1334, 1335, 1336, 1337, 1278, 1338, 1339, 1340, + 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, + 1351, 1352, 1353, 1354, 1355, 1357, 1356, 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, 1354, 1356, 1357, 1358, 1383, 1385, 1386, 1387, + 1388, 1389, 1390, 1391, 1384, 1392, 1393, 1394, 1395, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, + + 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1415, 1416, 1417, + 1418, 1414, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 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, 1471, 1472, 1473, 1474, 1475, 1476, + 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, + 1488, 1487, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, + 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, + + 1507, 1508, 1509, 1510, 1485, 1511, 1484, 1487, 1486, 1488, + 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, 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, 1595, 1596, 1597, 1598, 1599, 1600, 1601, + + 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, + 1612, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, + 1623, 1624, 1625, 1626, 1627, 1628, 1601, 1602, 1629, 1630, + 1603, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, + 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1613, 1657, 1658, + 1659, 1660, 1661, 1662, 1664, 1665, 1666, 1667, 1668, 1669, + 1670, 1663, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, + 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, + 1690, 1691, 1694, 1692, 1689, 1693, 1695, 1696, 1697, 1698, + + 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, + 1709, 1710, 1713, 1712, 1714, 1715, 1716, 1717, 1718, 1719, + 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, + 1730, 1731, 1732, 1733, 1734, 1711, 1709, 1735, 1708, 1712, + 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, + 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, + 1756, 1757, 1758, 1711, 1759, 1760, 1761, 1762, 1763, 1764, + 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, + 1775, 1776, 1777, 1778, 1779, 1780, 1784, 1781, 1785, 1786, + 1782, 1787, 1788, 1783, 1789, 1790, 1791, 1792, 1793, 1794, + + 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1803, 1802, 1804, + 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, + 1815, 1817, 1818, 1819, 1820, 1822, 1823, 1824, 1825, 1826, + 1827, 1828, 1800, 1801, 1802, 1821, 1803, 1804, 1829, 1830, + 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, + 1841, 1842, 1843, 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, 1816, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, + 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1890, 1889, + + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, + 1901, 1902, 1903, 1844, 1904, 1905, 1906, 1907, 1908, 1909, + 1910, 1911, 1912, 1888, 1913, 1887, 1889, 1890, 1914, 1891, + 1915, 1918, 1919, 1920, 1921, 1916, 1922, 1923, 1924, 1925, + 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, + 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, + 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, + 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1917, 1963, 1964, + 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, + 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, + + 1985, 1986, 1987, 1962, 1988, 1964, 1989, 1990, 1991, 1992, + 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, + 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, + 2024, 2025, 2026, 2027, 2023, 2028, 2029, 2030, 2032, 2031, + 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, + 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, + 2053, 2054, 2055, 2056, 2030, 2031, 2057, 2058, 2059, 2060, + 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, + 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, + + 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, + 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, + 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, + 2111, 2086, 2087, 2112, 2088, 2113, 2114, 2115, 2116, 2117, + 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, + 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2136, 2137, 2135, + 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, + 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, + 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2139, 2141, + 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, + + 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, + 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, + 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, + 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2187, 2213, 2188, + 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, + 2224, 2225, 2226, 2228, 2227, 2229, 2230, 2231, 2232, 2233, + 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, + 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2226, + 2227, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, + 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, + + 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, + 2282, 2283, 2284, 2285, 2286, 2287, 2262, 2288, 2289, 2290, + 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, + 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, + 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, + 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, + 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, + 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, + 2351, 2352, 2353, 2354, 2355, 2357, 2356, 2358, 2359, 2360, + 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, + + 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, + 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, + 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, + 2401, 2402, 2403, 2404, 2405, 2406, 12, 12, 12, 36, + 36, 36, 80, 99, 80, 101, 101, 101, 117, 117, + 117, 191, 895, 191, 214, 214, 214, 894, 893, 892, + 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, + 881, 880, 879, 878, 877, 876, 875, 869, 868, 867, + 866, 865, 864, 863, 862, 861, 857, 854, 853, 852, + 851, 850, 849, 848, 847, 846, 845, 844, 843, 842, + + 841, 840, 839, 838, 837, 836, 833, 832, 831, 830, + 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, + 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, + 809, 808, 807, 806, 805, 804, 801, 800, 799, 798, + 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, + 785, 784, 783, 782, 781, 778, 776, 775, 774, 768, + 767, 766, 765, 764, 763, 760, 759, 758, 757, 756, + 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, + 745, 744, 741, 740, 739, 738, 737, 736, 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, 705, 704, 703, 702, 701, 700, + 699, 698, 695, 694, 693, 692, 691, 690, 689, 688, + 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, + 677, 676, 675, 674, 671, 670, 669, 668, 667, 666, + 665, 664, 663, 662, 661, 660, 657, 656, 655, 646, + 645, 644, 643, 642, 641, 640, 639, 638, 635, 634, + 633, 632, 631, 630, 628, 627, 626, 622, 621, 620, + 619, 617, 616, 615, 614, 613, 610, 609, 608, 607, + 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, + + 596, 595, 594, 593, 592, 591, 588, 587, 586, 585, + 584, 583, 582, 579, 578, 577, 574, 573, 572, 569, + 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, + 555, 554, 550, 549, 546, 545, 540, 539, 538, 537, + 536, 535, 534, 533, 532, 531, 530, 529, 528, 520, + 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, + 509, 508, 507, 506, 503, 502, 501, 500, 497, 496, + 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, + 485, 484, 483, 482, 478, 476, 475, 472, 470, 467, + 464, 463, 460, 459, 458, 457, 455, 454, 453, 452, + + 450, 449, 448, 445, 444, 443, 442, 441, 440, 439, + 438, 437, 436, 435, 434, 433, 432, 429, 426, 425, + 424, 423, 422, 421, 420, 417, 416, 413, 412, 411, + 410, 409, 407, 406, 405, 404, 400, 399, 398, 397, + 396, 395, 394, 391, 390, 389, 388, 387, 386, 385, + 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, + 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, + 364, 358, 357, 356, 355, 354, 353, 352, 351, 350, + 349, 347, 346, 215, 343, 341, 338, 335, 332, 325, + 324, 323, 322, 319, 317, 316, 312, 311, 310, 307, + + 306, 305, 304, 300, 290, 289, 288, 285, 284, 279, + 278, 274, 273, 272, 271, 268, 267, 266, 263, 262, + 261, 258, 247, 243, 242, 239, 235, 234, 233, 229, + 228, 227, 223, 222, 221, 218, 215, 209, 203, 202, + 199, 198, 167, 148, 124, 110, 107, 106, 43, 100, + 98, 97, 88, 43, 2407, 11, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407 } ; -static const flex_int16_t yy_chk[2911] = +static const flex_int16_t yy_chk[2933] = { 0, 0, 1, 1, 1, 0, 1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 145, 3, 3, 3, 21, 1, 1, 3, 4, - 4, 4, 13, 1, 13, 4, 0, 0, 1, 26, + 4, 4, 13, 1, 13, 4, 747, 0, 1, 26, 5, 5, 5, 27, 1, 31, 1, 44, 6, 6, 6, 109, 1, 1, 7, 7, 7, 37, 7, 37, - 588, 1, 8, 8, 8, 26, 8, 1, 145, 74, + 589, 1, 8, 8, 8, 26, 8, 1, 145, 74, 28, 31, 27, 74, 1, 1, 2, 2, 2, 109, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 9, 9, 9, 28, 33, 2, 2, 6, 10, 10, 10, 42, 2, 42, - 63, 32, 149, 2, 52, 588, 9, 47, 48, 2, + 63, 32, 149, 2, 52, 589, 9, 47, 48, 2, 51, 2, 56, 63, 10, 149, 78, 2, 2, 33, 78, 63, 25, 63, 25, 323, 2, 25, 25, 25, 25, 25, 2, 52, 47, 48, 51, 323, 56, 2, @@ -1896,13 +1906,13 @@ static const flex_int16_t yy_chk[2911] = 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, 503, 17, + 15, 15, 15, 15, 15, 15, 15, 17, 504, 17, 17, 17, 17, 17, 19, 57, 19, 19, 19, 19, - 19, 503, 17, 20, 20, 20, 20, 20, 22, 19, + 19, 504, 17, 20, 20, 20, 20, 20, 22, 19, 22, 22, 22, 22, 22, 55, 20, 71, 69, 71, - 747, 54, 57, 22, 71, 65, 69, 55, 17, 54, - 65, 487, 59, 65, 66, 19, 64, 79, 69, 135, - 135, 55, 20, 487, 66, 91, 66, 54, 92, 22, + 749, 54, 57, 22, 71, 65, 69, 55, 17, 54, + 65, 488, 59, 65, 66, 19, 64, 79, 69, 135, + 135, 55, 20, 488, 66, 91, 66, 54, 92, 22, 45, 59, 45, 45, 45, 45, 55, 54, 45, 59, 45, 45, 64, 58, 79, 59, 45, 45, 59, 45, @@ -1913,285 +1923,288 @@ static const flex_int16_t yy_chk[2911] = 61, 58, 96, 61, 62, 94, 61, 62, 62, 58, 61, 62, 62, 58, 70, 58, 58, 68, 68, 95, 77, 68, 70, 113, 62, 72, 115, 68, 72, 72, - 77, 96, 94, 748, 101, 77, 70, 75, 70, 72, + 77, 96, 94, 750, 101, 77, 70, 75, 70, 72, 70, 75, 72, 105, 75, 116, 95, 110, 76, 76, 70, 75, 75, 104, 108, 75, 75, 75, 76, 81, 81, 81, 81, 81, 89, 89, 89, 89, 89, 105, 76, 116, 81, 82, 101, 82, 82, 82, 82, 82, 110, 108, 104, 111, 76, 292, 76, 103, 82, 76, - 76, 143, 749, 292, 103, 83, 143, 83, 81, 76, + 76, 143, 751, 292, 103, 83, 143, 83, 81, 76, 83, 83, 83, 83, 83, 84, 76, 84, 84, 84, 84, 84, 111, 114, 82, 85, 85, 85, 85, 85, - 84, 90, 90, 90, 90, 90, 750, 103, 85, 129, + 84, 90, 90, 90, 90, 90, 752, 103, 85, 129, 121, 103, 125, 158, 138, 103, 138, 153, 129, 129, 141, 125, 114, 103, 159, 125, 84, 103, 121, 103, 103, 133, 133, 138, 85, 119, 141, 165, 153, 121, 165, 133, 158, 119, 119, 119, 119, 119, 140, 169, - 176, 752, 119, 119, 119, 119, 119, 119, 180, 142, + 176, 754, 119, 119, 119, 119, 119, 119, 180, 142, 162, 140, 142, 171, 176, 140, 142, 171, 181, 193, 184, 171, 192, 159, 181, 162, 162, 162, 119, 119, 119, 119, 119, 119, 194, 195, 180, 169, 169, 169, - 186, 196, 753, 197, 200, 201, 193, 204, 169, 184, + 186, 196, 755, 197, 200, 201, 193, 204, 169, 184, 169, 192, 205, 169, 186, 169, 169, 208, 209, 211, 194, 213, 220, 231, 195, 232, 231, 281, 196, 197, - 200, 201, 275, 232, 754, 270, 204, 281, 262, 232, + 200, 201, 275, 232, 756, 270, 204, 281, 262, 232, 205, 284, 313, 208, 209, 211, 326, 313, 220, 213, 217, 217, 217, 217, 217, 262, 284, 318, 275, 217, 217, 217, 217, 217, 217, 294, 329, 333, 294, 336, - 339, 334, 326, 340, 365, 370, 404, 348, 408, 365, - 423, 370, 404, 318, 423, 217, 217, 217, 217, 217, - 217, 270, 329, 427, 270, 336, 333, 318, 334, 339, - 340, 345, 345, 345, 345, 345, 348, 408, 755, 474, + 339, 334, 326, 340, 365, 370, 404, 427, 348, 365, + 408, 370, 404, 318, 757, 217, 217, 217, 217, 217, + 217, 270, 329, 758, 270, 336, 333, 318, 334, 339, + 340, 345, 345, 345, 345, 345, 347, 348, 759, 408, 345, 345, 345, 345, 345, 345, 386, 387, 401, 401, - 401, 386, 387, 407, 401, 421, 468, 431, 439, 460, - 421, 431, 439, 407, 460, 474, 345, 345, 345, 345, - - 345, 345, 480, 542, 517, 427, 476, 499, 476, 517, - 624, 499, 552, 542, 622, 468, 623, 552, 637, 499, - 720, 499, 499, 499, 499, 499, 611, 618, 581, 611, - 627, 480, 386, 581, 476, 627, 476, 386, 387, 624, - 622, 756, 618, 757, 623, 631, 421, 477, 477, 477, - 477, 477, 631, 618, 686, 686, 477, 477, 477, 477, - 477, 477, 652, 709, 707, 652, 751, 758, 709, 759, - 721, 618, 707, 760, 637, 721, 761, 763, 751, 764, - 720, 767, 477, 477, 477, 477, 477, 477, 768, 769, - 770, 772, 771, 773, 774, 775, 776, 777, 778, 779, - - 780, 781, 782, 783, 784, 709, 785, 786, 787, 787, - 767, 787, 788, 789, 790, 768, 769, 721, 771, 770, - 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, + 401, 386, 387, 407, 401, 421, 347, 423, 431, 427, + 421, 423, 431, 407, 468, 474, 345, 345, 345, 345, + + 345, 345, 439, 460, 518, 476, 439, 476, 460, 518, + 481, 722, 500, 553, 582, 543, 500, 612, 553, 582, + 612, 474, 760, 468, 500, 543, 500, 500, 500, 500, + 500, 761, 386, 476, 625, 476, 623, 386, 387, 481, + 624, 639, 654, 688, 688, 654, 421, 477, 477, 477, + 477, 477, 619, 762, 763, 765, 477, 477, 477, 477, + 477, 477, 623, 625, 629, 633, 709, 619, 624, 629, + 711, 722, 633, 766, 709, 711, 723, 753, 619, 769, + 770, 723, 477, 477, 477, 477, 477, 477, 771, 753, + 772, 773, 774, 775, 776, 777, 619, 639, 778, 779, + + 780, 781, 782, 783, 784, 785, 786, 770, 769, 787, + 788, 789, 711, 790, 790, 771, 790, 773, 791, 772, + 792, 793, 794, 723, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 810, 814, 815, 816, 810, 817, 818, - 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, + 811, 812, 813, 814, 815, 816, 813, 817, 818, 819, + 813, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, - 839, 840, 841, 842, 840, 843, 845, 846, 847, 848, - 849, 850, 851, 852, 853, 854, 856, 857, 858, 859, - 860, 861, 862, 863, 864, 865, 866, 868, 870, 871, - - 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, - 882, 883, 884, 885, 886, 887, 883, 888, 889, 890, - 891, 892, 887, 893, 894, 889, 895, 896, 897, 889, - 899, 900, 901, 902, 903, 904, 893, 905, 893, 906, - 907, 908, 893, 909, 910, 911, 912, 910, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 912, 940, 941, 942, 913, 943, 944, - 916, 945, 946, 947, 948, 949, 945, 950, 951, 952, - 953, 954, 956, 957, 958, 959, 960, 961, 962, 963, - - 964, 965, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 971, 976, 977, 978, 979, 980, 981, 982, 983, - 986, 987, 988, 989, 990, 991, 992, 994, 995, 996, - 997, 998, 999, 1001, 1002, 1003, 1004, 1005, 1006, 1003, - 1007, 1008, 1009, 1011, 1012, 1015, 1016, 1009, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1037, - 1049, 1050, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, - 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1070, 1068, - - 1071, 1072, 1069, 1073, 1074, 1075, 1076, 1078, 1079, 1080, - 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1066, 1065, 1094, 1067, 1068, 1069, 1095, - 1097, 1098, 1099, 1097, 1100, 1101, 1102, 1103, 1104, 1105, + 839, 840, 841, 842, 843, 844, 845, 843, 846, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 859, + 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, + + 871, 873, 874, 875, 876, 877, 878, 879, 880, 881, + 882, 883, 884, 885, 886, 887, 888, 889, 890, 886, + 891, 892, 893, 894, 895, 890, 896, 897, 892, 898, + 899, 900, 892, 902, 903, 904, 905, 906, 907, 896, + 908, 896, 909, 910, 911, 896, 912, 913, 914, 915, + 913, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 925, 926, 927, 928, 929, 930, 931, 932, 935, 936, + 937, 938, 939, 940, 941, 942, 915, 943, 944, 945, + 916, 946, 947, 919, 948, 949, 950, 951, 952, 953, + 949, 954, 955, 956, 957, 958, 960, 961, 962, 963, + + 964, 965, 966, 967, 968, 969, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 975, 980, 981, 982, 983, + 984, 985, 986, 987, 990, 991, 992, 993, 994, 995, + 996, 998, 999, 1000, 1001, 1002, 1003, 1005, 1006, 1007, + 1008, 1009, 1010, 1007, 1011, 1012, 1013, 1015, 1016, 1019, + 1020, 1013, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, + 1029, 1030, 1031, 1032, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1041, 1053, 1054, 1056, 1057, 1058, 1059, + 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, + + 1070, 1071, 1074, 1072, 1075, 1076, 1073, 1077, 1078, 1079, + 1080, 1081, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1070, 1069, 1098, + 1071, 1072, 1073, 1099, 1100, 1102, 1103, 1104, 1102, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1122, 1123, 1124, 1125, 1126, - 1127, 1128, 1129, 1131, 1132, 1127, 1133, 1134, 1135, 1136, - 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, + 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1136, 1137, + 1132, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, - 1158, 1159, 1161, 1162, 1164, 1165, 1166, 1167, 1169, 1170, + 1157, 1158, 1159, 1160, 1161, 1163, 1164, 1166, 1167, 1169, - 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, - 1181, 1182, 1183, 1184, 1185, 1186, 1188, 1189, 1190, 1191, - 1192, 1127, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, + 1170, 1171, 1172, 1174, 1175, 1176, 1177, 1178, 1179, 1180, + 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, + 1191, 1193, 1194, 1195, 1196, 1197, 1132, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 1213, 1212, 1214, 1215, 1217, 1218, 1219, 1220, 1221, 1223, - 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1210, 1212, 1213, - 1214, 1241, 1242, 1243, 1240, 1244, 1245, 1246, 1248, 1249, - 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, - 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1271, - - 1272, 1273, 1274, 1275, 1276, 1272, 1277, 1278, 1279, 1280, - 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, + 1212, 1213, 1214, 1215, 1216, 1218, 1217, 1219, 1220, 1222, + 1223, 1224, 1225, 1226, 1227, 1229, 1230, 1231, 1232, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1245, 1215, 1217, 1218, 1219, 1246, 1247, 1248, 1249, + 1250, 1251, 1252, 1254, 1246, 1255, 1257, 1258, 1259, 1260, + 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, + + 1271, 1272, 1273, 1274, 1275, 1277, 1278, 1279, 1280, 1281, + 1282, 1278, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, - 1301, 1302, 1303, 1304, 1305, 1306, 1308, 1309, 1310, 1311, - 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1320, 1321, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, - 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1344, 1346, - 1347, 1348, 1349, 1350, 1352, 1351, 1353, 1354, 1355, 1356, - 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, - 1367, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1349, 1376, - - 1348, 1351, 1350, 1352, 1377, 1378, 1379, 1380, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1405, - 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, - 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1425, 1427, 1428, - 1429, 1431, 1432, 1433, 1435, 1436, 1437, 1438, 1441, 1442, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, - 1453, 1454, 1455, 1457, 1458, 1459, 1460, 1461, 1462, 1463, - 1464, 1465, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, - 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1484, 1485, 1486, - - 1487, 1488, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, - 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1478, - 1479, 1507, 1508, 1480, 1509, 1510, 1511, 1512, 1513, 1514, - 1515, 1516, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, - 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1490, - 1535, 1536, 1537, 1539, 1540, 1541, 1542, 1543, 1544, 1545, - 1546, 1547, 1548, 1541, 1549, 1550, 1552, 1553, 1554, 1555, - 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, - 1567, 1568, 1569, 1570, 1574, 1572, 1568, 1572, 1575, 1576, - 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, - - 1591, 1592, 1593, 1594, 1597, 1595, 1598, 1599, 1600, 1601, - 1602, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, - 1613, 1614, 1615, 1616, 1617, 1620, 1621, 1594, 1593, 1622, - 1592, 1595, 1623, 1624, 1625, 1627, 1628, 1630, 1631, 1632, - 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1644, - 1646, 1648, 1649, 1651, 1652, 1594, 1653, 1654, 1655, 1656, - 1657, 1658, 1659, 1660, 1662, 1663, 1664, 1665, 1666, 1667, - 1668, 1670, 1674, 1675, 1677, 1678, 1680, 1681, 1680, 1682, - 1683, 1680, 1684, 1685, 1680, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1693, 1695, 1697, 1698, 1699, 1700, 1702, 1701, - - 1703, 1704, 1705, 1707, 1708, 1710, 1712, 1713, 1714, 1715, - 1716, 1717, 1718, 1719, 1721, 1720, 1722, 1723, 1724, 1725, - 1726, 1727, 1729, 1699, 1700, 1701, 1720, 1702, 1703, 1730, - 1731, 1732, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, - 1742, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, - 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, - 1761, 1762, 1763, 1765, 1766, 1767, 1768, 1769, 1770, 1771, - 1772, 1716, 1773, 1774, 1776, 1777, 1778, 1779, 1780, 1781, - 1782, 1783, 1784, 1786, 1787, 1788, 1790, 1791, 1793, 1792, - 1794, 1795, 1797, 1798, 1801, 1802, 1803, 1805, 1807, 1808, - - 1809, 1810, 1811, 1743, 1812, 1813, 1814, 1815, 1816, 1817, - 1818, 1819, 1820, 1791, 1822, 1790, 1792, 1793, 1823, 1794, - 1824, 1825, 1826, 1823, 1827, 1828, 1829, 1830, 1831, 1833, - 1834, 1835, 1837, 1838, 1840, 1841, 1842, 1844, 1845, 1846, - 1847, 1848, 1849, 1852, 1853, 1854, 1855, 1856, 1857, 1858, - 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1869, - 1870, 1871, 1872, 1873, 1874, 1823, 1876, 1877, 1878, 1879, - 1880, 1881, 1883, 1884, 1885, 1888, 1889, 1890, 1891, 1892, - 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, - 1904, 1905, 1906, 1876, 1878, 1907, 1908, 1909, 1911, 1912, - - 1913, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, - 1924, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, - 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1944, 1946, - 1947, 1948, 1942, 1949, 1950, 1952, 1955, 1953, 1956, 1958, - 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1967, 1968, 1969, - 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, - 1980, 1981, 1952, 1953, 1982, 1983, 1984, 1985, 1986, 1987, - 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, - 2012, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, - - 2024, 2025, 2026, 2027, 2029, 2030, 2031, 2032, 2033, 2034, - 2035, 2036, 2038, 2039, 2040, 2041, 2042, 2043, 2016, 2017, - 2046, 2018, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, - 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, - 2066, 2067, 2068, 2069, 2070, 2068, 2071, 2072, 2073, 2074, - 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, - 2085, 2086, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, - 2096, 2097, 2098, 2099, 2072, 2074, 2100, 2102, 2104, 2106, - 2107, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, - 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2126, 2127, 2129, - - 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, - 2140, 2141, 2143, 2144, 2145, 2147, 2148, 2149, 2150, 2151, - 2153, 2154, 2124, 2156, 2126, 2158, 2159, 2161, 2162, 2163, - 2164, 2165, 2166, 2167, 2168, 2170, 2171, 2173, 2172, 2174, - 2175, 2176, 2177, 2178, 2179, 2180, 2182, 2183, 2184, 2185, - 2186, 2187, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, - 2197, 2198, 2199, 2171, 2172, 2200, 2201, 2202, 2204, 2205, - 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2215, 2216, - 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, - 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2209, - - 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2246, - 2248, 2249, 2250, 2252, 2253, 2254, 2255, 2257, 2258, 2259, - 2260, 2261, 2266, 2267, 2271, 2272, 2273, 2274, 2275, 2276, - 2277, 2279, 2280, 2281, 2283, 2284, 2285, 2286, 2287, 2288, - 2289, 2290, 2291, 2294, 2295, 2296, 2297, 2298, 2299, 2301, - 2302, 2303, 2305, 2307, 2308, 2309, 2310, 2311, 2312, 2313, - 2315, 2316, 2317, 2318, 2319, 2318, 2320, 2321, 2322, 2323, - 2324, 2326, 2327, 2330, 2331, 2332, 2333, 2334, 2335, 2336, - 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, - 2347, 2348, 2349, 2351, 2352, 2354, 2355, 2358, 2359, 2360, - - 2361, 2362, 2364, 2365, 2367, 2369, 2372, 2373, 2374, 2375, - 2376, 2377, 2378, 2380, 2385, 2385, 2385, 2386, 2386, 2386, - 2387, 2388, 2387, 2389, 2389, 2389, 2390, 2390, 2390, 2391, - 745, 2391, 2392, 2392, 2392, 744, 743, 742, 741, 740, - 739, 738, 737, 736, 735, 734, 733, 731, 730, 729, - 728, 726, 725, 724, 723, 722, 718, 717, 716, 715, - 714, 713, 712, 711, 710, 708, 706, 705, 703, 702, - 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, - 691, 690, 689, 688, 687, 685, 684, 683, 682, 681, - 680, 677, 676, 675, 674, 673, 672, 671, 669, 668, - - 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, - 657, 656, 655, 654, 653, 651, 650, 649, 648, 647, - 646, 645, 644, 643, 642, 641, 640, 639, 638, 636, - 635, 634, 633, 632, 629, 626, 625, 617, 616, 615, - 614, 613, 612, 609, 606, 604, 602, 601, 600, 599, - 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, - 587, 586, 585, 584, 583, 582, 580, 579, 578, 577, - 576, 575, 574, 573, 572, 571, 570, 569, 567, 566, - 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, - 554, 553, 551, 550, 548, 547, 546, 545, 544, 543, - - 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, - 531, 530, 529, 528, 527, 526, 525, 523, 522, 521, - 519, 518, 516, 515, 514, 513, 512, 511, 510, 509, - 508, 506, 505, 504, 502, 501, 500, 498, 496, 495, - 494, 493, 492, 491, 489, 488, 486, 485, 484, 483, - 482, 481, 479, 478, 473, 471, 470, 469, 467, 464, - 463, 462, 461, 459, 458, 457, 456, 455, 454, 453, - 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, - 442, 441, 440, 438, 437, 436, 435, 434, 433, 432, - 430, 429, 428, 426, 425, 424, 422, 420, 419, 418, - - 417, 416, 415, 414, 413, 412, 411, 410, 409, 406, - 405, 403, 402, 400, 399, 398, 397, 396, 395, 394, - 393, 392, 391, 390, 389, 388, 385, 384, 383, 382, - 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, - 371, 369, 368, 367, 366, 364, 363, 362, 361, 360, - 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, - 349, 347, 346, 344, 342, 337, 335, 332, 325, 324, - 322, 321, 320, 319, 317, 316, 315, 314, 312, 311, - 310, 308, 307, 306, 305, 304, 303, 302, 301, 300, - 299, 298, 297, 296, 295, 293, 291, 290, 289, 288, - - 287, 286, 285, 283, 282, 280, 279, 278, 277, 276, - 274, 273, 272, 271, 269, 268, 267, 266, 265, 264, - 263, 261, 260, 258, 257, 256, 255, 254, 253, 252, - 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, - 241, 240, 239, 238, 237, 236, 235, 234, 233, 230, - 229, 228, 227, 226, 225, 224, 223, 222, 221, 219, - 218, 214, 212, 210, 207, 202, 198, 190, 189, 188, - 187, 185, 183, 182, 179, 178, 177, 175, 174, 173, - 172, 170, 168, 167, 166, 164, 163, 161, 160, 157, - 156, 155, 154, 152, 151, 150, 148, 147, 146, 144, - - 139, 137, 136, 134, 132, 131, 130, 128, 127, 126, - 124, 123, 122, 120, 117, 112, 107, 106, 99, 98, - 73, 67, 60, 53, 50, 49, 43, 41, 39, 38, - 24, 14, 11, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, - - 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384 + 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, + 1311, 1312, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, + 1322, 1323, 1324, 1326, 1327, 1330, 1331, 1332, 1333, 1334, + 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1345, 1346, 1347, 1348, 1350, 1352, 1353, 1354, 1355, 1356, + 1358, 1357, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, + 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1376, 1377, + + 1378, 1379, 1380, 1381, 1355, 1382, 1354, 1357, 1356, 1358, + 1383, 1384, 1385, 1386, 1387, 1389, 1390, 1391, 1392, 1393, + 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, + 1404, 1405, 1406, 1407, 1408, 1409, 1412, 1414, 1415, 1416, + 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, + 1427, 1428, 1429, 1430, 1432, 1434, 1435, 1436, 1438, 1439, + 1440, 1442, 1443, 1444, 1445, 1448, 1449, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, + 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1475, + 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, + + 1486, 1487, 1488, 1489, 1490, 1492, 1493, 1494, 1495, 1496, + 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, + 1508, 1509, 1510, 1511, 1512, 1513, 1485, 1486, 1514, 1515, + 1487, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, + 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, + 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1498, 1543, 1544, + 1545, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, + 1556, 1549, 1557, 1558, 1560, 1561, 1562, 1563, 1564, 1565, + 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575, 1576, + 1577, 1578, 1582, 1580, 1576, 1580, 1583, 1584, 1588, 1589, + + 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1599, 1600, + 1601, 1602, 1605, 1603, 1606, 1607, 1608, 1609, 1610, 1611, + 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, + 1623, 1624, 1625, 1626, 1629, 1602, 1601, 1630, 1600, 1603, + 1631, 1632, 1633, 1634, 1636, 1637, 1639, 1640, 1641, 1642, + 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1653, 1655, + 1657, 1658, 1660, 1602, 1661, 1662, 1663, 1664, 1665, 1666, + 1667, 1668, 1669, 1671, 1672, 1673, 1674, 1675, 1676, 1677, + 1679, 1683, 1684, 1686, 1687, 1689, 1690, 1689, 1691, 1692, + 1689, 1693, 1694, 1689, 1695, 1696, 1697, 1698, 1699, 1700, + + 1701, 1702, 1704, 1706, 1707, 1708, 1709, 1711, 1710, 1712, + 1713, 1714, 1715, 1717, 1718, 1720, 1722, 1723, 1724, 1725, + 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, + 1736, 1737, 1708, 1709, 1710, 1730, 1711, 1712, 1739, 1740, + 1741, 1742, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, + 1752, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, + 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, + 1771, 1772, 1773, 1775, 1776, 1777, 1778, 1779, 1780, 1781, + 1782, 1726, 1783, 1784, 1786, 1787, 1788, 1789, 1790, 1791, + 1792, 1793, 1794, 1796, 1797, 1798, 1800, 1801, 1803, 1802, + + 1804, 1805, 1806, 1808, 1809, 1812, 1813, 1814, 1816, 1818, + 1819, 1820, 1821, 1753, 1822, 1823, 1824, 1825, 1826, 1827, + 1828, 1829, 1830, 1801, 1831, 1800, 1802, 1803, 1833, 1804, + 1834, 1835, 1836, 1837, 1838, 1834, 1839, 1840, 1841, 1842, + 1844, 1845, 1846, 1848, 1849, 1851, 1852, 1853, 1855, 1856, + 1857, 1858, 1859, 1860, 1863, 1864, 1865, 1866, 1867, 1868, + 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, + 1880, 1881, 1882, 1883, 1884, 1885, 1887, 1834, 1888, 1889, + 1890, 1891, 1892, 1893, 1895, 1896, 1897, 1900, 1901, 1902, + 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, + + 1913, 1914, 1916, 1887, 1917, 1889, 1918, 1919, 1920, 1921, + 1923, 1924, 1925, 1927, 1928, 1929, 1930, 1931, 1932, 1933, + 1934, 1935, 1936, 1938, 1939, 1940, 1941, 1942, 1943, 1944, + 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, + 1956, 1958, 1959, 1960, 1954, 1961, 1962, 1964, 1967, 1965, + 1968, 1969, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, + 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, + 1990, 1991, 1992, 1993, 1964, 1965, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, + 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020, + + 2022, 2023, 2024, 2025, 2028, 2029, 2030, 2031, 2032, 2033, + 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2043, 2044, + 2045, 2046, 2047, 2048, 2049, 2050, 2052, 2053, 2054, 2055, + 2056, 2029, 2030, 2057, 2031, 2060, 2061, 2062, 2063, 2064, + 2065, 2066, 2067, 2068, 2070, 2071, 2072, 2073, 2074, 2075, + 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2082, + 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, + 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2103, 2104, 2105, + 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2086, 2088, + 2114, 2115, 2117, 2119, 2121, 2122, 2124, 2125, 2126, 2127, + + 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, + 2138, 2139, 2141, 2142, 2143, 2145, 2146, 2147, 2148, 2149, + 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2159, 2160, + 2161, 2163, 2164, 2165, 2166, 2167, 2169, 2139, 2170, 2141, + 2172, 2174, 2175, 2177, 2178, 2179, 2180, 2181, 2182, 2183, + 2184, 2186, 2187, 2189, 2188, 2190, 2191, 2192, 2193, 2194, + 2195, 2196, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2206, + 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2187, + 2188, 2216, 2217, 2218, 2219, 2221, 2222, 2223, 2224, 2225, + 2226, 2227, 2228, 2229, 2230, 2231, 2233, 2234, 2235, 2236, + + 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, + 2247, 2248, 2249, 2250, 2251, 2252, 2226, 2253, 2254, 2255, + 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2264, 2265, 2267, + 2268, 2269, 2271, 2272, 2273, 2274, 2276, 2277, 2278, 2279, + 2280, 2285, 2286, 2290, 2291, 2292, 2293, 2294, 2295, 2296, + 2298, 2299, 2300, 2301, 2303, 2304, 2305, 2306, 2307, 2308, + 2309, 2310, 2311, 2314, 2315, 2316, 2317, 2318, 2319, 2321, + 2322, 2323, 2324, 2326, 2328, 2329, 2330, 2331, 2332, 2333, + 2334, 2336, 2337, 2338, 2339, 2340, 2339, 2341, 2342, 2343, + 2344, 2345, 2346, 2348, 2349, 2352, 2353, 2354, 2355, 2356, + + 2357, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, + 2368, 2369, 2370, 2371, 2372, 2374, 2375, 2377, 2378, 2381, + 2382, 2383, 2384, 2385, 2387, 2388, 2390, 2392, 2395, 2396, + 2397, 2398, 2399, 2400, 2401, 2403, 2408, 2408, 2408, 2409, + 2409, 2409, 2410, 2411, 2410, 2412, 2412, 2412, 2413, 2413, + 2413, 2414, 746, 2414, 2415, 2415, 2415, 745, 744, 743, + 742, 741, 740, 739, 738, 737, 736, 735, 733, 732, + 731, 730, 728, 727, 726, 725, 724, 720, 719, 718, + 717, 716, 715, 714, 713, 712, 710, 708, 707, 705, + 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, + + 694, 693, 692, 691, 690, 689, 687, 686, 685, 684, + 683, 682, 679, 678, 677, 676, 675, 674, 673, 671, + 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, + 660, 659, 658, 657, 656, 655, 653, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, + 638, 637, 636, 635, 634, 631, 628, 627, 626, 618, + 617, 616, 615, 614, 613, 610, 607, 605, 603, 602, + 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, + 591, 590, 588, 587, 586, 585, 584, 583, 581, 580, + 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, + + 568, 567, 565, 564, 563, 562, 561, 560, 559, 558, + 557, 556, 555, 554, 552, 551, 549, 548, 547, 546, + 545, 544, 542, 541, 540, 539, 538, 537, 536, 535, + 534, 533, 532, 531, 530, 529, 528, 527, 526, 524, + 523, 522, 520, 519, 517, 516, 515, 514, 513, 512, + 511, 510, 509, 507, 506, 505, 503, 502, 501, 499, + 497, 496, 495, 494, 493, 492, 490, 489, 487, 486, + 485, 484, 483, 482, 480, 479, 478, 473, 471, 470, + 469, 467, 464, 463, 462, 461, 459, 458, 457, 456, + 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, + + 445, 444, 443, 442, 441, 440, 438, 437, 436, 435, + 434, 433, 432, 430, 429, 428, 426, 425, 424, 422, + 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, + 410, 409, 406, 405, 403, 402, 400, 399, 398, 397, + 396, 395, 394, 393, 392, 391, 390, 389, 388, 385, + 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, + 374, 373, 372, 371, 369, 368, 367, 366, 364, 363, + 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, + 352, 351, 350, 349, 346, 344, 342, 337, 335, 332, + 325, 324, 322, 321, 320, 319, 317, 316, 315, 314, + + 312, 311, 310, 308, 307, 306, 305, 304, 303, 302, + 301, 300, 299, 298, 297, 296, 295, 293, 291, 290, + 289, 288, 287, 286, 285, 283, 282, 280, 279, 278, + 277, 276, 274, 273, 272, 271, 269, 268, 267, 266, + 265, 264, 263, 261, 260, 258, 257, 256, 255, 254, + 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, + 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, + 233, 230, 229, 228, 227, 226, 225, 224, 223, 222, + 221, 219, 218, 214, 212, 210, 207, 202, 198, 190, + 189, 188, 187, 185, 183, 182, 179, 178, 177, 175, + + 174, 173, 172, 170, 168, 167, 166, 164, 163, 161, + 160, 157, 156, 155, 154, 152, 151, 150, 148, 147, + 146, 144, 139, 137, 136, 134, 132, 131, 130, 128, + 127, 126, 124, 123, 122, 120, 117, 112, 107, 106, + 99, 98, 73, 67, 60, 53, 50, 49, 43, 41, + 39, 38, 24, 14, 11, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407 } ; static yy_state_type yy_last_accepting_state; @@ -2200,7 +2213,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[252] = +static const flex_int16_t yy_rule_linenum[253] = { 0, 149, 151, 153, 158, 159, 164, 165, 166, 178, 180, 185, 191, 200, 209, 218, 227, 236, 245, 254, 263, @@ -2227,9 +2240,9 @@ static const flex_int16_t yy_rule_linenum[252] = 2120, 2129, 2138, 2147, 2156, 2165, 2174, 2183, 2192, 2201, 2210, 2219, 2228, 2237, 2246, 2255, 2264, 2273, 2282, 2291, 2300, 2309, 2318, 2327, 2336, 2345, 2354, 2363, 2372, 2381, - 2390, 2399, 2408, 2509, 2525, 2574, 2582, 2597, 2598, 2599, - 2600, 2601, 2602, 2604, 2622, 2635, 2640, 2644, 2646, 2648, - 2650 + 2390, 2399, 2408, 2417, 2518, 2534, 2583, 2591, 2606, 2607, + 2608, 2609, 2610, 2611, 2613, 2631, 2644, 2649, 2653, 2655, + 2657, 2659 } ; /* The intent behind this definition is that it'll catch @@ -2284,7 +2297,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 2287 "dhcp6_lexer.cc" +#line 2301 "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 @@ -2310,8 +2323,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 2313 "dhcp6_lexer.cc" -#line 2314 "dhcp6_lexer.cc" +#line 2327 "dhcp6_lexer.cc" +#line 2328 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2641,7 +2654,7 @@ YY_DECL } -#line 2644 "dhcp6_lexer.cc" +#line 2658 "dhcp6_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2670,13 +2683,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 >= 2385 ) + if ( yy_current_state >= 2408 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 2384 ); + while ( yy_current_state != 2407 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2695,13 +2708,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 < 252 ) + else if ( yy_act < 253 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 252 ) + else if ( yy_act == 253 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 253 ) + else if ( yy_act == 254 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -5667,15 +5680,27 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: - return isc::dhcp::Dhcp6Parser::make_COMPATIBILITY(driver.loc_); + return isc::dhcp::Dhcp6Parser::make_ALLOW_ADDRESS_REGISTRATION(driver.loc_); default: - return isc::dhcp::Dhcp6Parser::make_STRING("compatibility", driver.loc_); + return isc::dhcp::Dhcp6Parser::make_STRING("allow-address-registration", driver.loc_); } } YY_BREAK case 232: YY_RULE_SETUP #line 2399 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: + return isc::dhcp::Dhcp6Parser::make_COMPATIBILITY(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("compatibility", driver.loc_); + } +} + YY_BREAK +case 233: +YY_RULE_SETUP +#line 2408 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::COMPATIBILITY: @@ -5685,9 +5710,9 @@ YY_RULE_SETUP } } YY_BREAK -case 233: +case 234: YY_RULE_SETUP -#line 2408 "dhcp6_lexer.ll" +#line 2417 "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. @@ -5789,10 +5814,10 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 234: -/* rule 234 can match eol */ +case 235: +/* rule 235 can match eol */ YY_RULE_SETUP -#line 2509 "dhcp6_lexer.ll" +#line 2518 "dhcp6_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5809,10 +5834,10 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 235: -/* rule 235 can match eol */ +case 236: +/* rule 236 can match eol */ YY_RULE_SETUP -#line 2525 "dhcp6_lexer.ll" +#line 2534 "dhcp6_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5862,9 +5887,9 @@ YY_RULE_SETUP pos); } YY_BREAK -case 236: +case 237: YY_RULE_SETUP -#line 2574 "dhcp6_lexer.ll" +#line 2583 "dhcp6_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5873,9 +5898,9 @@ YY_RULE_SETUP raw.size() + 1); } YY_BREAK -case 237: +case 238: YY_RULE_SETUP -#line 2582 "dhcp6_lexer.ll" +#line 2591 "dhcp6_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5891,39 +5916,39 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 238: +case 239: YY_RULE_SETUP -#line 2597 "dhcp6_lexer.ll" +#line 2606 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 239: +case 240: YY_RULE_SETUP -#line 2598 "dhcp6_lexer.ll" +#line 2607 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 240: +case 241: YY_RULE_SETUP -#line 2599 "dhcp6_lexer.ll" +#line 2608 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 241: +case 242: YY_RULE_SETUP -#line 2600 "dhcp6_lexer.ll" +#line 2609 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 242: +case 243: YY_RULE_SETUP -#line 2601 "dhcp6_lexer.ll" +#line 2610 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); } YY_BREAK -case 243: +case 244: YY_RULE_SETUP -#line 2602 "dhcp6_lexer.ll" +#line 2611 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } YY_BREAK -case 244: +case 245: YY_RULE_SETUP -#line 2604 "dhcp6_lexer.ll" +#line 2613 "dhcp6_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5942,9 +5967,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 245: +case 246: YY_RULE_SETUP -#line 2622 "dhcp6_lexer.ll" +#line 2631 "dhcp6_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5958,43 +5983,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 246: +case 247: YY_RULE_SETUP -#line 2635 "dhcp6_lexer.ll" +#line 2644 "dhcp6_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 247: +case 248: YY_RULE_SETUP -#line 2640 "dhcp6_lexer.ll" +#line 2649 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 248: +case 249: YY_RULE_SETUP -#line 2644 "dhcp6_lexer.ll" +#line 2653 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 249: +case 250: YY_RULE_SETUP -#line 2646 "dhcp6_lexer.ll" +#line 2655 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 250: +case 251: YY_RULE_SETUP -#line 2648 "dhcp6_lexer.ll" +#line 2657 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 251: +case 252: YY_RULE_SETUP -#line 2650 "dhcp6_lexer.ll" +#line 2659 "dhcp6_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2652 "dhcp6_lexer.ll" +#line 2661 "dhcp6_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp6Parser::make_END(driver.loc_); @@ -6018,12 +6043,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 252: +case 253: YY_RULE_SETUP -#line 2675 "dhcp6_lexer.ll" +#line 2684 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 6026 "dhcp6_lexer.cc" +#line 6052 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -6342,7 +6367,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 >= 2385 ) + if ( yy_current_state >= 2408 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6375,11 +6400,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 >= 2385 ) + if ( yy_current_state >= 2408 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 2384); + yy_is_jam = (yy_current_state == 2407); return yy_is_jam ? 0 : yy_current_state; } @@ -7128,7 +7153,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2675 "dhcp6_lexer.ll" +#line 2684 "dhcp6_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index f663bab780..65cc7749bf 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -2386,6 +2386,15 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"allow-address-registration\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: + return isc::dhcp::Dhcp6Parser::make_ALLOW_ADDRESS_REGISTRATION(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("allow-address-registration", driver.loc_); + } +} + \"compatibility\" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: diff --git a/src/bin/dhcp6/dhcp6_messages.cc b/src/bin/dhcp6/dhcp6_messages.cc index de1f25df6f..d07c8c5cd2 100644 --- a/src/bin/dhcp6/dhcp6_messages.cc +++ b/src/bin/dhcp6/dhcp6_messages.cc @@ -12,6 +12,7 @@ extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_EVAL_ERROR = "DHCP6_ADDI extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_EVAL_RESULT = "DHCP6_ADDITIONAL_CLASS_EVAL_RESULT"; extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_NO_TEST = "DHCP6_ADDITIONAL_CLASS_NO_TEST"; extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_UNDEFINED = "DHCP6_ADDITIONAL_CLASS_UNDEFINED"; +extern const isc::log::MessageID DHCP6_ADDR6_REGISTER_DISABLED_DROP = "DHCP6_ADDR6_REGISTER_DISABLED_DROP"; extern const isc::log::MessageID DHCP6_ADDR_REG_INFORM_CLIENT_CHANGE = "DHCP6_ADDR_REG_INFORM_CLIENT_CHANGE"; extern const isc::log::MessageID DHCP6_ADDR_REG_INFORM_FAIL = "DHCP6_ADDR_REG_INFORM_FAIL"; extern const isc::log::MessageID DHCP6_ADD_GLOBAL_STATUS_CODE = "DHCP6_ADD_GLOBAL_STATUS_CODE"; @@ -190,6 +191,7 @@ const char* values[] = { "DHCP6_ADDITIONAL_CLASS_EVAL_RESULT", "%1: Expression '%2' evaluated to %3", "DHCP6_ADDITIONAL_CLASS_NO_TEST", "additional class %1 has no test expression, adding it to client's classes unconditionally", "DHCP6_ADDITIONAL_CLASS_UNDEFINED", "additional class %1 has no definition", + "DHCP6_ADDR6_REGISTER_DISABLED_DROP", "ADDR-REG-INFORM from %1 was dropped because address registration is disabled.", "DHCP6_ADDR_REG_INFORM_CLIENT_CHANGE", "received an ADDR-REG-INFORM for %1 from client '%2' but the address was registered by another client '%3'", "DHCP6_ADDR_REG_INFORM_FAIL", "error on ADDR-REG-INFORM from client %1: %2", "DHCP6_ADD_GLOBAL_STATUS_CODE", "%1: adding Status Code to DHCPv6 packet: %2", diff --git a/src/bin/dhcp6/dhcp6_messages.h b/src/bin/dhcp6/dhcp6_messages.h index e251d4d917..ce4dd24177 100644 --- a/src/bin/dhcp6/dhcp6_messages.h +++ b/src/bin/dhcp6/dhcp6_messages.h @@ -13,6 +13,7 @@ extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_EVAL_ERROR; extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_EVAL_RESULT; extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_NO_TEST; extern const isc::log::MessageID DHCP6_ADDITIONAL_CLASS_UNDEFINED; +extern const isc::log::MessageID DHCP6_ADDR6_REGISTER_DISABLED_DROP; extern const isc::log::MessageID DHCP6_ADDR_REG_INFORM_CLIENT_CHANGE; extern const isc::log::MessageID DHCP6_ADDR_REG_INFORM_FAIL; extern const isc::log::MessageID DHCP6_ADD_GLOBAL_STATUS_CODE; diff --git a/src/bin/dhcp6/dhcp6_messages.mes b/src/bin/dhcp6/dhcp6_messages.mes index 6d33555ab8..4e28e9a0b6 100644 --- a/src/bin/dhcp6/dhcp6_messages.mes +++ b/src/bin/dhcp6/dhcp6_messages.mes @@ -1180,3 +1180,8 @@ such modification. The clients will remember previous server-id, and will use it to extend their leases. As a result, they will have to go through a rebinding phase to re-acquire their leases and associate them with a new server id. + +% DHCP6_ADDR6_REGISTER_DISABLED_DROP ADDR-REG-INFORM from %1 was dropped because address registration is disabled. +Logged at debug log level 40. +This debug message is printed when the server drops an ADDR-REG-INFORM packet +because 'allow-address-regisration' is false. diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 0f45bb2405..3751ebaf3a 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -411,85 +411,85 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } #line 417 "dhcp6_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } #line 423 "dhcp6_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < double > (); } #line 429 "dhcp6_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < bool > (); } #line 435 "dhcp6_parser.cc" break; case symbol_kind::S_value: // value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 441 "dhcp6_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 447 "dhcp6_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 453 "dhcp6_parser.cc" break; case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 459 "dhcp6_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 465 "dhcp6_parser.cc" break; case symbol_kind::S_ssl_mode: // ssl_mode -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 471 "dhcp6_parser.cc" break; case symbol_kind::S_duid_type: // duid_type -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 477 "dhcp6_parser.cc" break; case symbol_kind::S_control_socket_type_value: // control_socket_type_value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 483 "dhcp6_parser.cc" break; case symbol_kind::S_auth_type_value: // auth_type_value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 489 "dhcp6_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 495 "dhcp6_parser.cc" break; @@ -771,133 +771,133 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 340 "dhcp6_parser.yy" +#line 341 "dhcp6_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } #line 777 "dhcp6_parser.cc" break; case 4: // $@2: %empty -#line 341 "dhcp6_parser.yy" +#line 342 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG; } #line 783 "dhcp6_parser.cc" break; case 6: // $@3: %empty -#line 342 "dhcp6_parser.yy" +#line 343 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } #line 789 "dhcp6_parser.cc" break; case 8: // $@4: %empty -#line 343 "dhcp6_parser.yy" +#line 344 "dhcp6_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 795 "dhcp6_parser.cc" break; case 10: // $@5: %empty -#line 344 "dhcp6_parser.yy" +#line 345 "dhcp6_parser.yy" { ctx.ctx_ = ctx.SUBNET6; } #line 801 "dhcp6_parser.cc" break; case 12: // $@6: %empty -#line 345 "dhcp6_parser.yy" +#line 346 "dhcp6_parser.yy" { ctx.ctx_ = ctx.POOLS; } #line 807 "dhcp6_parser.cc" break; case 14: // $@7: %empty -#line 346 "dhcp6_parser.yy" +#line 347 "dhcp6_parser.yy" { ctx.ctx_ = ctx.PD_POOLS; } #line 813 "dhcp6_parser.cc" break; case 16: // $@8: %empty -#line 347 "dhcp6_parser.yy" +#line 348 "dhcp6_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } #line 819 "dhcp6_parser.cc" break; case 18: // $@9: %empty -#line 348 "dhcp6_parser.yy" +#line 349 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } #line 825 "dhcp6_parser.cc" break; case 20: // $@10: %empty -#line 349 "dhcp6_parser.yy" +#line 350 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } #line 831 "dhcp6_parser.cc" break; case 22: // $@11: %empty -#line 350 "dhcp6_parser.yy" +#line 351 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } #line 837 "dhcp6_parser.cc" break; case 24: // $@12: %empty -#line 351 "dhcp6_parser.yy" +#line 352 "dhcp6_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 843 "dhcp6_parser.cc" break; case 26: // $@13: %empty -#line 352 "dhcp6_parser.yy" +#line 353 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } #line 849 "dhcp6_parser.cc" break; case 28: // $@14: %empty -#line 353 "dhcp6_parser.yy" +#line 354 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } #line 855 "dhcp6_parser.cc" break; case 30: // value: "integer" -#line 361 "dhcp6_parser.yy" +#line 362 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 861 "dhcp6_parser.cc" break; case 31: // value: "floating point" -#line 362 "dhcp6_parser.yy" +#line 363 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } #line 867 "dhcp6_parser.cc" break; case 32: // value: "boolean" -#line 363 "dhcp6_parser.yy" +#line 364 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } #line 873 "dhcp6_parser.cc" break; case 33: // value: "constant string" -#line 364 "dhcp6_parser.yy" +#line 365 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 879 "dhcp6_parser.cc" break; case 34: // value: "null" -#line 365 "dhcp6_parser.yy" +#line 366 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 885 "dhcp6_parser.cc" break; case 35: // value: map2 -#line 366 "dhcp6_parser.yy" +#line 367 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 891 "dhcp6_parser.cc" break; case 36: // value: list_generic -#line 367 "dhcp6_parser.yy" +#line 368 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 897 "dhcp6_parser.cc" break; case 37: // sub_json: value -#line 370 "dhcp6_parser.yy" +#line 371 "dhcp6_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); @@ -906,7 +906,7 @@ namespace isc { namespace dhcp { break; case 38: // $@15: %empty -#line 375 "dhcp6_parser.yy" +#line 376 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -917,7 +917,7 @@ namespace isc { namespace dhcp { break; case 39: // map2: "{" $@15 map_content "}" -#line 380 "dhcp6_parser.yy" +#line 381 "dhcp6_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -927,13 +927,13 @@ namespace isc { namespace dhcp { break; case 40: // map_value: map2 -#line 386 "dhcp6_parser.yy" +#line 387 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 933 "dhcp6_parser.cc" break; case 43: // not_empty_map: "constant string" ":" value -#line 393 "dhcp6_parser.yy" +#line 394 "dhcp6_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); @@ -943,7 +943,7 @@ namespace isc { namespace dhcp { break; case 44: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 398 "dhcp6_parser.yy" +#line 399 "dhcp6_parser.yy" { // map consisting of a shorter map followed by // comma and string:value @@ -954,7 +954,7 @@ namespace isc { namespace dhcp { break; case 45: // not_empty_map: not_empty_map "," -#line 404 "dhcp6_parser.yy" +#line 405 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -962,7 +962,7 @@ namespace isc { namespace dhcp { break; case 46: // $@16: %empty -#line 409 "dhcp6_parser.yy" +#line 410 "dhcp6_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -971,7 +971,7 @@ namespace isc { namespace dhcp { break; case 47: // list_generic: "[" $@16 list_content "]" -#line 412 "dhcp6_parser.yy" +#line 413 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here } @@ -979,7 +979,7 @@ namespace isc { namespace dhcp { break; case 50: // not_empty_list: value -#line 420 "dhcp6_parser.yy" +#line 421 "dhcp6_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -988,7 +988,7 @@ namespace isc { namespace dhcp { break; case 51: // not_empty_list: not_empty_list "," value -#line 424 "dhcp6_parser.yy" +#line 425 "dhcp6_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -997,7 +997,7 @@ namespace isc { namespace dhcp { break; case 52: // not_empty_list: not_empty_list "," -#line 428 "dhcp6_parser.yy" +#line 429 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1005,7 +1005,7 @@ namespace isc { namespace dhcp { break; case 53: // $@17: %empty -#line 434 "dhcp6_parser.yy" +#line 435 "dhcp6_parser.yy" { // List parsing about to start } @@ -1013,7 +1013,7 @@ namespace isc { namespace dhcp { break; case 54: // list_strings: "[" $@17 list_strings_content "]" -#line 436 "dhcp6_parser.yy" +#line 437 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -1022,7 +1022,7 @@ namespace isc { namespace dhcp { break; case 57: // not_empty_list_strings: "constant string" -#line 445 "dhcp6_parser.yy" +#line 446 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1031,7 +1031,7 @@ namespace isc { namespace dhcp { break; case 58: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 449 "dhcp6_parser.yy" +#line 450 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1040,7 +1040,7 @@ namespace isc { namespace dhcp { break; case 59: // not_empty_list_strings: not_empty_list_strings "," -#line 453 "dhcp6_parser.yy" +#line 454 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp { break; case 60: // unknown_map_entry: "constant string" ":" -#line 463 "dhcp6_parser.yy" +#line 464 "dhcp6_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); @@ -1059,7 +1059,7 @@ namespace isc { namespace dhcp { break; case 61: // $@18: %empty -#line 472 "dhcp6_parser.yy" +#line 473 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1070,7 +1070,7 @@ namespace isc { namespace dhcp { break; case 62: // syntax_map: "{" $@18 global_object "}" -#line 477 "dhcp6_parser.yy" +#line 478 "dhcp6_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1083,7 +1083,7 @@ namespace isc { namespace dhcp { break; case 63: // $@19: %empty -#line 487 "dhcp6_parser.yy" +#line 488 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1098,7 +1098,7 @@ namespace isc { namespace dhcp { break; case 64: // global_object: "Dhcp6" $@19 ":" "{" global_params "}" -#line 496 "dhcp6_parser.yy" +#line 497 "dhcp6_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); @@ -1108,7 +1108,7 @@ namespace isc { namespace dhcp { break; case 66: // global_object_comma: global_object "," -#line 504 "dhcp6_parser.yy" +#line 505 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1116,7 +1116,7 @@ namespace isc { namespace dhcp { break; case 67: // $@20: %empty -#line 510 "dhcp6_parser.yy" +#line 511 "dhcp6_parser.yy" { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1126,7 +1126,7 @@ namespace isc { namespace dhcp { break; case 68: // sub_dhcp6: "{" $@20 global_params "}" -#line 514 "dhcp6_parser.yy" +#line 515 "dhcp6_parser.yy" { // No global parameter is required // parsing completed @@ -1135,15 +1135,15 @@ namespace isc { namespace dhcp { break; case 71: // global_params: global_params "," -#line 521 "dhcp6_parser.yy" +#line 522 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } #line 1143 "dhcp6_parser.cc" break; - case 145: // $@21: %empty -#line 603 "dhcp6_parser.yy" + case 146: // $@21: %empty +#line 605 "dhcp6_parser.yy" { ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1151,8 +1151,8 @@ namespace isc { namespace dhcp { #line 1152 "dhcp6_parser.cc" break; - case 146: // data_directory: "data-directory" $@21 ":" "constant string" -#line 606 "dhcp6_parser.yy" + case 147: // data_directory: "data-directory" $@21 ":" "constant string" +#line 608 "dhcp6_parser.yy" { ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.warning(yystack_[2].location, "data-directory is deprecated and will be ignored"); @@ -1162,8 +1162,8 @@ namespace isc { namespace dhcp { #line 1163 "dhcp6_parser.cc" break; - case 147: // preferred_lifetime: "preferred-lifetime" ":" "integer" -#line 613 "dhcp6_parser.yy" + case 148: // preferred_lifetime: "preferred-lifetime" ":" "integer" +#line 615 "dhcp6_parser.yy" { ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1172,8 +1172,8 @@ namespace isc { namespace dhcp { #line 1173 "dhcp6_parser.cc" break; - case 148: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" -#line 619 "dhcp6_parser.yy" + case 149: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" +#line 621 "dhcp6_parser.yy" { 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))); @@ -1182,8 +1182,8 @@ namespace isc { namespace dhcp { #line 1183 "dhcp6_parser.cc" break; - case 149: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" -#line 625 "dhcp6_parser.yy" + case 150: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" +#line 627 "dhcp6_parser.yy" { 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))); @@ -1192,8 +1192,8 @@ namespace isc { namespace dhcp { #line 1193 "dhcp6_parser.cc" break; - case 150: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 631 "dhcp6_parser.yy" + case 151: // valid_lifetime: "valid-lifetime" ":" "integer" +#line 633 "dhcp6_parser.yy" { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1202,8 +1202,8 @@ namespace isc { namespace dhcp { #line 1203 "dhcp6_parser.cc" break; - case 151: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 637 "dhcp6_parser.yy" + case 152: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" +#line 639 "dhcp6_parser.yy" { 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))); @@ -1212,8 +1212,8 @@ namespace isc { namespace dhcp { #line 1213 "dhcp6_parser.cc" break; - case 152: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 643 "dhcp6_parser.yy" + case 153: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" +#line 645 "dhcp6_parser.yy" { 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))); @@ -1222,8 +1222,8 @@ namespace isc { namespace dhcp { #line 1223 "dhcp6_parser.cc" break; - case 153: // renew_timer: "renew-timer" ":" "integer" -#line 649 "dhcp6_parser.yy" + case 154: // renew_timer: "renew-timer" ":" "integer" +#line 651 "dhcp6_parser.yy" { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1232,8 +1232,8 @@ namespace isc { namespace dhcp { #line 1233 "dhcp6_parser.cc" break; - case 154: // rebind_timer: "rebind-timer" ":" "integer" -#line 655 "dhcp6_parser.yy" + case 155: // rebind_timer: "rebind-timer" ":" "integer" +#line 657 "dhcp6_parser.yy" { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1242,8 +1242,8 @@ namespace isc { namespace dhcp { #line 1243 "dhcp6_parser.cc" break; - case 155: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 661 "dhcp6_parser.yy" + case 156: // calculate_tee_times: "calculate-tee-times" ":" "boolean" +#line 663 "dhcp6_parser.yy" { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1252,8 +1252,8 @@ namespace isc { namespace dhcp { #line 1253 "dhcp6_parser.cc" break; - case 156: // t1_percent: "t1-percent" ":" "floating point" -#line 667 "dhcp6_parser.yy" + case 157: // t1_percent: "t1-percent" ":" "floating point" +#line 669 "dhcp6_parser.yy" { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1262,8 +1262,8 @@ namespace isc { namespace dhcp { #line 1263 "dhcp6_parser.cc" break; - case 157: // t2_percent: "t2-percent" ":" "floating point" -#line 673 "dhcp6_parser.yy" + case 158: // t2_percent: "t2-percent" ":" "floating point" +#line 675 "dhcp6_parser.yy" { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1272,8 +1272,8 @@ namespace isc { namespace dhcp { #line 1273 "dhcp6_parser.cc" break; - case 158: // cache_threshold: "cache-threshold" ":" "floating point" -#line 679 "dhcp6_parser.yy" + case 159: // cache_threshold: "cache-threshold" ":" "floating point" +#line 681 "dhcp6_parser.yy" { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1282,8 +1282,8 @@ namespace isc { namespace dhcp { #line 1283 "dhcp6_parser.cc" break; - case 159: // cache_max_age: "cache-max-age" ":" "integer" -#line 685 "dhcp6_parser.yy" + case 160: // cache_max_age: "cache-max-age" ":" "integer" +#line 687 "dhcp6_parser.yy" { 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))); @@ -1292,8 +1292,8 @@ namespace isc { namespace dhcp { #line 1293 "dhcp6_parser.cc" break; - case 160: // adaptive_lease_time_threshold: "adaptive-lease-time-threshold" ":" "floating point" -#line 691 "dhcp6_parser.yy" + case 161: // adaptive_lease_time_threshold: "adaptive-lease-time-threshold" ":" "floating point" +#line 693 "dhcp6_parser.yy" { ctx.unique("adaptive-lease-time-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr altt(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1302,8 +1302,8 @@ namespace isc { namespace dhcp { #line 1303 "dhcp6_parser.cc" break; - case 161: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 697 "dhcp6_parser.yy" + case 162: // decline_probation_period: "decline-probation-period" ":" "integer" +#line 699 "dhcp6_parser.yy" { 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))); @@ -1312,8 +1312,8 @@ namespace isc { namespace dhcp { #line 1313 "dhcp6_parser.cc" break; - case 162: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 703 "dhcp6_parser.yy" + case 163: // ddns_send_updates: "ddns-send-updates" ":" "boolean" +#line 705 "dhcp6_parser.yy" { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1322,8 +1322,8 @@ namespace isc { namespace dhcp { #line 1323 "dhcp6_parser.cc" break; - case 163: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 709 "dhcp6_parser.yy" + case 164: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" +#line 711 "dhcp6_parser.yy" { 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))); @@ -1332,8 +1332,8 @@ namespace isc { namespace dhcp { #line 1333 "dhcp6_parser.cc" break; - case 164: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 715 "dhcp6_parser.yy" + case 165: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" +#line 717 "dhcp6_parser.yy" { 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))); @@ -1342,8 +1342,8 @@ namespace isc { namespace dhcp { #line 1343 "dhcp6_parser.cc" break; - case 165: // $@22: %empty -#line 721 "dhcp6_parser.yy" + case 166: // $@22: %empty +#line 723 "dhcp6_parser.yy" { ctx.enter(ctx.REPLACE_CLIENT_NAME); ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); @@ -1351,8 +1351,8 @@ namespace isc { namespace dhcp { #line 1352 "dhcp6_parser.cc" break; - case 166: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value -#line 724 "dhcp6_parser.yy" + case 167: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value +#line 726 "dhcp6_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1360,40 +1360,40 @@ namespace isc { namespace dhcp { #line 1361 "dhcp6_parser.cc" break; - case 167: // ddns_replace_client_name_value: "when-present" -#line 730 "dhcp6_parser.yy" + case 168: // ddns_replace_client_name_value: "when-present" +#line 732 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } #line 1369 "dhcp6_parser.cc" break; - case 168: // ddns_replace_client_name_value: "never" -#line 733 "dhcp6_parser.yy" + case 169: // ddns_replace_client_name_value: "never" +#line 735 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } #line 1377 "dhcp6_parser.cc" break; - case 169: // ddns_replace_client_name_value: "always" -#line 736 "dhcp6_parser.yy" + case 170: // ddns_replace_client_name_value: "always" +#line 738 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } #line 1385 "dhcp6_parser.cc" break; - case 170: // ddns_replace_client_name_value: "when-not-present" -#line 739 "dhcp6_parser.yy" + case 171: // ddns_replace_client_name_value: "when-not-present" +#line 741 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } #line 1393 "dhcp6_parser.cc" break; - case 171: // ddns_replace_client_name_value: "boolean" -#line 742 "dhcp6_parser.yy" + case 172: // ddns_replace_client_name_value: "boolean" +#line 744 "dhcp6_parser.yy" { error(yystack_[0].location, "boolean values for the ddns-replace-client-name are " "no longer supported"); @@ -1401,8 +1401,8 @@ namespace isc { namespace dhcp { #line 1402 "dhcp6_parser.cc" break; - case 172: // $@23: %empty -#line 748 "dhcp6_parser.yy" + case 173: // $@23: %empty +#line 750 "dhcp6_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1410,8 +1410,8 @@ namespace isc { namespace dhcp { #line 1411 "dhcp6_parser.cc" break; - case 173: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" -#line 751 "dhcp6_parser.yy" + case 174: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" +#line 753 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); @@ -1420,8 +1420,8 @@ namespace isc { namespace dhcp { #line 1421 "dhcp6_parser.cc" break; - case 174: // $@24: %empty -#line 757 "dhcp6_parser.yy" + case 175: // $@24: %empty +#line 759 "dhcp6_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1429,8 +1429,8 @@ namespace isc { namespace dhcp { #line 1430 "dhcp6_parser.cc" break; - case 175: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" -#line 760 "dhcp6_parser.yy" + case 176: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" +#line 762 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); @@ -1439,8 +1439,8 @@ namespace isc { namespace dhcp { #line 1440 "dhcp6_parser.cc" break; - case 176: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 766 "dhcp6_parser.yy" + case 177: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" +#line 768 "dhcp6_parser.yy" { 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))); @@ -1449,8 +1449,8 @@ namespace isc { namespace dhcp { #line 1450 "dhcp6_parser.cc" break; - case 177: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 775 "dhcp6_parser.yy" + case 178: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" +#line 777 "dhcp6_parser.yy" { 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))); @@ -1463,8 +1463,8 @@ namespace isc { namespace dhcp { #line 1464 "dhcp6_parser.cc" break; - case 178: // $@25: %empty -#line 785 "dhcp6_parser.yy" + case 179: // $@25: %empty +#line 787 "dhcp6_parser.yy" { ctx.unique("ddns-conflict-resolution-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DDNS_CONFLICT_RESOLUTION_MODE); @@ -1472,8 +1472,8 @@ namespace isc { namespace dhcp { #line 1473 "dhcp6_parser.cc" break; - case 179: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value -#line 788 "dhcp6_parser.yy" + case 180: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value +#line 790 "dhcp6_parser.yy" { ctx.stack_.back()->set("ddns-conflict-resolution-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1481,40 +1481,40 @@ namespace isc { namespace dhcp { #line 1482 "dhcp6_parser.cc" break; - case 180: // ddns_conflict_resolution_mode_value: "check-with-dhcid" -#line 794 "dhcp6_parser.yy" + case 181: // ddns_conflict_resolution_mode_value: "check-with-dhcid" +#line 796 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-with-dhcid", ctx.loc2pos(yystack_[0].location))); } #line 1490 "dhcp6_parser.cc" break; - case 181: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid" -#line 797 "dhcp6_parser.yy" + case 182: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid" +#line 799 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-with-dhcid", ctx.loc2pos(yystack_[0].location))); } #line 1498 "dhcp6_parser.cc" break; - case 182: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid" -#line 800 "dhcp6_parser.yy" + case 183: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid" +#line 802 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-exists-with-dhcid", ctx.loc2pos(yystack_[0].location))); } #line 1506 "dhcp6_parser.cc" break; - case 183: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid" -#line 803 "dhcp6_parser.yy" + case 184: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid" +#line 805 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-without-dhcid", ctx.loc2pos(yystack_[0].location))); } #line 1514 "dhcp6_parser.cc" break; - case 184: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point" -#line 808 "dhcp6_parser.yy" + case 185: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point" +#line 810 "dhcp6_parser.yy" { ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1523,8 +1523,8 @@ namespace isc { namespace dhcp { #line 1524 "dhcp6_parser.cc" break; - case 185: // ddns_ttl: "ddns-ttl" ":" "integer" -#line 814 "dhcp6_parser.yy" + case 186: // ddns_ttl: "ddns-ttl" ":" "integer" +#line 816 "dhcp6_parser.yy" { ctx.unique("ddns-ttl", ctx.loc2pos(yystack_[2].location)); ElementPtr ttl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1533,8 +1533,8 @@ namespace isc { namespace dhcp { #line 1534 "dhcp6_parser.cc" break; - case 186: // ddns_ttl_min: "ddns-ttl-min" ":" "integer" -#line 820 "dhcp6_parser.yy" + case 187: // ddns_ttl_min: "ddns-ttl-min" ":" "integer" +#line 822 "dhcp6_parser.yy" { ctx.unique("ddns-ttl-min", ctx.loc2pos(yystack_[2].location)); ElementPtr ttl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1543,8 +1543,8 @@ namespace isc { namespace dhcp { #line 1544 "dhcp6_parser.cc" break; - case 187: // ddns_ttl_max: "ddns-ttl-mix" ":" "integer" -#line 826 "dhcp6_parser.yy" + case 188: // ddns_ttl_max: "ddns-ttl-mix" ":" "integer" +#line 828 "dhcp6_parser.yy" { ctx.unique("ddns-ttl-max", ctx.loc2pos(yystack_[2].location)); ElementPtr ttl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1553,8 +1553,8 @@ namespace isc { namespace dhcp { #line 1554 "dhcp6_parser.cc" break; - case 188: // $@26: %empty -#line 832 "dhcp6_parser.yy" + case 189: // $@26: %empty +#line 834 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1562,8 +1562,8 @@ namespace isc { namespace dhcp { #line 1563 "dhcp6_parser.cc" break; - case 189: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string" -#line 835 "dhcp6_parser.yy" + case 190: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string" +#line 837 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); @@ -1572,8 +1572,8 @@ namespace isc { namespace dhcp { #line 1573 "dhcp6_parser.cc" break; - case 190: // $@27: %empty -#line 841 "dhcp6_parser.yy" + case 191: // $@27: %empty +#line 843 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1581,8 +1581,8 @@ namespace isc { namespace dhcp { #line 1582 "dhcp6_parser.cc" break; - case 191: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string" -#line 844 "dhcp6_parser.yy" + case 192: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string" +#line 846 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); @@ -1591,8 +1591,8 @@ namespace isc { namespace dhcp { #line 1592 "dhcp6_parser.cc" break; - case 192: // store_extended_info: "store-extended-info" ":" "boolean" -#line 850 "dhcp6_parser.yy" + case 193: // store_extended_info: "store-extended-info" ":" "boolean" +#line 852 "dhcp6_parser.yy" { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1601,8 +1601,8 @@ namespace isc { namespace dhcp { #line 1602 "dhcp6_parser.cc" break; - case 193: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 856 "dhcp6_parser.yy" + case 194: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" +#line 858 "dhcp6_parser.yy" { 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))); @@ -1611,8 +1611,8 @@ namespace isc { namespace dhcp { #line 1612 "dhcp6_parser.cc" break; - case 194: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 862 "dhcp6_parser.yy" + case 195: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" +#line 864 "dhcp6_parser.yy" { 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))); @@ -1621,8 +1621,8 @@ namespace isc { namespace dhcp { #line 1622 "dhcp6_parser.cc" break; - case 195: // $@28: %empty -#line 868 "dhcp6_parser.yy" + case 196: // $@28: %empty +#line 870 "dhcp6_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1630,8 +1630,8 @@ namespace isc { namespace dhcp { #line 1631 "dhcp6_parser.cc" break; - case 196: // server_tag: "server-tag" $@28 ":" "constant string" -#line 871 "dhcp6_parser.yy" + case 197: // server_tag: "server-tag" $@28 ":" "constant string" +#line 873 "dhcp6_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); @@ -1640,8 +1640,8 @@ namespace isc { namespace dhcp { #line 1641 "dhcp6_parser.cc" break; - case 197: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 877 "dhcp6_parser.yy" + case 198: // parked_packet_limit: "parked-packet-limit" ":" "integer" +#line 879 "dhcp6_parser.yy" { ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location)); ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1650,8 +1650,8 @@ namespace isc { namespace dhcp { #line 1651 "dhcp6_parser.cc" break; - case 198: // $@29: %empty -#line 883 "dhcp6_parser.yy" + case 199: // $@29: %empty +#line 885 "dhcp6_parser.yy" { ctx.unique("allocator", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1659,8 +1659,8 @@ namespace isc { namespace dhcp { #line 1660 "dhcp6_parser.cc" break; - case 199: // allocator: "allocator" $@29 ":" "constant string" -#line 886 "dhcp6_parser.yy" + case 200: // allocator: "allocator" $@29 ":" "constant string" +#line 888 "dhcp6_parser.yy" { ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("allocator", al); @@ -1669,8 +1669,8 @@ namespace isc { namespace dhcp { #line 1670 "dhcp6_parser.cc" break; - case 200: // $@30: %empty -#line 892 "dhcp6_parser.yy" + case 201: // $@30: %empty +#line 894 "dhcp6_parser.yy" { ctx.unique("pd-allocator", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1678,8 +1678,8 @@ namespace isc { namespace dhcp { #line 1679 "dhcp6_parser.cc" break; - case 201: // pd_allocator: "pd-allocator" $@30 ":" "constant string" -#line 895 "dhcp6_parser.yy" + case 202: // pd_allocator: "pd-allocator" $@30 ":" "constant string" +#line 897 "dhcp6_parser.yy" { ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pd-allocator", al); @@ -1688,8 +1688,8 @@ namespace isc { namespace dhcp { #line 1689 "dhcp6_parser.cc" break; - case 202: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" -#line 901 "dhcp6_parser.yy" + case 203: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" +#line 903 "dhcp6_parser.yy" { ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location)); ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1698,8 +1698,8 @@ namespace isc { namespace dhcp { #line 1699 "dhcp6_parser.cc" break; - case 203: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 907 "dhcp6_parser.yy" + case 204: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" +#line 909 "dhcp6_parser.yy" { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1708,8 +1708,8 @@ namespace isc { namespace dhcp { #line 1709 "dhcp6_parser.cc" break; - case 204: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" -#line 913 "dhcp6_parser.yy" + case 205: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" +#line 915 "dhcp6_parser.yy" { ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location)); ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1718,8 +1718,18 @@ namespace isc { namespace dhcp { #line 1719 "dhcp6_parser.cc" break; - case 205: // $@31: %empty -#line 919 "dhcp6_parser.yy" + case 206: // allow_address_registration: "allow-address-registration" ":" "boolean" +#line 921 "dhcp6_parser.yy" + { + ctx.unique("allow-address-registration", ctx.loc2pos(yystack_[2].location)); + ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("allow-address-registration", first); +} +#line 1729 "dhcp6_parser.cc" + break; + + case 207: // $@31: %empty +#line 927 "dhcp6_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1727,48 +1737,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1731 "dhcp6_parser.cc" +#line 1741 "dhcp6_parser.cc" break; - case 206: // interfaces_config: "interfaces-config" $@31 ":" "{" interfaces_config_params "}" -#line 925 "dhcp6_parser.yy" + case 208: // interfaces_config: "interfaces-config" $@31 ":" "{" interfaces_config_params "}" +#line 933 "dhcp6_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1741 "dhcp6_parser.cc" +#line 1751 "dhcp6_parser.cc" break; - case 207: // $@32: %empty -#line 931 "dhcp6_parser.yy" + case 209: // $@32: %empty +#line 939 "dhcp6_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1751 "dhcp6_parser.cc" +#line 1761 "dhcp6_parser.cc" break; - case 208: // sub_interfaces6: "{" $@32 interfaces_config_params "}" -#line 935 "dhcp6_parser.yy" + case 210: // sub_interfaces6: "{" $@32 interfaces_config_params "}" +#line 943 "dhcp6_parser.yy" { // No interfaces config param is required // parsing completed } -#line 1760 "dhcp6_parser.cc" +#line 1770 "dhcp6_parser.cc" break; - case 211: // interfaces_config_params: interfaces_config_params "," -#line 942 "dhcp6_parser.yy" + case 213: // interfaces_config_params: interfaces_config_params "," +#line 950 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1768 "dhcp6_parser.cc" +#line 1778 "dhcp6_parser.cc" break; - case 220: // $@33: %empty -#line 957 "dhcp6_parser.yy" + case 222: // $@33: %empty +#line 965 "dhcp6_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1776,60 +1786,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1780 "dhcp6_parser.cc" +#line 1790 "dhcp6_parser.cc" break; - case 221: // interfaces_list: "interfaces" $@33 ":" list_strings -#line 963 "dhcp6_parser.yy" + case 223: // interfaces_list: "interfaces" $@33 ":" list_strings +#line 971 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1789 "dhcp6_parser.cc" +#line 1799 "dhcp6_parser.cc" break; - case 222: // re_detect: "re-detect" ":" "boolean" -#line 968 "dhcp6_parser.yy" + case 224: // re_detect: "re-detect" ":" "boolean" +#line 976 "dhcp6_parser.yy" { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1799 "dhcp6_parser.cc" +#line 1809 "dhcp6_parser.cc" break; - case 223: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" -#line 974 "dhcp6_parser.yy" + case 225: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" +#line 982 "dhcp6_parser.yy" { ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-require-all", b); } -#line 1809 "dhcp6_parser.cc" +#line 1819 "dhcp6_parser.cc" break; - case 224: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" -#line 980 "dhcp6_parser.yy" + case 226: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" +#line 988 "dhcp6_parser.yy" { ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-retry-wait-time", n); } -#line 1819 "dhcp6_parser.cc" +#line 1829 "dhcp6_parser.cc" break; - case 225: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" -#line 986 "dhcp6_parser.yy" + case 227: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" +#line 994 "dhcp6_parser.yy" { ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-max-retries", n); } -#line 1829 "dhcp6_parser.cc" +#line 1839 "dhcp6_parser.cc" break; - case 226: // $@34: %empty -#line 992 "dhcp6_parser.yy" + case 228: // $@34: %empty +#line 1000 "dhcp6_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1837,22 +1847,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1841 "dhcp6_parser.cc" +#line 1851 "dhcp6_parser.cc" break; - case 227: // lease_database: "lease-database" $@34 ":" "{" database_map_params "}" -#line 998 "dhcp6_parser.yy" + case 229: // lease_database: "lease-database" $@34 ":" "{" database_map_params "}" +#line 1006 "dhcp6_parser.yy" { // 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 1852 "dhcp6_parser.cc" +#line 1862 "dhcp6_parser.cc" break; - case 228: // $@35: %empty -#line 1005 "dhcp6_parser.yy" + case 230: // $@35: %empty +#line 1013 "dhcp6_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1860,22 +1870,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1864 "dhcp6_parser.cc" +#line 1874 "dhcp6_parser.cc" break; - case 229: // hosts_database: "hosts-database" $@35 ":" "{" database_map_params "}" -#line 1011 "dhcp6_parser.yy" + case 231: // hosts_database: "hosts-database" $@35 ":" "{" database_map_params "}" +#line 1019 "dhcp6_parser.yy" { // 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 1875 "dhcp6_parser.cc" +#line 1885 "dhcp6_parser.cc" break; - case 230: // $@36: %empty -#line 1018 "dhcp6_parser.yy" + case 232: // $@36: %empty +#line 1026 "dhcp6_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1883,441 +1893,441 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1887 "dhcp6_parser.cc" +#line 1897 "dhcp6_parser.cc" break; - case 231: // hosts_databases: "hosts-databases" $@36 ":" "[" database_list "]" -#line 1024 "dhcp6_parser.yy" + case 233: // hosts_databases: "hosts-databases" $@36 ":" "[" database_list "]" +#line 1032 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1896 "dhcp6_parser.cc" +#line 1906 "dhcp6_parser.cc" break; - case 236: // not_empty_database_list: not_empty_database_list "," -#line 1035 "dhcp6_parser.yy" + case 238: // not_empty_database_list: not_empty_database_list "," +#line 1043 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1904 "dhcp6_parser.cc" +#line 1914 "dhcp6_parser.cc" break; - case 237: // $@37: %empty -#line 1040 "dhcp6_parser.yy" + case 239: // $@37: %empty +#line 1048 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1914 "dhcp6_parser.cc" +#line 1924 "dhcp6_parser.cc" break; - case 238: // database: "{" $@37 database_map_params "}" -#line 1044 "dhcp6_parser.yy" + case 240: // database: "{" $@37 database_map_params "}" +#line 1052 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1924 "dhcp6_parser.cc" +#line 1934 "dhcp6_parser.cc" break; - case 241: // database_map_params: database_map_params "," -#line 1052 "dhcp6_parser.yy" + case 243: // database_map_params: database_map_params "," +#line 1060 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1932 "dhcp6_parser.cc" +#line 1942 "dhcp6_parser.cc" break; - case 266: // $@38: %empty -#line 1083 "dhcp6_parser.yy" + case 268: // $@38: %empty +#line 1091 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1941 "dhcp6_parser.cc" +#line 1951 "dhcp6_parser.cc" break; - case 267: // database_type: "type" $@38 ":" "constant string" -#line 1086 "dhcp6_parser.yy" + case 269: // database_type: "type" $@38 ":" "constant string" +#line 1094 "dhcp6_parser.yy" { ElementPtr db_type(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", db_type); ctx.leave(); } -#line 1951 "dhcp6_parser.cc" +#line 1961 "dhcp6_parser.cc" break; - case 268: // $@39: %empty -#line 1092 "dhcp6_parser.yy" + case 270: // $@39: %empty +#line 1100 "dhcp6_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1960 "dhcp6_parser.cc" +#line 1970 "dhcp6_parser.cc" break; - case 269: // user: "user" $@39 ":" "constant string" -#line 1095 "dhcp6_parser.yy" + case 271: // user: "user" $@39 ":" "constant string" +#line 1103 "dhcp6_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1970 "dhcp6_parser.cc" +#line 1980 "dhcp6_parser.cc" break; - case 270: // $@40: %empty -#line 1101 "dhcp6_parser.yy" + case 272: // $@40: %empty +#line 1109 "dhcp6_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1979 "dhcp6_parser.cc" +#line 1989 "dhcp6_parser.cc" break; - case 271: // password: "password" $@40 ":" "constant string" -#line 1104 "dhcp6_parser.yy" + case 273: // password: "password" $@40 ":" "constant string" +#line 1112 "dhcp6_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1989 "dhcp6_parser.cc" +#line 1999 "dhcp6_parser.cc" break; - case 272: // $@41: %empty -#line 1110 "dhcp6_parser.yy" + case 274: // $@41: %empty +#line 1118 "dhcp6_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1998 "dhcp6_parser.cc" +#line 2008 "dhcp6_parser.cc" break; - case 273: // host: "host" $@41 ":" "constant string" -#line 1113 "dhcp6_parser.yy" + case 275: // host: "host" $@41 ":" "constant string" +#line 1121 "dhcp6_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 2008 "dhcp6_parser.cc" +#line 2018 "dhcp6_parser.cc" break; - case 274: // port: "port" ":" "integer" -#line 1119 "dhcp6_parser.yy" + case 276: // port: "port" ":" "integer" +#line 1127 "dhcp6_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 2018 "dhcp6_parser.cc" +#line 2028 "dhcp6_parser.cc" break; - case 275: // $@42: %empty -#line 1125 "dhcp6_parser.yy" + case 277: // $@42: %empty +#line 1133 "dhcp6_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2027 "dhcp6_parser.cc" +#line 2037 "dhcp6_parser.cc" break; - case 276: // name: "name" $@42 ":" "constant string" -#line 1128 "dhcp6_parser.yy" + case 278: // name: "name" $@42 ":" "constant string" +#line 1136 "dhcp6_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 2037 "dhcp6_parser.cc" +#line 2047 "dhcp6_parser.cc" break; - case 277: // persist: "persist" ":" "boolean" -#line 1134 "dhcp6_parser.yy" + case 279: // persist: "persist" ":" "boolean" +#line 1142 "dhcp6_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 2047 "dhcp6_parser.cc" +#line 2057 "dhcp6_parser.cc" break; - case 278: // lfc_interval: "lfc-interval" ":" "integer" -#line 1140 "dhcp6_parser.yy" + case 280: // lfc_interval: "lfc-interval" ":" "integer" +#line 1148 "dhcp6_parser.yy" { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 2057 "dhcp6_parser.cc" +#line 2067 "dhcp6_parser.cc" break; - case 279: // readonly: "readonly" ":" "boolean" -#line 1146 "dhcp6_parser.yy" + case 281: // readonly: "readonly" ":" "boolean" +#line 1154 "dhcp6_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 2067 "dhcp6_parser.cc" +#line 2077 "dhcp6_parser.cc" break; - case 280: // connect_timeout: "connect-timeout" ":" "integer" -#line 1152 "dhcp6_parser.yy" + case 282: // connect_timeout: "connect-timeout" ":" "integer" +#line 1160 "dhcp6_parser.yy" { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 2077 "dhcp6_parser.cc" +#line 2087 "dhcp6_parser.cc" break; - case 281: // read_timeout: "read-timeout" ":" "integer" -#line 1158 "dhcp6_parser.yy" + case 283: // read_timeout: "read-timeout" ":" "integer" +#line 1166 "dhcp6_parser.yy" { ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("read-timeout", n); } -#line 2087 "dhcp6_parser.cc" +#line 2097 "dhcp6_parser.cc" break; - case 282: // write_timeout: "write-timeout" ":" "integer" -#line 1164 "dhcp6_parser.yy" + case 284: // write_timeout: "write-timeout" ":" "integer" +#line 1172 "dhcp6_parser.yy" { ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("write-timeout", n); } -#line 2097 "dhcp6_parser.cc" +#line 2107 "dhcp6_parser.cc" break; - case 283: // tcp_user_timeout: "tcp-user-timeout" ":" "integer" -#line 1170 "dhcp6_parser.yy" + case 285: // tcp_user_timeout: "tcp-user-timeout" ":" "integer" +#line 1178 "dhcp6_parser.yy" { ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-user-timeout", n); } -#line 2107 "dhcp6_parser.cc" +#line 2117 "dhcp6_parser.cc" break; - case 284: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1176 "dhcp6_parser.yy" + case 286: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" +#line 1184 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 2117 "dhcp6_parser.cc" +#line 2127 "dhcp6_parser.cc" break; - case 285: // $@43: %empty -#line 1182 "dhcp6_parser.yy" + case 287: // $@43: %empty +#line 1190 "dhcp6_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 2126 "dhcp6_parser.cc" +#line 2136 "dhcp6_parser.cc" break; - case 286: // on_fail: "on-fail" $@43 ":" on_fail_mode -#line 1185 "dhcp6_parser.yy" + case 288: // on_fail: "on-fail" $@43 ":" on_fail_mode +#line 1193 "dhcp6_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2135 "dhcp6_parser.cc" +#line 2145 "dhcp6_parser.cc" break; - case 287: // on_fail_mode: "stop-retry-exit" -#line 1190 "dhcp6_parser.yy" + case 289: // on_fail_mode: "stop-retry-exit" +#line 1198 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2141 "dhcp6_parser.cc" +#line 2151 "dhcp6_parser.cc" break; - case 288: // on_fail_mode: "serve-retry-exit" -#line 1191 "dhcp6_parser.yy" + case 290: // on_fail_mode: "serve-retry-exit" +#line 1199 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2147 "dhcp6_parser.cc" +#line 2157 "dhcp6_parser.cc" break; - case 289: // on_fail_mode: "serve-retry-continue" -#line 1192 "dhcp6_parser.yy" + case 291: // on_fail_mode: "serve-retry-continue" +#line 1200 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 2153 "dhcp6_parser.cc" +#line 2163 "dhcp6_parser.cc" break; - case 290: // retry_on_startup: "retry-on-startup" ":" "boolean" -#line 1195 "dhcp6_parser.yy" + case 292: // retry_on_startup: "retry-on-startup" ":" "boolean" +#line 1203 "dhcp6_parser.yy" { ctx.unique("retry-on-startup", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("retry-on-startup", n); } -#line 2163 "dhcp6_parser.cc" +#line 2173 "dhcp6_parser.cc" break; - case 291: // max_row_errors: "max-row-errors" ":" "integer" -#line 1201 "dhcp6_parser.yy" + case 293: // max_row_errors: "max-row-errors" ":" "integer" +#line 1209 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("max-row-errors", n); } -#line 2173 "dhcp6_parser.cc" +#line 2183 "dhcp6_parser.cc" break; - case 292: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1207 "dhcp6_parser.yy" + case 294: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" +#line 1215 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 2183 "dhcp6_parser.cc" +#line 2193 "dhcp6_parser.cc" break; - case 293: // $@44: %empty -#line 1213 "dhcp6_parser.yy" + case 295: // $@44: %empty +#line 1221 "dhcp6_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2192 "dhcp6_parser.cc" +#line 2202 "dhcp6_parser.cc" break; - case 294: // trust_anchor: "trust-anchor" $@44 ":" "constant string" -#line 1216 "dhcp6_parser.yy" + case 296: // trust_anchor: "trust-anchor" $@44 ":" "constant string" +#line 1224 "dhcp6_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 2202 "dhcp6_parser.cc" +#line 2212 "dhcp6_parser.cc" break; - case 295: // $@45: %empty -#line 1222 "dhcp6_parser.yy" + case 297: // $@45: %empty +#line 1230 "dhcp6_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2211 "dhcp6_parser.cc" +#line 2221 "dhcp6_parser.cc" break; - case 296: // cert_file: "cert-file" $@45 ":" "constant string" -#line 1225 "dhcp6_parser.yy" + case 298: // cert_file: "cert-file" $@45 ":" "constant string" +#line 1233 "dhcp6_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 2221 "dhcp6_parser.cc" +#line 2231 "dhcp6_parser.cc" break; - case 297: // $@46: %empty -#line 1231 "dhcp6_parser.yy" + case 299: // $@46: %empty +#line 1239 "dhcp6_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2230 "dhcp6_parser.cc" +#line 2240 "dhcp6_parser.cc" break; - case 298: // key_file: "key-file" $@46 ":" "constant string" -#line 1234 "dhcp6_parser.yy" + case 300: // key_file: "key-file" $@46 ":" "constant string" +#line 1242 "dhcp6_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 2240 "dhcp6_parser.cc" +#line 2250 "dhcp6_parser.cc" break; - case 299: // $@47: %empty -#line 1240 "dhcp6_parser.yy" + case 301: // $@47: %empty +#line 1248 "dhcp6_parser.yy" { ctx.unique("ssl-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.SSL_MODE); } -#line 2249 "dhcp6_parser.cc" +#line 2259 "dhcp6_parser.cc" break; - case 300: // ssl_mode: "ssl-mode" $@47 ":" ssl_mode -#line 1243 "dhcp6_parser.yy" + case 302: // ssl_mode: "ssl-mode" $@47 ":" ssl_mode +#line 1251 "dhcp6_parser.yy" { ctx.stack_.back()->set("ssl-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2258 "dhcp6_parser.cc" +#line 2268 "dhcp6_parser.cc" break; - case 301: // ssl_mode: "disable" -#line 1248 "dhcp6_parser.yy" + case 303: // ssl_mode: "disable" +#line 1256 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disable", ctx.loc2pos(yystack_[0].location))); } -#line 2266 "dhcp6_parser.cc" +#line 2276 "dhcp6_parser.cc" break; - case 302: // ssl_mode: "prefer" -#line 1251 "dhcp6_parser.yy" + case 304: // ssl_mode: "prefer" +#line 1259 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("prefer", ctx.loc2pos(yystack_[0].location))); } -#line 2274 "dhcp6_parser.cc" +#line 2284 "dhcp6_parser.cc" break; - case 303: // ssl_mode: "require" -#line 1254 "dhcp6_parser.yy" + case 305: // ssl_mode: "require" +#line 1262 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("require", ctx.loc2pos(yystack_[0].location))); } -#line 2282 "dhcp6_parser.cc" +#line 2292 "dhcp6_parser.cc" break; - case 304: // ssl_mode: "verify-ca" -#line 1257 "dhcp6_parser.yy" + case 306: // ssl_mode: "verify-ca" +#line 1265 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("verify-ca", ctx.loc2pos(yystack_[0].location))); } -#line 2290 "dhcp6_parser.cc" +#line 2300 "dhcp6_parser.cc" break; - case 305: // ssl_mode: "verify-full" -#line 1260 "dhcp6_parser.yy" + case 307: // ssl_mode: "verify-full" +#line 1268 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("verify-full", ctx.loc2pos(yystack_[0].location))); } -#line 2298 "dhcp6_parser.cc" +#line 2308 "dhcp6_parser.cc" break; - case 306: // $@48: %empty -#line 1265 "dhcp6_parser.yy" + case 308: // $@48: %empty +#line 1273 "dhcp6_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2307 "dhcp6_parser.cc" +#line 2317 "dhcp6_parser.cc" break; - case 307: // cipher_list: "cipher-list" $@48 ":" "constant string" -#line 1268 "dhcp6_parser.yy" + case 309: // cipher_list: "cipher-list" $@48 ":" "constant string" +#line 1276 "dhcp6_parser.yy" { ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cipher-list", cl); ctx.leave(); } -#line 2317 "dhcp6_parser.cc" +#line 2327 "dhcp6_parser.cc" break; - case 308: // $@49: %empty -#line 1274 "dhcp6_parser.yy" + case 310: // $@49: %empty +#line 1282 "dhcp6_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2325,37 +2335,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 2329 "dhcp6_parser.cc" +#line 2339 "dhcp6_parser.cc" break; - case 309: // sanity_checks: "sanity-checks" $@49 ":" "{" sanity_checks_params "}" -#line 1280 "dhcp6_parser.yy" + case 311: // sanity_checks: "sanity-checks" $@49 ":" "{" sanity_checks_params "}" +#line 1288 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2338 "dhcp6_parser.cc" +#line 2348 "dhcp6_parser.cc" break; - case 312: // sanity_checks_params: sanity_checks_params "," -#line 1287 "dhcp6_parser.yy" + case 314: // sanity_checks_params: sanity_checks_params "," +#line 1295 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2346 "dhcp6_parser.cc" +#line 2356 "dhcp6_parser.cc" break; - case 315: // $@50: %empty -#line 1296 "dhcp6_parser.yy" + case 317: // $@50: %empty +#line 1304 "dhcp6_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2355 "dhcp6_parser.cc" +#line 2365 "dhcp6_parser.cc" break; - case 316: // lease_checks: "lease-checks" $@50 ":" "constant string" -#line 1299 "dhcp6_parser.yy" + case 318: // lease_checks: "lease-checks" $@50 ":" "constant string" +#line 1307 "dhcp6_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -2371,20 +2381,20 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 2375 "dhcp6_parser.cc" +#line 2385 "dhcp6_parser.cc" break; - case 317: // $@51: %empty -#line 1315 "dhcp6_parser.yy" + case 319: // $@51: %empty +#line 1323 "dhcp6_parser.yy" { ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2384 "dhcp6_parser.cc" +#line 2394 "dhcp6_parser.cc" break; - case 318: // extended_info_checks: "extended-info-checks" $@51 ":" "constant string" -#line 1318 "dhcp6_parser.yy" + case 320: // extended_info_checks: "extended-info-checks" $@51 ":" "constant string" +#line 1326 "dhcp6_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -2399,11 +2409,11 @@ namespace isc { namespace dhcp { ", supported values are: none, fix, strict, pedantic"); } } -#line 2403 "dhcp6_parser.cc" +#line 2413 "dhcp6_parser.cc" break; - case 319: // $@52: %empty -#line 1333 "dhcp6_parser.yy" + case 321: // $@52: %empty +#line 1341 "dhcp6_parser.yy" { ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2411,46 +2421,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.MAC_SOURCES); } -#line 2415 "dhcp6_parser.cc" +#line 2425 "dhcp6_parser.cc" break; - case 320: // mac_sources: "mac-sources" $@52 ":" "[" mac_sources_list "]" -#line 1339 "dhcp6_parser.yy" + case 322: // mac_sources: "mac-sources" $@52 ":" "[" mac_sources_list "]" +#line 1347 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2424 "dhcp6_parser.cc" +#line 2434 "dhcp6_parser.cc" break; - case 323: // mac_sources_list: mac_sources_list "," -#line 1346 "dhcp6_parser.yy" + case 325: // mac_sources_list: mac_sources_list "," +#line 1354 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2432 "dhcp6_parser.cc" +#line 2442 "dhcp6_parser.cc" break; - case 326: // duid_id: "duid" -#line 1355 "dhcp6_parser.yy" + case 328: // duid_id: "duid" +#line 1363 "dhcp6_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2441 "dhcp6_parser.cc" +#line 2451 "dhcp6_parser.cc" break; - case 327: // string_id: "constant string" -#line 1360 "dhcp6_parser.yy" + case 329: // string_id: "constant string" +#line 1368 "dhcp6_parser.yy" { ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2450 "dhcp6_parser.cc" +#line 2460 "dhcp6_parser.cc" break; - case 328: // $@53: %empty -#line 1365 "dhcp6_parser.yy" + case 330: // $@53: %empty +#line 1373 "dhcp6_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2458,46 +2468,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2462 "dhcp6_parser.cc" +#line 2472 "dhcp6_parser.cc" break; - case 329: // host_reservation_identifiers: "host-reservation-identifiers" $@53 ":" "[" host_reservation_identifiers_list "]" -#line 1371 "dhcp6_parser.yy" + case 331: // host_reservation_identifiers: "host-reservation-identifiers" $@53 ":" "[" host_reservation_identifiers_list "]" +#line 1379 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2471 "dhcp6_parser.cc" +#line 2481 "dhcp6_parser.cc" break; - case 332: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1378 "dhcp6_parser.yy" + case 334: // host_reservation_identifiers_list: host_reservation_identifiers_list "," +#line 1386 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2479 "dhcp6_parser.cc" +#line 2489 "dhcp6_parser.cc" break; - case 336: // hw_address_id: "hw-address" -#line 1388 "dhcp6_parser.yy" + case 338: // hw_address_id: "hw-address" +#line 1396 "dhcp6_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2488 "dhcp6_parser.cc" +#line 2498 "dhcp6_parser.cc" break; - case 337: // flex_id: "flex-id" -#line 1393 "dhcp6_parser.yy" + case 339: // flex_id: "flex-id" +#line 1401 "dhcp6_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2497 "dhcp6_parser.cc" +#line 2507 "dhcp6_parser.cc" break; - case 338: // $@54: %empty -#line 1400 "dhcp6_parser.yy" + case 340: // $@54: %empty +#line 1408 "dhcp6_parser.yy" { ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2505,20 +2515,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2509 "dhcp6_parser.cc" +#line 2519 "dhcp6_parser.cc" break; - case 339: // relay_supplied_options: "relay-supplied-options" $@54 ":" "[" list_content "]" -#line 1406 "dhcp6_parser.yy" + case 341: // relay_supplied_options: "relay-supplied-options" $@54 ":" "[" list_content "]" +#line 1414 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2518 "dhcp6_parser.cc" +#line 2528 "dhcp6_parser.cc" break; - case 340: // $@55: %empty -#line 1413 "dhcp6_parser.yy" + case 342: // $@55: %empty +#line 1421 "dhcp6_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2526,60 +2536,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2530 "dhcp6_parser.cc" +#line 2540 "dhcp6_parser.cc" break; - case 341: // dhcp_multi_threading: "multi-threading" $@55 ":" "{" multi_threading_params "}" -#line 1419 "dhcp6_parser.yy" + case 343: // dhcp_multi_threading: "multi-threading" $@55 ":" "{" multi_threading_params "}" +#line 1427 "dhcp6_parser.yy" { // 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 2541 "dhcp6_parser.cc" +#line 2551 "dhcp6_parser.cc" break; - case 344: // multi_threading_params: multi_threading_params "," -#line 1428 "dhcp6_parser.yy" + case 346: // multi_threading_params: multi_threading_params "," +#line 1436 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2549 "dhcp6_parser.cc" +#line 2559 "dhcp6_parser.cc" break; - case 351: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1441 "dhcp6_parser.yy" + case 353: // enable_multi_threading: "enable-multi-threading" ":" "boolean" +#line 1449 "dhcp6_parser.yy" { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2559 "dhcp6_parser.cc" +#line 2569 "dhcp6_parser.cc" break; - case 352: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1447 "dhcp6_parser.yy" + case 354: // thread_pool_size: "thread-pool-size" ":" "integer" +#line 1455 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2569 "dhcp6_parser.cc" +#line 2579 "dhcp6_parser.cc" break; - case 353: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1453 "dhcp6_parser.yy" + case 355: // packet_queue_size: "packet-queue-size" ":" "integer" +#line 1461 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2579 "dhcp6_parser.cc" +#line 2589 "dhcp6_parser.cc" break; - case 354: // $@56: %empty -#line 1459 "dhcp6_parser.yy" + case 356: // $@56: %empty +#line 1467 "dhcp6_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2587,113 +2597,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2591 "dhcp6_parser.cc" +#line 2601 "dhcp6_parser.cc" break; - case 355: // hooks_libraries: "hooks-libraries" $@56 ":" "[" hooks_libraries_list "]" -#line 1465 "dhcp6_parser.yy" + case 357: // hooks_libraries: "hooks-libraries" $@56 ":" "[" hooks_libraries_list "]" +#line 1473 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2600 "dhcp6_parser.cc" +#line 2610 "dhcp6_parser.cc" break; - case 360: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1476 "dhcp6_parser.yy" + case 362: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," +#line 1484 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2608 "dhcp6_parser.cc" +#line 2618 "dhcp6_parser.cc" break; - case 361: // $@57: %empty -#line 1481 "dhcp6_parser.yy" + case 363: // $@57: %empty +#line 1489 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2618 "dhcp6_parser.cc" +#line 2628 "dhcp6_parser.cc" break; - case 362: // hooks_library: "{" $@57 hooks_params "}" -#line 1485 "dhcp6_parser.yy" + case 364: // hooks_library: "{" $@57 hooks_params "}" +#line 1493 "dhcp6_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2628 "dhcp6_parser.cc" +#line 2638 "dhcp6_parser.cc" break; - case 363: // $@58: %empty -#line 1491 "dhcp6_parser.yy" + case 365: // $@58: %empty +#line 1499 "dhcp6_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2638 "dhcp6_parser.cc" +#line 2648 "dhcp6_parser.cc" break; - case 364: // sub_hooks_library: "{" $@58 hooks_params "}" -#line 1495 "dhcp6_parser.yy" + case 366: // sub_hooks_library: "{" $@58 hooks_params "}" +#line 1503 "dhcp6_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2648 "dhcp6_parser.cc" +#line 2658 "dhcp6_parser.cc" break; - case 367: // hooks_params: hooks_params "," -#line 1503 "dhcp6_parser.yy" + case 369: // hooks_params: hooks_params "," +#line 1511 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2656 "dhcp6_parser.cc" +#line 2666 "dhcp6_parser.cc" break; - case 371: // $@59: %empty -#line 1513 "dhcp6_parser.yy" + case 373: // $@59: %empty +#line 1521 "dhcp6_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2665 "dhcp6_parser.cc" +#line 2675 "dhcp6_parser.cc" break; - case 372: // library: "library" $@59 ":" "constant string" -#line 1516 "dhcp6_parser.yy" + case 374: // library: "library" $@59 ":" "constant string" +#line 1524 "dhcp6_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2675 "dhcp6_parser.cc" +#line 2685 "dhcp6_parser.cc" break; - case 373: // $@60: %empty -#line 1522 "dhcp6_parser.yy" + case 375: // $@60: %empty +#line 1530 "dhcp6_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2684 "dhcp6_parser.cc" +#line 2694 "dhcp6_parser.cc" break; - case 374: // parameters: "parameters" $@60 ":" map_value -#line 1525 "dhcp6_parser.yy" + case 376: // parameters: "parameters" $@60 ":" map_value +#line 1533 "dhcp6_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2693 "dhcp6_parser.cc" +#line 2703 "dhcp6_parser.cc" break; - case 375: // $@61: %empty -#line 1531 "dhcp6_parser.yy" + case 377: // $@61: %empty +#line 1539 "dhcp6_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2701,89 +2711,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2705 "dhcp6_parser.cc" +#line 2715 "dhcp6_parser.cc" break; - case 376: // expired_leases_processing: "expired-leases-processing" $@61 ":" "{" expired_leases_params "}" -#line 1537 "dhcp6_parser.yy" + case 378: // expired_leases_processing: "expired-leases-processing" $@61 ":" "{" expired_leases_params "}" +#line 1545 "dhcp6_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2715 "dhcp6_parser.cc" +#line 2725 "dhcp6_parser.cc" break; - case 379: // expired_leases_params: expired_leases_params "," -#line 1545 "dhcp6_parser.yy" + case 381: // expired_leases_params: expired_leases_params "," +#line 1553 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2723 "dhcp6_parser.cc" +#line 2733 "dhcp6_parser.cc" break; - case 386: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1558 "dhcp6_parser.yy" + case 388: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" +#line 1566 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2733 "dhcp6_parser.cc" +#line 2743 "dhcp6_parser.cc" break; - case 387: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1564 "dhcp6_parser.yy" + case 389: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" +#line 1572 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2743 "dhcp6_parser.cc" +#line 2753 "dhcp6_parser.cc" break; - case 388: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1570 "dhcp6_parser.yy" + case 390: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" +#line 1578 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2753 "dhcp6_parser.cc" +#line 2763 "dhcp6_parser.cc" break; - case 389: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1576 "dhcp6_parser.yy" + case 391: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" +#line 1584 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2763 "dhcp6_parser.cc" +#line 2773 "dhcp6_parser.cc" break; - case 390: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1582 "dhcp6_parser.yy" + case 392: // max_reclaim_time: "max-reclaim-time" ":" "integer" +#line 1590 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2773 "dhcp6_parser.cc" +#line 2783 "dhcp6_parser.cc" break; - case 391: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1588 "dhcp6_parser.yy" + case 393: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" +#line 1596 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2783 "dhcp6_parser.cc" +#line 2793 "dhcp6_parser.cc" break; - case 392: // $@62: %empty -#line 1597 "dhcp6_parser.yy" + case 394: // $@62: %empty +#line 1605 "dhcp6_parser.yy" { ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2791,38 +2801,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET6); } -#line 2795 "dhcp6_parser.cc" +#line 2805 "dhcp6_parser.cc" break; - case 393: // subnet6_list: "subnet6" $@62 ":" "[" subnet6_list_content "]" -#line 1603 "dhcp6_parser.yy" + case 395: // subnet6_list: "subnet6" $@62 ":" "[" subnet6_list_content "]" +#line 1611 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2804 "dhcp6_parser.cc" +#line 2814 "dhcp6_parser.cc" break; - case 398: // not_empty_subnet6_list: not_empty_subnet6_list "," -#line 1617 "dhcp6_parser.yy" + case 400: // not_empty_subnet6_list: not_empty_subnet6_list "," +#line 1625 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2812 "dhcp6_parser.cc" +#line 2822 "dhcp6_parser.cc" break; - case 399: // $@63: %empty -#line 1626 "dhcp6_parser.yy" + case 401: // $@63: %empty +#line 1634 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2822 "dhcp6_parser.cc" +#line 2832 "dhcp6_parser.cc" break; - case 400: // subnet6: "{" $@63 subnet6_params "}" -#line 1630 "dhcp6_parser.yy" + case 402: // subnet6: "{" $@63 subnet6_params "}" +#line 1638 "dhcp6_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2844,115 +2854,115 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2848 "dhcp6_parser.cc" +#line 2858 "dhcp6_parser.cc" break; - case 401: // $@64: %empty -#line 1652 "dhcp6_parser.yy" + case 403: // $@64: %empty +#line 1660 "dhcp6_parser.yy" { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2858 "dhcp6_parser.cc" +#line 2868 "dhcp6_parser.cc" break; - case 402: // sub_subnet6: "{" $@64 subnet6_params "}" -#line 1656 "dhcp6_parser.yy" + case 404: // sub_subnet6: "{" $@64 subnet6_params "}" +#line 1664 "dhcp6_parser.yy" { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2868 "dhcp6_parser.cc" +#line 2878 "dhcp6_parser.cc" break; - case 405: // subnet6_params: subnet6_params "," -#line 1665 "dhcp6_parser.yy" + case 407: // subnet6_params: subnet6_params "," +#line 1673 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2876 "dhcp6_parser.cc" +#line 2886 "dhcp6_parser.cc" break; - case 458: // $@65: %empty -#line 1725 "dhcp6_parser.yy" + case 460: // $@65: %empty +#line 1733 "dhcp6_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2885 "dhcp6_parser.cc" +#line 2895 "dhcp6_parser.cc" break; - case 459: // subnet: "subnet" $@65 ":" "constant string" -#line 1728 "dhcp6_parser.yy" + case 461: // subnet: "subnet" $@65 ":" "constant string" +#line 1736 "dhcp6_parser.yy" { ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2895 "dhcp6_parser.cc" +#line 2905 "dhcp6_parser.cc" break; - case 460: // $@66: %empty -#line 1734 "dhcp6_parser.yy" + case 462: // $@66: %empty +#line 1742 "dhcp6_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2904 "dhcp6_parser.cc" +#line 2914 "dhcp6_parser.cc" break; - case 461: // interface: "interface" $@66 ":" "constant string" -#line 1737 "dhcp6_parser.yy" + case 463: // interface: "interface" $@66 ":" "constant string" +#line 1745 "dhcp6_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2914 "dhcp6_parser.cc" +#line 2924 "dhcp6_parser.cc" break; - case 462: // $@67: %empty -#line 1743 "dhcp6_parser.yy" + case 464: // $@67: %empty +#line 1751 "dhcp6_parser.yy" { ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2923 "dhcp6_parser.cc" +#line 2933 "dhcp6_parser.cc" break; - case 463: // interface_id: "interface-id" $@67 ":" "constant string" -#line 1746 "dhcp6_parser.yy" + case 465: // interface_id: "interface-id" $@67 ":" "constant string" +#line 1754 "dhcp6_parser.yy" { 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 2933 "dhcp6_parser.cc" +#line 2943 "dhcp6_parser.cc" break; - case 464: // $@68: %empty -#line 1752 "dhcp6_parser.yy" + case 466: // $@68: %empty +#line 1760 "dhcp6_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2942 "dhcp6_parser.cc" +#line 2952 "dhcp6_parser.cc" break; - case 465: // client_class: "client-class" $@68 ":" "constant string" -#line 1755 "dhcp6_parser.yy" + case 467: // client_class: "client-class" $@68 ":" "constant string" +#line 1763 "dhcp6_parser.yy" { 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 2952 "dhcp6_parser.cc" +#line 2962 "dhcp6_parser.cc" break; - case 466: // $@69: %empty -#line 1762 "dhcp6_parser.yy" + case 468: // $@69: %empty +#line 1770 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2960,20 +2970,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2964 "dhcp6_parser.cc" +#line 2974 "dhcp6_parser.cc" break; - case 467: // network_client_classes: "client-classes" $@69 ":" list_strings -#line 1768 "dhcp6_parser.yy" + case 469: // network_client_classes: "client-classes" $@69 ":" list_strings +#line 1776 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2973 "dhcp6_parser.cc" +#line 2983 "dhcp6_parser.cc" break; - case 468: // $@70: %empty -#line 1774 "dhcp6_parser.yy" + case 470: // $@70: %empty +#line 1782 "dhcp6_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2981,20 +2991,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2985 "dhcp6_parser.cc" +#line 2995 "dhcp6_parser.cc" break; - case 469: // require_client_classes: "require-client-classes" $@70 ":" list_strings -#line 1780 "dhcp6_parser.yy" + case 471: // require_client_classes: "require-client-classes" $@70 ":" list_strings +#line 1788 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2994 "dhcp6_parser.cc" +#line 3004 "dhcp6_parser.cc" break; - case 470: // $@71: %empty -#line 1785 "dhcp6_parser.yy" + case 472: // $@71: %empty +#line 1793 "dhcp6_parser.yy" { ctx.unique("evaluate-additional-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3002,70 +3012,70 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3006 "dhcp6_parser.cc" +#line 3016 "dhcp6_parser.cc" break; - case 471: // evaluate_additional_classes: "evaluate-additional-classes" $@71 ":" list_strings -#line 1791 "dhcp6_parser.yy" + case 473: // evaluate_additional_classes: "evaluate-additional-classes" $@71 ":" list_strings +#line 1799 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3015 "dhcp6_parser.cc" +#line 3025 "dhcp6_parser.cc" break; - case 472: // reservations_global: "reservations-global" ":" "boolean" -#line 1796 "dhcp6_parser.yy" + case 474: // reservations_global: "reservations-global" ":" "boolean" +#line 1804 "dhcp6_parser.yy" { ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-global", b); } -#line 3025 "dhcp6_parser.cc" +#line 3035 "dhcp6_parser.cc" break; - case 473: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1802 "dhcp6_parser.yy" + case 475: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" +#line 1810 "dhcp6_parser.yy" { ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-in-subnet", b); } -#line 3035 "dhcp6_parser.cc" +#line 3045 "dhcp6_parser.cc" break; - case 474: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1808 "dhcp6_parser.yy" + case 476: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" +#line 1816 "dhcp6_parser.yy" { ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-out-of-pool", b); } -#line 3045 "dhcp6_parser.cc" +#line 3055 "dhcp6_parser.cc" break; - case 475: // id: "id" ":" "integer" -#line 1814 "dhcp6_parser.yy" + case 477: // id: "id" ":" "integer" +#line 1822 "dhcp6_parser.yy" { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 3055 "dhcp6_parser.cc" +#line 3065 "dhcp6_parser.cc" break; - case 476: // rapid_commit: "rapid-commit" ":" "boolean" -#line 1820 "dhcp6_parser.yy" + case 478: // rapid_commit: "rapid-commit" ":" "boolean" +#line 1828 "dhcp6_parser.yy" { ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location)); ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 3065 "dhcp6_parser.cc" +#line 3075 "dhcp6_parser.cc" break; - case 477: // $@72: %empty -#line 1828 "dhcp6_parser.yy" + case 479: // $@72: %empty +#line 1836 "dhcp6_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3073,54 +3083,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 3077 "dhcp6_parser.cc" +#line 3087 "dhcp6_parser.cc" break; - case 478: // shared_networks: "shared-networks" $@72 ":" "[" shared_networks_content "]" -#line 1834 "dhcp6_parser.yy" + case 480: // shared_networks: "shared-networks" $@72 ":" "[" shared_networks_content "]" +#line 1842 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3086 "dhcp6_parser.cc" +#line 3096 "dhcp6_parser.cc" break; - case 483: // shared_networks_list: shared_networks_list "," -#line 1847 "dhcp6_parser.yy" + case 485: // shared_networks_list: shared_networks_list "," +#line 1855 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3094 "dhcp6_parser.cc" +#line 3104 "dhcp6_parser.cc" break; - case 484: // $@73: %empty -#line 1852 "dhcp6_parser.yy" + case 486: // $@73: %empty +#line 1860 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3104 "dhcp6_parser.cc" +#line 3114 "dhcp6_parser.cc" break; - case 485: // shared_network: "{" $@73 shared_network_params "}" -#line 1856 "dhcp6_parser.yy" + case 487: // shared_network: "{" $@73 shared_network_params "}" +#line 1864 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 3112 "dhcp6_parser.cc" +#line 3122 "dhcp6_parser.cc" break; - case 488: // shared_network_params: shared_network_params "," -#line 1862 "dhcp6_parser.yy" + case 490: // shared_network_params: shared_network_params "," +#line 1870 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3120 "dhcp6_parser.cc" +#line 3130 "dhcp6_parser.cc" break; - case 538: // $@74: %empty -#line 1922 "dhcp6_parser.yy" + case 540: // $@74: %empty +#line 1930 "dhcp6_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3128,55 +3138,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 3132 "dhcp6_parser.cc" +#line 3142 "dhcp6_parser.cc" break; - case 539: // option_def_list: "option-def" $@74 ":" "[" option_def_list_content "]" -#line 1928 "dhcp6_parser.yy" + case 541: // option_def_list: "option-def" $@74 ":" "[" option_def_list_content "]" +#line 1936 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3141 "dhcp6_parser.cc" +#line 3151 "dhcp6_parser.cc" break; - case 540: // $@75: %empty -#line 1936 "dhcp6_parser.yy" + case 542: // $@75: %empty +#line 1944 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3150 "dhcp6_parser.cc" +#line 3160 "dhcp6_parser.cc" break; - case 541: // sub_option_def_list: "{" $@75 option_def_list "}" -#line 1939 "dhcp6_parser.yy" + case 543: // sub_option_def_list: "{" $@75 option_def_list "}" +#line 1947 "dhcp6_parser.yy" { // parsing completed } -#line 3158 "dhcp6_parser.cc" +#line 3168 "dhcp6_parser.cc" break; - case 546: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1951 "dhcp6_parser.yy" + case 548: // not_empty_option_def_list: not_empty_option_def_list "," +#line 1959 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3166 "dhcp6_parser.cc" +#line 3176 "dhcp6_parser.cc" break; - case 547: // $@76: %empty -#line 1958 "dhcp6_parser.yy" + case 549: // $@76: %empty +#line 1966 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3176 "dhcp6_parser.cc" +#line 3186 "dhcp6_parser.cc" break; - case 548: // option_def_entry: "{" $@76 option_def_params "}" -#line 1962 "dhcp6_parser.yy" + case 550: // option_def_entry: "{" $@76 option_def_params "}" +#line 1970 "dhcp6_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3184,21 +3194,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3188 "dhcp6_parser.cc" +#line 3198 "dhcp6_parser.cc" break; - case 549: // $@77: %empty -#line 1973 "dhcp6_parser.yy" + case 551: // $@77: %empty +#line 1981 "dhcp6_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3198 "dhcp6_parser.cc" +#line 3208 "dhcp6_parser.cc" break; - case 550: // sub_option_def: "{" $@77 option_def_params "}" -#line 1977 "dhcp6_parser.yy" + case 552: // sub_option_def: "{" $@77 option_def_params "}" +#line 1985 "dhcp6_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3206,115 +3216,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3210 "dhcp6_parser.cc" +#line 3220 "dhcp6_parser.cc" break; - case 555: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1993 "dhcp6_parser.yy" + case 557: // not_empty_option_def_params: not_empty_option_def_params "," +#line 2001 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3218 "dhcp6_parser.cc" +#line 3228 "dhcp6_parser.cc" break; - case 567: // code: "code" ":" "integer" -#line 2012 "dhcp6_parser.yy" + case 569: // code: "code" ":" "integer" +#line 2020 "dhcp6_parser.yy" { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 3228 "dhcp6_parser.cc" +#line 3238 "dhcp6_parser.cc" break; - case 569: // $@78: %empty -#line 2020 "dhcp6_parser.yy" + case 571: // $@78: %empty +#line 2028 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3237 "dhcp6_parser.cc" +#line 3247 "dhcp6_parser.cc" break; - case 570: // option_def_type: "type" $@78 ":" "constant string" -#line 2023 "dhcp6_parser.yy" + case 572: // option_def_type: "type" $@78 ":" "constant string" +#line 2031 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 3247 "dhcp6_parser.cc" +#line 3257 "dhcp6_parser.cc" break; - case 571: // $@79: %empty -#line 2029 "dhcp6_parser.yy" + case 573: // $@79: %empty +#line 2037 "dhcp6_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3256 "dhcp6_parser.cc" +#line 3266 "dhcp6_parser.cc" break; - case 572: // option_def_record_types: "record-types" $@79 ":" "constant string" -#line 2032 "dhcp6_parser.yy" + case 574: // option_def_record_types: "record-types" $@79 ":" "constant string" +#line 2040 "dhcp6_parser.yy" { 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 3266 "dhcp6_parser.cc" +#line 3276 "dhcp6_parser.cc" break; - case 573: // $@80: %empty -#line 2038 "dhcp6_parser.yy" + case 575: // $@80: %empty +#line 2046 "dhcp6_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3275 "dhcp6_parser.cc" +#line 3285 "dhcp6_parser.cc" break; - case 574: // space: "space" $@80 ":" "constant string" -#line 2041 "dhcp6_parser.yy" + case 576: // space: "space" $@80 ":" "constant string" +#line 2049 "dhcp6_parser.yy" { ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 3285 "dhcp6_parser.cc" +#line 3295 "dhcp6_parser.cc" break; - case 576: // $@81: %empty -#line 2049 "dhcp6_parser.yy" + case 578: // $@81: %empty +#line 2057 "dhcp6_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3294 "dhcp6_parser.cc" +#line 3304 "dhcp6_parser.cc" break; - case 577: // option_def_encapsulate: "encapsulate" $@81 ":" "constant string" -#line 2052 "dhcp6_parser.yy" + case 579: // option_def_encapsulate: "encapsulate" $@81 ":" "constant string" +#line 2060 "dhcp6_parser.yy" { ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 3304 "dhcp6_parser.cc" +#line 3314 "dhcp6_parser.cc" break; - case 578: // option_def_array: "array" ":" "boolean" -#line 2058 "dhcp6_parser.yy" + case 580: // option_def_array: "array" ":" "boolean" +#line 2066 "dhcp6_parser.yy" { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 3314 "dhcp6_parser.cc" +#line 3324 "dhcp6_parser.cc" break; - case 579: // $@82: %empty -#line 2068 "dhcp6_parser.yy" + case 581: // $@82: %empty +#line 2076 "dhcp6_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3322,123 +3332,123 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3326 "dhcp6_parser.cc" +#line 3336 "dhcp6_parser.cc" break; - case 580: // option_data_list: "option-data" $@82 ":" "[" option_data_list_content "]" -#line 2074 "dhcp6_parser.yy" + case 582: // option_data_list: "option-data" $@82 ":" "[" option_data_list_content "]" +#line 2082 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3335 "dhcp6_parser.cc" +#line 3345 "dhcp6_parser.cc" break; - case 585: // not_empty_option_data_list: not_empty_option_data_list "," -#line 2089 "dhcp6_parser.yy" + case 587: // not_empty_option_data_list: not_empty_option_data_list "," +#line 2097 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3343 "dhcp6_parser.cc" +#line 3353 "dhcp6_parser.cc" break; - case 586: // $@83: %empty -#line 2096 "dhcp6_parser.yy" + case 588: // $@83: %empty +#line 2104 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3353 "dhcp6_parser.cc" +#line 3363 "dhcp6_parser.cc" break; - case 587: // option_data_entry: "{" $@83 option_data_params "}" -#line 2100 "dhcp6_parser.yy" + case 589: // option_data_entry: "{" $@83 option_data_params "}" +#line 2108 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3362 "dhcp6_parser.cc" +#line 3372 "dhcp6_parser.cc" break; - case 588: // $@84: %empty -#line 2108 "dhcp6_parser.yy" + case 590: // $@84: %empty +#line 2116 "dhcp6_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3372 "dhcp6_parser.cc" +#line 3382 "dhcp6_parser.cc" break; - case 589: // sub_option_data: "{" $@84 option_data_params "}" -#line 2112 "dhcp6_parser.yy" + case 591: // sub_option_data: "{" $@84 option_data_params "}" +#line 2120 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3381 "dhcp6_parser.cc" +#line 3391 "dhcp6_parser.cc" break; - case 594: // not_empty_option_data_params: not_empty_option_data_params "," -#line 2128 "dhcp6_parser.yy" + case 596: // not_empty_option_data_params: not_empty_option_data_params "," +#line 2136 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3389 "dhcp6_parser.cc" +#line 3399 "dhcp6_parser.cc" break; - case 607: // $@85: %empty -#line 2150 "dhcp6_parser.yy" + case 609: // $@85: %empty +#line 2158 "dhcp6_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3398 "dhcp6_parser.cc" +#line 3408 "dhcp6_parser.cc" break; - case 608: // option_data_data: "data" $@85 ":" "constant string" -#line 2153 "dhcp6_parser.yy" + case 610: // option_data_data: "data" $@85 ":" "constant string" +#line 2161 "dhcp6_parser.yy" { ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 3408 "dhcp6_parser.cc" +#line 3418 "dhcp6_parser.cc" break; - case 611: // option_data_csv_format: "csv-format" ":" "boolean" -#line 2163 "dhcp6_parser.yy" + case 613: // option_data_csv_format: "csv-format" ":" "boolean" +#line 2171 "dhcp6_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", csv); } -#line 3418 "dhcp6_parser.cc" +#line 3428 "dhcp6_parser.cc" break; - case 612: // option_data_always_send: "always-send" ":" "boolean" -#line 2169 "dhcp6_parser.yy" + case 614: // option_data_always_send: "always-send" ":" "boolean" +#line 2177 "dhcp6_parser.yy" { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 3428 "dhcp6_parser.cc" +#line 3438 "dhcp6_parser.cc" break; - case 613: // option_data_never_send: "never-send" ":" "boolean" -#line 2175 "dhcp6_parser.yy" + case 615: // option_data_never_send: "never-send" ":" "boolean" +#line 2183 "dhcp6_parser.yy" { ctx.unique("never-send", ctx.loc2pos(yystack_[2].location)); ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("never-send", cancel); } -#line 3438 "dhcp6_parser.cc" +#line 3448 "dhcp6_parser.cc" break; - case 614: // $@86: %empty -#line 2181 "dhcp6_parser.yy" + case 616: // $@86: %empty +#line 2189 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3446,20 +3456,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3450 "dhcp6_parser.cc" +#line 3460 "dhcp6_parser.cc" break; - case 615: // option_data_client_classes: "client-classes" $@86 ":" list_strings -#line 2187 "dhcp6_parser.yy" + case 617: // option_data_client_classes: "client-classes" $@86 ":" list_strings +#line 2195 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3459 "dhcp6_parser.cc" +#line 3469 "dhcp6_parser.cc" break; - case 616: // $@87: %empty -#line 2195 "dhcp6_parser.yy" + case 618: // $@87: %empty +#line 2203 "dhcp6_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3467,113 +3477,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3471 "dhcp6_parser.cc" +#line 3481 "dhcp6_parser.cc" break; - case 617: // pools_list: "pools" $@87 ":" "[" pools_list_content "]" -#line 2201 "dhcp6_parser.yy" + case 619: // pools_list: "pools" $@87 ":" "[" pools_list_content "]" +#line 2209 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3480 "dhcp6_parser.cc" +#line 3490 "dhcp6_parser.cc" break; - case 622: // not_empty_pools_list: not_empty_pools_list "," -#line 2214 "dhcp6_parser.yy" + case 624: // not_empty_pools_list: not_empty_pools_list "," +#line 2222 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3488 "dhcp6_parser.cc" +#line 3498 "dhcp6_parser.cc" break; - case 623: // $@88: %empty -#line 2219 "dhcp6_parser.yy" + case 625: // $@88: %empty +#line 2227 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3498 "dhcp6_parser.cc" +#line 3508 "dhcp6_parser.cc" break; - case 624: // pool_list_entry: "{" $@88 pool_params "}" -#line 2223 "dhcp6_parser.yy" + case 626: // pool_list_entry: "{" $@88 pool_params "}" +#line 2231 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3508 "dhcp6_parser.cc" +#line 3518 "dhcp6_parser.cc" break; - case 625: // $@89: %empty -#line 2229 "dhcp6_parser.yy" + case 627: // $@89: %empty +#line 2237 "dhcp6_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3518 "dhcp6_parser.cc" +#line 3528 "dhcp6_parser.cc" break; - case 626: // sub_pool6: "{" $@89 pool_params "}" -#line 2233 "dhcp6_parser.yy" + case 628: // sub_pool6: "{" $@89 pool_params "}" +#line 2241 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3528 "dhcp6_parser.cc" +#line 3538 "dhcp6_parser.cc" break; - case 629: // pool_params: pool_params "," -#line 2241 "dhcp6_parser.yy" + case 631: // pool_params: pool_params "," +#line 2249 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3536 "dhcp6_parser.cc" +#line 3546 "dhcp6_parser.cc" break; - case 654: // $@90: %empty -#line 2272 "dhcp6_parser.yy" + case 656: // $@90: %empty +#line 2280 "dhcp6_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3545 "dhcp6_parser.cc" +#line 3555 "dhcp6_parser.cc" break; - case 655: // pool_entry: "pool" $@90 ":" "constant string" -#line 2275 "dhcp6_parser.yy" + case 657: // pool_entry: "pool" $@90 ":" "constant string" +#line 2283 "dhcp6_parser.yy" { ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 3555 "dhcp6_parser.cc" +#line 3565 "dhcp6_parser.cc" break; - case 656: // pool_id: "pool-id" ":" "integer" -#line 2281 "dhcp6_parser.yy" + case 658: // pool_id: "pool-id" ":" "integer" +#line 2289 "dhcp6_parser.yy" { ctx.unique("pool-id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool-id", id); } -#line 3565 "dhcp6_parser.cc" +#line 3575 "dhcp6_parser.cc" break; - case 657: // $@91: %empty -#line 2287 "dhcp6_parser.yy" + case 659: // $@91: %empty +#line 2295 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3573 "dhcp6_parser.cc" +#line 3583 "dhcp6_parser.cc" break; - case 658: // user_context: "user-context" $@91 ":" map_value -#line 2289 "dhcp6_parser.yy" + case 660: // user_context: "user-context" $@91 ":" map_value +#line 2297 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3596,19 +3606,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3600 "dhcp6_parser.cc" +#line 3610 "dhcp6_parser.cc" break; - case 659: // $@92: %empty -#line 2312 "dhcp6_parser.yy" + case 661: // $@92: %empty +#line 2320 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3608 "dhcp6_parser.cc" +#line 3618 "dhcp6_parser.cc" break; - case 660: // comment: "comment" $@92 ":" "constant string" -#line 2314 "dhcp6_parser.yy" + case 662: // comment: "comment" $@92 ":" "constant string" +#line 2322 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3633,11 +3643,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3637 "dhcp6_parser.cc" +#line 3647 "dhcp6_parser.cc" break; - case 661: // $@93: %empty -#line 2342 "dhcp6_parser.yy" + case 663: // $@93: %empty +#line 2350 "dhcp6_parser.yy" { ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3645,38 +3655,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.PD_POOLS); } -#line 3649 "dhcp6_parser.cc" +#line 3659 "dhcp6_parser.cc" break; - case 662: // pd_pools_list: "pd-pools" $@93 ":" "[" pd_pools_list_content "]" -#line 2348 "dhcp6_parser.yy" + case 664: // pd_pools_list: "pd-pools" $@93 ":" "[" pd_pools_list_content "]" +#line 2356 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3658 "dhcp6_parser.cc" +#line 3668 "dhcp6_parser.cc" break; - case 667: // not_empty_pd_pools_list: not_empty_pd_pools_list "," -#line 2361 "dhcp6_parser.yy" + case 669: // not_empty_pd_pools_list: not_empty_pd_pools_list "," +#line 2369 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3666 "dhcp6_parser.cc" +#line 3676 "dhcp6_parser.cc" break; - case 668: // $@94: %empty -#line 2366 "dhcp6_parser.yy" + case 670: // $@94: %empty +#line 2374 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3676 "dhcp6_parser.cc" +#line 3686 "dhcp6_parser.cc" break; - case 669: // pd_pool_entry: "{" $@94 pd_pool_params "}" -#line 2370 "dhcp6_parser.yy" + case 671: // pd_pool_entry: "{" $@94 pd_pool_params "}" +#line 2378 "dhcp6_parser.yy" { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3684,21 +3694,21 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3688 "dhcp6_parser.cc" +#line 3698 "dhcp6_parser.cc" break; - case 670: // $@95: %empty -#line 2378 "dhcp6_parser.yy" + case 672: // $@95: %empty +#line 2386 "dhcp6_parser.yy" { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3698 "dhcp6_parser.cc" +#line 3708 "dhcp6_parser.cc" break; - case 671: // sub_pd_pool: "{" $@95 pd_pool_params "}" -#line 2382 "dhcp6_parser.yy" + case 673: // sub_pd_pool: "{" $@95 pd_pool_params "}" +#line 2390 "dhcp6_parser.yy" { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3706,87 +3716,87 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3710 "dhcp6_parser.cc" +#line 3720 "dhcp6_parser.cc" break; - case 674: // pd_pool_params: pd_pool_params "," -#line 2392 "dhcp6_parser.yy" + case 676: // pd_pool_params: pd_pool_params "," +#line 2400 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3718 "dhcp6_parser.cc" +#line 3728 "dhcp6_parser.cc" break; - case 689: // $@96: %empty -#line 2413 "dhcp6_parser.yy" + case 691: // $@96: %empty +#line 2421 "dhcp6_parser.yy" { ctx.unique("prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3727 "dhcp6_parser.cc" +#line 3737 "dhcp6_parser.cc" break; - case 690: // pd_prefix: "prefix" $@96 ":" "constant string" -#line 2416 "dhcp6_parser.yy" + case 692: // pd_prefix: "prefix" $@96 ":" "constant string" +#line 2424 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); ctx.leave(); } -#line 3737 "dhcp6_parser.cc" +#line 3747 "dhcp6_parser.cc" break; - case 691: // pd_prefix_len: "prefix-len" ":" "integer" -#line 2422 "dhcp6_parser.yy" + case 693: // pd_prefix_len: "prefix-len" ":" "integer" +#line 2430 "dhcp6_parser.yy" { ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); } -#line 3747 "dhcp6_parser.cc" +#line 3757 "dhcp6_parser.cc" break; - case 692: // $@97: %empty -#line 2428 "dhcp6_parser.yy" + case 694: // $@97: %empty +#line 2436 "dhcp6_parser.yy" { ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3756 "dhcp6_parser.cc" +#line 3766 "dhcp6_parser.cc" break; - case 693: // excluded_prefix: "excluded-prefix" $@97 ":" "constant string" -#line 2431 "dhcp6_parser.yy" + case 695: // excluded_prefix: "excluded-prefix" $@97 ":" "constant string" +#line 2439 "dhcp6_parser.yy" { 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 3766 "dhcp6_parser.cc" +#line 3776 "dhcp6_parser.cc" break; - case 694: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" -#line 2437 "dhcp6_parser.yy" + case 696: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" +#line 2445 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("excluded-prefix-len", prf); } -#line 3776 "dhcp6_parser.cc" +#line 3786 "dhcp6_parser.cc" break; - case 695: // pd_delegated_len: "delegated-len" ":" "integer" -#line 2443 "dhcp6_parser.yy" + case 697: // pd_delegated_len: "delegated-len" ":" "integer" +#line 2451 "dhcp6_parser.yy" { ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location)); ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); } -#line 3786 "dhcp6_parser.cc" +#line 3796 "dhcp6_parser.cc" break; - case 696: // $@98: %empty -#line 2452 "dhcp6_parser.yy" + case 698: // $@98: %empty +#line 2460 "dhcp6_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3794,74 +3804,74 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3798 "dhcp6_parser.cc" +#line 3808 "dhcp6_parser.cc" break; - case 697: // reservations: "reservations" $@98 ":" "[" reservations_list "]" -#line 2458 "dhcp6_parser.yy" + case 699: // reservations: "reservations" $@98 ":" "[" reservations_list "]" +#line 2466 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3807 "dhcp6_parser.cc" +#line 3817 "dhcp6_parser.cc" break; - case 702: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2469 "dhcp6_parser.yy" + case 704: // not_empty_reservations_list: not_empty_reservations_list "," +#line 2477 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3815 "dhcp6_parser.cc" +#line 3825 "dhcp6_parser.cc" break; - case 703: // $@99: %empty -#line 2474 "dhcp6_parser.yy" + case 705: // $@99: %empty +#line 2482 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3825 "dhcp6_parser.cc" +#line 3835 "dhcp6_parser.cc" break; - case 704: // reservation: "{" $@99 reservation_params "}" -#line 2478 "dhcp6_parser.yy" + case 706: // reservation: "{" $@99 reservation_params "}" +#line 2486 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3834 "dhcp6_parser.cc" +#line 3844 "dhcp6_parser.cc" break; - case 705: // $@100: %empty -#line 2483 "dhcp6_parser.yy" + case 707: // $@100: %empty +#line 2491 "dhcp6_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3844 "dhcp6_parser.cc" +#line 3854 "dhcp6_parser.cc" break; - case 706: // sub_reservation: "{" $@100 reservation_params "}" -#line 2487 "dhcp6_parser.yy" + case 708: // sub_reservation: "{" $@100 reservation_params "}" +#line 2495 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3853 "dhcp6_parser.cc" +#line 3863 "dhcp6_parser.cc" break; - case 711: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2498 "dhcp6_parser.yy" + case 713: // not_empty_reservation_params: not_empty_reservation_params "," +#line 2506 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3861 "dhcp6_parser.cc" +#line 3871 "dhcp6_parser.cc" break; - case 724: // $@101: %empty -#line 2518 "dhcp6_parser.yy" + case 726: // $@101: %empty +#line 2526 "dhcp6_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3869,20 +3879,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3873 "dhcp6_parser.cc" +#line 3883 "dhcp6_parser.cc" break; - case 725: // ip_addresses: "ip-addresses" $@101 ":" list_strings -#line 2524 "dhcp6_parser.yy" + case 727: // ip_addresses: "ip-addresses" $@101 ":" list_strings +#line 2532 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3882 "dhcp6_parser.cc" +#line 3892 "dhcp6_parser.cc" break; - case 726: // $@102: %empty -#line 2529 "dhcp6_parser.yy" + case 728: // $@102: %empty +#line 2537 "dhcp6_parser.yy" { ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3890,20 +3900,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3894 "dhcp6_parser.cc" +#line 3904 "dhcp6_parser.cc" break; - case 727: // prefixes: "prefixes" $@102 ":" list_strings -#line 2535 "dhcp6_parser.yy" + case 729: // prefixes: "prefixes" $@102 ":" list_strings +#line 2543 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3903 "dhcp6_parser.cc" +#line 3913 "dhcp6_parser.cc" break; - case 728: // $@103: %empty -#line 2540 "dhcp6_parser.yy" + case 730: // $@103: %empty +#line 2548 "dhcp6_parser.yy" { ctx.unique("excluded-prefixes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3911,96 +3921,96 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3915 "dhcp6_parser.cc" +#line 3925 "dhcp6_parser.cc" break; - case 729: // excluded_prefixes: "excluded-prefixes" $@103 ":" list_strings -#line 2546 "dhcp6_parser.yy" + case 731: // excluded_prefixes: "excluded-prefixes" $@103 ":" list_strings +#line 2554 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3924 "dhcp6_parser.cc" +#line 3934 "dhcp6_parser.cc" break; - case 730: // $@104: %empty -#line 2551 "dhcp6_parser.yy" + case 732: // $@104: %empty +#line 2559 "dhcp6_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3933 "dhcp6_parser.cc" +#line 3943 "dhcp6_parser.cc" break; - case 731: // duid: "duid" $@104 ":" "constant string" -#line 2554 "dhcp6_parser.yy" + case 733: // duid: "duid" $@104 ":" "constant string" +#line 2562 "dhcp6_parser.yy" { ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3943 "dhcp6_parser.cc" +#line 3953 "dhcp6_parser.cc" break; - case 732: // $@105: %empty -#line 2560 "dhcp6_parser.yy" + case 734: // $@105: %empty +#line 2568 "dhcp6_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3952 "dhcp6_parser.cc" +#line 3962 "dhcp6_parser.cc" break; - case 733: // hw_address: "hw-address" $@105 ":" "constant string" -#line 2563 "dhcp6_parser.yy" + case 735: // hw_address: "hw-address" $@105 ":" "constant string" +#line 2571 "dhcp6_parser.yy" { 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 3962 "dhcp6_parser.cc" +#line 3972 "dhcp6_parser.cc" break; - case 734: // $@106: %empty -#line 2569 "dhcp6_parser.yy" + case 736: // $@106: %empty +#line 2577 "dhcp6_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3971 "dhcp6_parser.cc" +#line 3981 "dhcp6_parser.cc" break; - case 735: // hostname: "hostname" $@106 ":" "constant string" -#line 2572 "dhcp6_parser.yy" + case 737: // hostname: "hostname" $@106 ":" "constant string" +#line 2580 "dhcp6_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3981 "dhcp6_parser.cc" +#line 3991 "dhcp6_parser.cc" break; - case 736: // $@107: %empty -#line 2578 "dhcp6_parser.yy" + case 738: // $@107: %empty +#line 2586 "dhcp6_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3990 "dhcp6_parser.cc" +#line 4000 "dhcp6_parser.cc" break; - case 737: // flex_id_value: "flex-id" $@107 ":" "constant string" -#line 2581 "dhcp6_parser.yy" + case 739: // flex_id_value: "flex-id" $@107 ":" "constant string" +#line 2589 "dhcp6_parser.yy" { 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 4000 "dhcp6_parser.cc" +#line 4010 "dhcp6_parser.cc" break; - case 738: // $@108: %empty -#line 2587 "dhcp6_parser.yy" + case 740: // $@108: %empty +#line 2595 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4008,20 +4018,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 4012 "dhcp6_parser.cc" +#line 4022 "dhcp6_parser.cc" break; - case 739: // reservation_client_classes: "client-classes" $@108 ":" list_strings -#line 2593 "dhcp6_parser.yy" + case 741: // reservation_client_classes: "client-classes" $@108 ":" list_strings +#line 2601 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4021 "dhcp6_parser.cc" +#line 4031 "dhcp6_parser.cc" break; - case 740: // $@109: %empty -#line 2601 "dhcp6_parser.yy" + case 742: // $@109: %empty +#line 2609 "dhcp6_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4029,20 +4039,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 4033 "dhcp6_parser.cc" +#line 4043 "dhcp6_parser.cc" break; - case 741: // relay: "relay" $@109 ":" "{" relay_map "}" -#line 2607 "dhcp6_parser.yy" + case 743: // relay: "relay" $@109 ":" "{" relay_map "}" +#line 2615 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4042 "dhcp6_parser.cc" +#line 4052 "dhcp6_parser.cc" break; - case 743: // $@110: %empty -#line 2618 "dhcp6_parser.yy" + case 745: // $@110: %empty +#line 2626 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4050,114 +4060,114 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 4054 "dhcp6_parser.cc" +#line 4064 "dhcp6_parser.cc" break; - case 744: // client_classes: "client-classes" $@110 ":" "[" client_classes_list "]" -#line 2624 "dhcp6_parser.yy" + case 746: // client_classes: "client-classes" $@110 ":" "[" client_classes_list "]" +#line 2632 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4063 "dhcp6_parser.cc" +#line 4073 "dhcp6_parser.cc" break; - case 747: // client_classes_list: client_classes_list "," -#line 2631 "dhcp6_parser.yy" + case 749: // client_classes_list: client_classes_list "," +#line 2639 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4071 "dhcp6_parser.cc" +#line 4081 "dhcp6_parser.cc" break; - case 748: // $@111: %empty -#line 2636 "dhcp6_parser.yy" + case 750: // $@111: %empty +#line 2644 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4081 "dhcp6_parser.cc" +#line 4091 "dhcp6_parser.cc" break; - case 749: // client_class_entry: "{" $@111 client_class_params "}" -#line 2640 "dhcp6_parser.yy" + case 751: // client_class_entry: "{" $@111 client_class_params "}" +#line 2648 "dhcp6_parser.yy" { // 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 4091 "dhcp6_parser.cc" +#line 4101 "dhcp6_parser.cc" break; - case 754: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2652 "dhcp6_parser.yy" + case 756: // not_empty_client_class_params: not_empty_client_class_params "," +#line 2660 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4099 "dhcp6_parser.cc" +#line 4109 "dhcp6_parser.cc" break; - case 771: // $@112: %empty -#line 2676 "dhcp6_parser.yy" + case 773: // $@112: %empty +#line 2684 "dhcp6_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4108 "dhcp6_parser.cc" +#line 4118 "dhcp6_parser.cc" break; - case 772: // client_class_test: "test" $@112 ":" "constant string" -#line 2679 "dhcp6_parser.yy" + case 774: // client_class_test: "test" $@112 ":" "constant string" +#line 2687 "dhcp6_parser.yy" { ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 4118 "dhcp6_parser.cc" +#line 4128 "dhcp6_parser.cc" break; - case 773: // $@113: %empty -#line 2685 "dhcp6_parser.yy" + case 775: // $@113: %empty +#line 2693 "dhcp6_parser.yy" { ctx.unique("template-test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4127 "dhcp6_parser.cc" +#line 4137 "dhcp6_parser.cc" break; - case 774: // client_class_template_test: "template-test" $@113 ":" "constant string" -#line 2688 "dhcp6_parser.yy" + case 776: // client_class_template_test: "template-test" $@113 ":" "constant string" +#line 2696 "dhcp6_parser.yy" { ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("template-test", template_test); ctx.leave(); } -#line 4137 "dhcp6_parser.cc" +#line 4147 "dhcp6_parser.cc" break; - case 775: // only_if_required: "only-if-required" ":" "boolean" -#line 2695 "dhcp6_parser.yy" + case 777: // only_if_required: "only-if-required" ":" "boolean" +#line 2703 "dhcp6_parser.yy" { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 4147 "dhcp6_parser.cc" +#line 4157 "dhcp6_parser.cc" break; - case 776: // only_in_additional_list: "only-in-additional-list" ":" "boolean" -#line 2701 "dhcp6_parser.yy" + case 778: // only_in_additional_list: "only-in-additional-list" ":" "boolean" +#line 2709 "dhcp6_parser.yy" { ctx.unique("only-in-additional-list", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-in-additional-list", b); } -#line 4157 "dhcp6_parser.cc" +#line 4167 "dhcp6_parser.cc" break; - case 777: // $@114: %empty -#line 2710 "dhcp6_parser.yy" + case 779: // $@114: %empty +#line 2718 "dhcp6_parser.yy" { ctx.unique("server-id", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4165,125 +4175,125 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER_ID); } -#line 4169 "dhcp6_parser.cc" +#line 4179 "dhcp6_parser.cc" break; - case 778: // server_id: "server-id" $@114 ":" "{" server_id_params "}" -#line 2716 "dhcp6_parser.yy" + case 780: // server_id: "server-id" $@114 ":" "{" server_id_params "}" +#line 2724 "dhcp6_parser.yy" { // 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 4180 "dhcp6_parser.cc" +#line 4190 "dhcp6_parser.cc" break; - case 781: // server_id_params: server_id_params "," -#line 2725 "dhcp6_parser.yy" + case 783: // server_id_params: server_id_params "," +#line 2733 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4188 "dhcp6_parser.cc" +#line 4198 "dhcp6_parser.cc" break; - case 791: // $@115: %empty -#line 2741 "dhcp6_parser.yy" + case 793: // $@115: %empty +#line 2749 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DUID_TYPE); } -#line 4197 "dhcp6_parser.cc" +#line 4207 "dhcp6_parser.cc" break; - case 792: // server_id_type: "type" $@115 ":" duid_type -#line 2744 "dhcp6_parser.yy" + case 794: // server_id_type: "type" $@115 ":" duid_type +#line 2752 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4206 "dhcp6_parser.cc" +#line 4216 "dhcp6_parser.cc" break; - case 793: // duid_type: "LLT" -#line 2749 "dhcp6_parser.yy" + case 795: // duid_type: "LLT" +#line 2757 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 4212 "dhcp6_parser.cc" +#line 4222 "dhcp6_parser.cc" break; - case 794: // duid_type: "EN" -#line 2750 "dhcp6_parser.yy" + case 796: // duid_type: "EN" +#line 2758 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 4218 "dhcp6_parser.cc" +#line 4228 "dhcp6_parser.cc" break; - case 795: // duid_type: "LL" -#line 2751 "dhcp6_parser.yy" + case 797: // duid_type: "LL" +#line 2759 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 4224 "dhcp6_parser.cc" +#line 4234 "dhcp6_parser.cc" break; - case 796: // htype: "htype" ":" "integer" -#line 2754 "dhcp6_parser.yy" + case 798: // htype: "htype" ":" "integer" +#line 2762 "dhcp6_parser.yy" { ctx.unique("htype", ctx.loc2pos(yystack_[2].location)); ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); } -#line 4234 "dhcp6_parser.cc" +#line 4244 "dhcp6_parser.cc" break; - case 797: // $@116: %empty -#line 2760 "dhcp6_parser.yy" + case 799: // $@116: %empty +#line 2768 "dhcp6_parser.yy" { ctx.unique("identifier", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4243 "dhcp6_parser.cc" +#line 4253 "dhcp6_parser.cc" break; - case 798: // identifier: "identifier" $@116 ":" "constant string" -#line 2763 "dhcp6_parser.yy" + case 800: // identifier: "identifier" $@116 ":" "constant string" +#line 2771 "dhcp6_parser.yy" { ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); ctx.leave(); } -#line 4253 "dhcp6_parser.cc" +#line 4263 "dhcp6_parser.cc" break; - case 799: // time: "time" ":" "integer" -#line 2769 "dhcp6_parser.yy" + case 801: // time: "time" ":" "integer" +#line 2777 "dhcp6_parser.yy" { ctx.unique("time", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); } -#line 4263 "dhcp6_parser.cc" +#line 4273 "dhcp6_parser.cc" break; - case 800: // enterprise_id: "enterprise-id" ":" "integer" -#line 2775 "dhcp6_parser.yy" + case 802: // enterprise_id: "enterprise-id" ":" "integer" +#line 2783 "dhcp6_parser.yy" { ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); } -#line 4273 "dhcp6_parser.cc" +#line 4283 "dhcp6_parser.cc" break; - case 801: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2783 "dhcp6_parser.yy" + case 803: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" +#line 2791 "dhcp6_parser.yy" { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 4283 "dhcp6_parser.cc" +#line 4293 "dhcp6_parser.cc" break; - case 802: // $@117: %empty -#line 2791 "dhcp6_parser.yy" + case 804: // $@117: %empty +#line 2799 "dhcp6_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location)); @@ -4292,20 +4302,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 4296 "dhcp6_parser.cc" +#line 4306 "dhcp6_parser.cc" break; - case 803: // control_socket: "control-socket" $@117 ":" "{" control_socket_params "}" -#line 2798 "dhcp6_parser.yy" + case 805: // control_socket: "control-socket" $@117 ":" "{" control_socket_params "}" +#line 2806 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4305 "dhcp6_parser.cc" +#line 4315 "dhcp6_parser.cc" break; - case 804: // $@118: %empty -#line 2803 "dhcp6_parser.yy" + case 806: // $@118: %empty +#line 2811 "dhcp6_parser.yy" { ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location)); ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); @@ -4314,150 +4324,150 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONTROL_SOCKET); } -#line 4318 "dhcp6_parser.cc" +#line 4328 "dhcp6_parser.cc" break; - case 805: // control_sockets: "control-sockets" $@118 ":" "[" control_socket_list "]" -#line 2810 "dhcp6_parser.yy" + case 807: // control_sockets: "control-sockets" $@118 ":" "[" control_socket_list "]" +#line 2818 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4327 "dhcp6_parser.cc" +#line 4337 "dhcp6_parser.cc" break; - case 810: // not_empty_control_socket_list: not_empty_control_socket_list "," -#line 2821 "dhcp6_parser.yy" + case 812: // not_empty_control_socket_list: not_empty_control_socket_list "," +#line 2829 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4335 "dhcp6_parser.cc" +#line 4345 "dhcp6_parser.cc" break; - case 811: // $@119: %empty -#line 2826 "dhcp6_parser.yy" + case 813: // $@119: %empty +#line 2834 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4345 "dhcp6_parser.cc" +#line 4355 "dhcp6_parser.cc" break; - case 812: // control_socket_entry: "{" $@119 control_socket_params "}" -#line 2830 "dhcp6_parser.yy" + case 814: // control_socket_entry: "{" $@119 control_socket_params "}" +#line 2838 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4353 "dhcp6_parser.cc" +#line 4363 "dhcp6_parser.cc" break; - case 815: // control_socket_params: control_socket_params "," -#line 2836 "dhcp6_parser.yy" + case 817: // control_socket_params: control_socket_params "," +#line 2844 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4361 "dhcp6_parser.cc" +#line 4371 "dhcp6_parser.cc" break; - case 829: // $@120: %empty -#line 2856 "dhcp6_parser.yy" + case 831: // $@120: %empty +#line 2864 "dhcp6_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.CONTROL_SOCKET_TYPE); } -#line 4370 "dhcp6_parser.cc" +#line 4380 "dhcp6_parser.cc" break; - case 830: // control_socket_type: "socket-type" $@120 ":" control_socket_type_value -#line 2859 "dhcp6_parser.yy" + case 832: // control_socket_type: "socket-type" $@120 ":" control_socket_type_value +#line 2867 "dhcp6_parser.yy" { ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4379 "dhcp6_parser.cc" +#line 4389 "dhcp6_parser.cc" break; - case 831: // control_socket_type_value: "unix" -#line 2865 "dhcp6_parser.yy" + case 833: // control_socket_type_value: "unix" +#line 2873 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } -#line 4385 "dhcp6_parser.cc" +#line 4395 "dhcp6_parser.cc" break; - case 832: // control_socket_type_value: "http" -#line 2866 "dhcp6_parser.yy" + case 834: // control_socket_type_value: "http" +#line 2874 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); } -#line 4391 "dhcp6_parser.cc" +#line 4401 "dhcp6_parser.cc" break; - case 833: // control_socket_type_value: "https" -#line 2867 "dhcp6_parser.yy" + case 835: // control_socket_type_value: "https" +#line 2875 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("https", ctx.loc2pos(yystack_[0].location))); } -#line 4397 "dhcp6_parser.cc" +#line 4407 "dhcp6_parser.cc" break; - case 834: // $@121: %empty -#line 2870 "dhcp6_parser.yy" + case 836: // $@121: %empty +#line 2878 "dhcp6_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4407 "dhcp6_parser.cc" +#line 4417 "dhcp6_parser.cc" break; - case 835: // control_socket_name: "socket-name" $@121 ":" "constant string" -#line 2874 "dhcp6_parser.yy" + case 837: // control_socket_name: "socket-name" $@121 ":" "constant string" +#line 2882 "dhcp6_parser.yy" { 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 4417 "dhcp6_parser.cc" +#line 4427 "dhcp6_parser.cc" break; - case 836: // $@122: %empty -#line 2880 "dhcp6_parser.yy" + case 838: // $@122: %empty +#line 2888 "dhcp6_parser.yy" { ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location)); ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4427 "dhcp6_parser.cc" +#line 4437 "dhcp6_parser.cc" break; - case 837: // control_socket_address: "socket-address" $@122 ":" "constant string" -#line 2884 "dhcp6_parser.yy" + case 839: // control_socket_address: "socket-address" $@122 ":" "constant string" +#line 2892 "dhcp6_parser.yy" { ElementPtr address(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-address", address); ctx.leave(); } -#line 4437 "dhcp6_parser.cc" +#line 4447 "dhcp6_parser.cc" break; - case 838: // control_socket_port: "socket-port" ":" "integer" -#line 2890 "dhcp6_parser.yy" + case 840: // control_socket_port: "socket-port" ":" "integer" +#line 2898 "dhcp6_parser.yy" { ctx.unique("socket-port", ctx.loc2pos(yystack_[2].location)); ElementPtr port(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-port", port); } -#line 4447 "dhcp6_parser.cc" +#line 4457 "dhcp6_parser.cc" break; - case 839: // cert_required: "cert-required" ":" "boolean" -#line 2896 "dhcp6_parser.yy" + case 841: // cert_required: "cert-required" ":" "boolean" +#line 2904 "dhcp6_parser.yy" { ctx.unique("cert-required", ctx.loc2pos(yystack_[2].location)); ElementPtr req(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-required", req); } -#line 4457 "dhcp6_parser.cc" +#line 4467 "dhcp6_parser.cc" break; - case 840: // $@123: %empty -#line 2902 "dhcp6_parser.yy" + case 842: // $@123: %empty +#line 2910 "dhcp6_parser.yy" { ctx.unique("http-headers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4465,73 +4475,73 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HTTP_HEADERS); } -#line 4469 "dhcp6_parser.cc" +#line 4479 "dhcp6_parser.cc" break; - case 841: // http_headers: "http-headers" $@123 ":" "[" http_header_list "]" -#line 2908 "dhcp6_parser.yy" + case 843: // http_headers: "http-headers" $@123 ":" "[" http_header_list "]" +#line 2916 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4478 "dhcp6_parser.cc" +#line 4488 "dhcp6_parser.cc" break; - case 846: // not_empty_http_header_list: not_empty_http_header_list "," -#line 2919 "dhcp6_parser.yy" + case 848: // not_empty_http_header_list: not_empty_http_header_list "," +#line 2927 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4486 "dhcp6_parser.cc" +#line 4496 "dhcp6_parser.cc" break; - case 847: // $@124: %empty -#line 2924 "dhcp6_parser.yy" + case 849: // $@124: %empty +#line 2932 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4496 "dhcp6_parser.cc" +#line 4506 "dhcp6_parser.cc" break; - case 848: // http_header: "{" $@124 http_header_params "}" -#line 2928 "dhcp6_parser.yy" + case 850: // http_header: "{" $@124 http_header_params "}" +#line 2936 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4504 "dhcp6_parser.cc" +#line 4514 "dhcp6_parser.cc" break; - case 851: // http_header_params: http_header_params "," -#line 2934 "dhcp6_parser.yy" + case 853: // http_header_params: http_header_params "," +#line 2942 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4512 "dhcp6_parser.cc" +#line 4522 "dhcp6_parser.cc" break; - case 857: // $@125: %empty -#line 2946 "dhcp6_parser.yy" + case 859: // $@125: %empty +#line 2954 "dhcp6_parser.yy" { ctx.unique("value", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4521 "dhcp6_parser.cc" +#line 4531 "dhcp6_parser.cc" break; - case 858: // header_value: "value" $@125 ":" "constant string" -#line 2949 "dhcp6_parser.yy" + case 860: // header_value: "value" $@125 ":" "constant string" +#line 2957 "dhcp6_parser.yy" { ElementPtr value(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("value", value); ctx.leave(); } -#line 4531 "dhcp6_parser.cc" +#line 4541 "dhcp6_parser.cc" break; - case 859: // $@126: %empty -#line 2957 "dhcp6_parser.yy" + case 861: // $@126: %empty +#line 2965 "dhcp6_parser.yy" { ctx.unique("authentication", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4539,92 +4549,92 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.AUTHENTICATION); } -#line 4543 "dhcp6_parser.cc" +#line 4553 "dhcp6_parser.cc" break; - case 860: // authentication: "authentication" $@126 ":" "{" auth_params "}" -#line 2963 "dhcp6_parser.yy" + case 862: // authentication: "authentication" $@126 ":" "{" auth_params "}" +#line 2971 "dhcp6_parser.yy" { // 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 4554 "dhcp6_parser.cc" +#line 4564 "dhcp6_parser.cc" break; - case 863: // auth_params: auth_params "," -#line 2972 "dhcp6_parser.yy" + case 865: // auth_params: auth_params "," +#line 2980 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4562 "dhcp6_parser.cc" +#line 4572 "dhcp6_parser.cc" break; - case 871: // $@127: %empty -#line 2986 "dhcp6_parser.yy" + case 873: // $@127: %empty +#line 2994 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.AUTH_TYPE); } -#line 4571 "dhcp6_parser.cc" +#line 4581 "dhcp6_parser.cc" break; - case 872: // auth_type: "type" $@127 ":" auth_type_value -#line 2989 "dhcp6_parser.yy" + case 874: // auth_type: "type" $@127 ":" auth_type_value +#line 2997 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4580 "dhcp6_parser.cc" +#line 4590 "dhcp6_parser.cc" break; - case 873: // auth_type_value: "basic" -#line 2994 "dhcp6_parser.yy" + case 875: // auth_type_value: "basic" +#line 3002 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); } -#line 4586 "dhcp6_parser.cc" +#line 4596 "dhcp6_parser.cc" break; - case 874: // $@128: %empty -#line 2997 "dhcp6_parser.yy" + case 876: // $@128: %empty +#line 3005 "dhcp6_parser.yy" { ctx.unique("realm", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4595 "dhcp6_parser.cc" +#line 4605 "dhcp6_parser.cc" break; - case 875: // realm: "realm" $@128 ":" "constant string" -#line 3000 "dhcp6_parser.yy" + case 877: // realm: "realm" $@128 ":" "constant string" +#line 3008 "dhcp6_parser.yy" { ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("realm", realm); ctx.leave(); } -#line 4605 "dhcp6_parser.cc" +#line 4615 "dhcp6_parser.cc" break; - case 876: // $@129: %empty -#line 3006 "dhcp6_parser.yy" + case 878: // $@129: %empty +#line 3014 "dhcp6_parser.yy" { ctx.unique("directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4614 "dhcp6_parser.cc" +#line 4624 "dhcp6_parser.cc" break; - case 877: // directory: "directory" $@129 ":" "constant string" -#line 3009 "dhcp6_parser.yy" + case 879: // directory: "directory" $@129 ":" "constant string" +#line 3017 "dhcp6_parser.yy" { ElementPtr directory(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("directory", directory); ctx.leave(); } -#line 4624 "dhcp6_parser.cc" +#line 4634 "dhcp6_parser.cc" break; - case 878: // $@130: %empty -#line 3015 "dhcp6_parser.yy" + case 880: // $@130: %empty +#line 3023 "dhcp6_parser.yy" { ctx.unique("clients", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4632,92 +4642,92 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENTS); } -#line 4636 "dhcp6_parser.cc" +#line 4646 "dhcp6_parser.cc" break; - case 879: // clients: "clients" $@130 ":" "[" clients_list "]" -#line 3021 "dhcp6_parser.yy" + case 881: // clients: "clients" $@130 ":" "[" clients_list "]" +#line 3029 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4645 "dhcp6_parser.cc" +#line 4655 "dhcp6_parser.cc" break; - case 884: // not_empty_clients_list: not_empty_clients_list "," -#line 3032 "dhcp6_parser.yy" + case 886: // not_empty_clients_list: not_empty_clients_list "," +#line 3040 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4653 "dhcp6_parser.cc" +#line 4663 "dhcp6_parser.cc" break; - case 885: // $@131: %empty -#line 3037 "dhcp6_parser.yy" + case 887: // $@131: %empty +#line 3045 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4663 "dhcp6_parser.cc" +#line 4673 "dhcp6_parser.cc" break; - case 886: // basic_auth: "{" $@131 clients_params "}" -#line 3041 "dhcp6_parser.yy" + case 888: // basic_auth: "{" $@131 clients_params "}" +#line 3049 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4671 "dhcp6_parser.cc" +#line 4681 "dhcp6_parser.cc" break; - case 889: // clients_params: clients_params "," -#line 3047 "dhcp6_parser.yy" + case 891: // clients_params: clients_params "," +#line 3055 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4679 "dhcp6_parser.cc" +#line 4689 "dhcp6_parser.cc" break; - case 897: // $@132: %empty -#line 3061 "dhcp6_parser.yy" + case 899: // $@132: %empty +#line 3069 "dhcp6_parser.yy" { ctx.unique("user-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4688 "dhcp6_parser.cc" +#line 4698 "dhcp6_parser.cc" break; - case 898: // user_file: "user-file" $@132 ":" "constant string" -#line 3064 "dhcp6_parser.yy" + case 900: // user_file: "user-file" $@132 ":" "constant string" +#line 3072 "dhcp6_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user-file", user); ctx.leave(); } -#line 4698 "dhcp6_parser.cc" +#line 4708 "dhcp6_parser.cc" break; - case 899: // $@133: %empty -#line 3070 "dhcp6_parser.yy" + case 901: // $@133: %empty +#line 3078 "dhcp6_parser.yy" { ctx.unique("password-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4707 "dhcp6_parser.cc" +#line 4717 "dhcp6_parser.cc" break; - case 900: // password_file: "password-file" $@133 ":" "constant string" -#line 3073 "dhcp6_parser.yy" + case 902: // password_file: "password-file" $@133 ":" "constant string" +#line 3081 "dhcp6_parser.yy" { ElementPtr password(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password-file", password); ctx.leave(); } -#line 4717 "dhcp6_parser.cc" +#line 4727 "dhcp6_parser.cc" break; - case 901: // $@134: %empty -#line 3081 "dhcp6_parser.yy" + case 903: // $@134: %empty +#line 3089 "dhcp6_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4725,87 +4735,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 4729 "dhcp6_parser.cc" +#line 4739 "dhcp6_parser.cc" break; - case 902: // dhcp_queue_control: "dhcp-queue-control" $@134 ":" "{" queue_control_params "}" -#line 3087 "dhcp6_parser.yy" + case 904: // dhcp_queue_control: "dhcp-queue-control" $@134 ":" "{" queue_control_params "}" +#line 3095 "dhcp6_parser.yy" { // 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 4740 "dhcp6_parser.cc" +#line 4750 "dhcp6_parser.cc" break; - case 905: // queue_control_params: queue_control_params "," -#line 3096 "dhcp6_parser.yy" + case 907: // queue_control_params: queue_control_params "," +#line 3104 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4748 "dhcp6_parser.cc" +#line 4758 "dhcp6_parser.cc" break; - case 912: // enable_queue: "enable-queue" ":" "boolean" -#line 3109 "dhcp6_parser.yy" + case 914: // enable_queue: "enable-queue" ":" "boolean" +#line 3117 "dhcp6_parser.yy" { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 4758 "dhcp6_parser.cc" +#line 4768 "dhcp6_parser.cc" break; - case 913: // $@135: %empty -#line 3115 "dhcp6_parser.yy" + case 915: // $@135: %empty +#line 3123 "dhcp6_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4767 "dhcp6_parser.cc" +#line 4777 "dhcp6_parser.cc" break; - case 914: // queue_type: "queue-type" $@135 ":" "constant string" -#line 3118 "dhcp6_parser.yy" + case 916: // queue_type: "queue-type" $@135 ":" "constant string" +#line 3126 "dhcp6_parser.yy" { 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 4777 "dhcp6_parser.cc" +#line 4787 "dhcp6_parser.cc" break; - case 915: // capacity: "capacity" ":" "integer" -#line 3124 "dhcp6_parser.yy" + case 917: // capacity: "capacity" ":" "integer" +#line 3132 "dhcp6_parser.yy" { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 4787 "dhcp6_parser.cc" +#line 4797 "dhcp6_parser.cc" break; - case 916: // $@136: %empty -#line 3130 "dhcp6_parser.yy" + case 918: // $@136: %empty +#line 3138 "dhcp6_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4796 "dhcp6_parser.cc" +#line 4806 "dhcp6_parser.cc" break; - case 917: // arbitrary_map_entry: "constant string" $@136 ":" value -#line 3133 "dhcp6_parser.yy" + case 919: // arbitrary_map_entry: "constant string" $@136 ":" value +#line 3141 "dhcp6_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4805 "dhcp6_parser.cc" +#line 4815 "dhcp6_parser.cc" break; - case 918: // $@137: %empty -#line 3140 "dhcp6_parser.yy" + case 920: // $@137: %empty +#line 3148 "dhcp6_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4813,177 +4823,177 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 4817 "dhcp6_parser.cc" +#line 4827 "dhcp6_parser.cc" break; - case 919: // dhcp_ddns: "dhcp-ddns" $@137 ":" "{" dhcp_ddns_params "}" -#line 3146 "dhcp6_parser.yy" + case 921: // dhcp_ddns: "dhcp-ddns" $@137 ":" "{" dhcp_ddns_params "}" +#line 3154 "dhcp6_parser.yy" { // 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 4828 "dhcp6_parser.cc" +#line 4838 "dhcp6_parser.cc" break; - case 920: // $@138: %empty -#line 3153 "dhcp6_parser.yy" + case 922: // $@138: %empty +#line 3161 "dhcp6_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4838 "dhcp6_parser.cc" +#line 4848 "dhcp6_parser.cc" break; - case 921: // sub_dhcp_ddns: "{" $@138 dhcp_ddns_params "}" -#line 3157 "dhcp6_parser.yy" + case 923: // sub_dhcp_ddns: "{" $@138 dhcp_ddns_params "}" +#line 3165 "dhcp6_parser.yy" { // 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 4848 "dhcp6_parser.cc" +#line 4858 "dhcp6_parser.cc" break; - case 924: // dhcp_ddns_params: dhcp_ddns_params "," -#line 3165 "dhcp6_parser.yy" + case 926: // dhcp_ddns_params: dhcp_ddns_params "," +#line 3173 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4856 "dhcp6_parser.cc" +#line 4866 "dhcp6_parser.cc" break; - case 936: // enable_updates: "enable-updates" ":" "boolean" -#line 3183 "dhcp6_parser.yy" + case 938: // enable_updates: "enable-updates" ":" "boolean" +#line 3191 "dhcp6_parser.yy" { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 4866 "dhcp6_parser.cc" +#line 4876 "dhcp6_parser.cc" break; - case 937: // $@139: %empty -#line 3189 "dhcp6_parser.yy" + case 939: // $@139: %empty +#line 3197 "dhcp6_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4875 "dhcp6_parser.cc" +#line 4885 "dhcp6_parser.cc" break; - case 938: // server_ip: "server-ip" $@139 ":" "constant string" -#line 3192 "dhcp6_parser.yy" + case 940: // server_ip: "server-ip" $@139 ":" "constant string" +#line 3200 "dhcp6_parser.yy" { 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 4885 "dhcp6_parser.cc" +#line 4895 "dhcp6_parser.cc" break; - case 939: // server_port: "server-port" ":" "integer" -#line 3198 "dhcp6_parser.yy" + case 941: // server_port: "server-port" ":" "integer" +#line 3206 "dhcp6_parser.yy" { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 4895 "dhcp6_parser.cc" +#line 4905 "dhcp6_parser.cc" break; - case 940: // $@140: %empty -#line 3204 "dhcp6_parser.yy" + case 942: // $@140: %empty +#line 3212 "dhcp6_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4904 "dhcp6_parser.cc" +#line 4914 "dhcp6_parser.cc" break; - case 941: // sender_ip: "sender-ip" $@140 ":" "constant string" -#line 3207 "dhcp6_parser.yy" + case 943: // sender_ip: "sender-ip" $@140 ":" "constant string" +#line 3215 "dhcp6_parser.yy" { 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 4914 "dhcp6_parser.cc" +#line 4924 "dhcp6_parser.cc" break; - case 942: // sender_port: "sender-port" ":" "integer" -#line 3213 "dhcp6_parser.yy" + case 944: // sender_port: "sender-port" ":" "integer" +#line 3221 "dhcp6_parser.yy" { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 4924 "dhcp6_parser.cc" +#line 4934 "dhcp6_parser.cc" break; - case 943: // max_queue_size: "max-queue-size" ":" "integer" -#line 3219 "dhcp6_parser.yy" + case 945: // max_queue_size: "max-queue-size" ":" "integer" +#line 3227 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("max-queue-size", i); } -#line 4934 "dhcp6_parser.cc" +#line 4944 "dhcp6_parser.cc" break; - case 944: // $@141: %empty -#line 3225 "dhcp6_parser.yy" + case 946: // $@141: %empty +#line 3233 "dhcp6_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4943 "dhcp6_parser.cc" +#line 4953 "dhcp6_parser.cc" break; - case 945: // ncr_protocol: "ncr-protocol" $@141 ":" ncr_protocol_value -#line 3228 "dhcp6_parser.yy" + case 947: // ncr_protocol: "ncr-protocol" $@141 ":" ncr_protocol_value +#line 3236 "dhcp6_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4952 "dhcp6_parser.cc" +#line 4962 "dhcp6_parser.cc" break; - case 946: // ncr_protocol_value: "UDP" -#line 3234 "dhcp6_parser.yy" + case 948: // ncr_protocol_value: "UDP" +#line 3242 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4958 "dhcp6_parser.cc" +#line 4968 "dhcp6_parser.cc" break; - case 947: // ncr_protocol_value: "TCP" -#line 3235 "dhcp6_parser.yy" + case 949: // ncr_protocol_value: "TCP" +#line 3243 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4964 "dhcp6_parser.cc" +#line 4974 "dhcp6_parser.cc" break; - case 948: // $@142: %empty -#line 3238 "dhcp6_parser.yy" + case 950: // $@142: %empty +#line 3246 "dhcp6_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4973 "dhcp6_parser.cc" +#line 4983 "dhcp6_parser.cc" break; - case 949: // ncr_format: "ncr-format" $@142 ":" "JSON" -#line 3241 "dhcp6_parser.yy" + case 951: // ncr_format: "ncr-format" $@142 ":" "JSON" +#line 3249 "dhcp6_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4983 "dhcp6_parser.cc" +#line 4993 "dhcp6_parser.cc" break; - case 950: // $@143: %empty -#line 3249 "dhcp6_parser.yy" + case 952: // $@143: %empty +#line 3257 "dhcp6_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4991,48 +5001,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4995 "dhcp6_parser.cc" +#line 5005 "dhcp6_parser.cc" break; - case 951: // config_control: "config-control" $@143 ":" "{" config_control_params "}" -#line 3255 "dhcp6_parser.yy" + case 953: // config_control: "config-control" $@143 ":" "{" config_control_params "}" +#line 3263 "dhcp6_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 5005 "dhcp6_parser.cc" +#line 5015 "dhcp6_parser.cc" break; - case 952: // $@144: %empty -#line 3261 "dhcp6_parser.yy" + case 954: // $@144: %empty +#line 3269 "dhcp6_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 5015 "dhcp6_parser.cc" +#line 5025 "dhcp6_parser.cc" break; - case 953: // sub_config_control: "{" $@144 config_control_params "}" -#line 3265 "dhcp6_parser.yy" + case 955: // sub_config_control: "{" $@144 config_control_params "}" +#line 3273 "dhcp6_parser.yy" { // No config_control params are required // parsing completed } -#line 5024 "dhcp6_parser.cc" +#line 5034 "dhcp6_parser.cc" break; - case 956: // config_control_params: config_control_params "," -#line 3273 "dhcp6_parser.yy" + case 958: // config_control_params: config_control_params "," +#line 3281 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 5032 "dhcp6_parser.cc" +#line 5042 "dhcp6_parser.cc" break; - case 959: // $@145: %empty -#line 3283 "dhcp6_parser.yy" + case 961: // $@145: %empty +#line 3291 "dhcp6_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -5040,30 +5050,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 5044 "dhcp6_parser.cc" +#line 5054 "dhcp6_parser.cc" break; - case 960: // config_databases: "config-databases" $@145 ":" "[" database_list "]" -#line 3289 "dhcp6_parser.yy" + case 962: // config_databases: "config-databases" $@145 ":" "[" database_list "]" +#line 3297 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 5053 "dhcp6_parser.cc" +#line 5063 "dhcp6_parser.cc" break; - case 961: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 3294 "dhcp6_parser.yy" + case 963: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" +#line 3302 "dhcp6_parser.yy" { 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))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 5063 "dhcp6_parser.cc" +#line 5073 "dhcp6_parser.cc" break; - case 962: // $@146: %empty -#line 3302 "dhcp6_parser.yy" + case 964: // $@146: %empty +#line 3310 "dhcp6_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -5071,83 +5081,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 5075 "dhcp6_parser.cc" +#line 5085 "dhcp6_parser.cc" break; - case 963: // loggers: "loggers" $@146 ":" "[" loggers_entries "]" -#line 3308 "dhcp6_parser.yy" + case 965: // loggers: "loggers" $@146 ":" "[" loggers_entries "]" +#line 3316 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 5084 "dhcp6_parser.cc" +#line 5094 "dhcp6_parser.cc" break; - case 966: // loggers_entries: loggers_entries "," -#line 3317 "dhcp6_parser.yy" + case 968: // loggers_entries: loggers_entries "," +#line 3325 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 5092 "dhcp6_parser.cc" +#line 5102 "dhcp6_parser.cc" break; - case 967: // $@147: %empty -#line 3323 "dhcp6_parser.yy" + case 969: // $@147: %empty +#line 3331 "dhcp6_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 5102 "dhcp6_parser.cc" +#line 5112 "dhcp6_parser.cc" break; - case 968: // logger_entry: "{" $@147 logger_params "}" -#line 3327 "dhcp6_parser.yy" + case 970: // logger_entry: "{" $@147 logger_params "}" +#line 3335 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 5110 "dhcp6_parser.cc" +#line 5120 "dhcp6_parser.cc" break; - case 971: // logger_params: logger_params "," -#line 3333 "dhcp6_parser.yy" + case 973: // logger_params: logger_params "," +#line 3341 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 5118 "dhcp6_parser.cc" +#line 5128 "dhcp6_parser.cc" break; - case 979: // debuglevel: "debuglevel" ":" "integer" -#line 3347 "dhcp6_parser.yy" + case 981: // debuglevel: "debuglevel" ":" "integer" +#line 3355 "dhcp6_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 5128 "dhcp6_parser.cc" +#line 5138 "dhcp6_parser.cc" break; - case 980: // $@148: %empty -#line 3353 "dhcp6_parser.yy" + case 982: // $@148: %empty +#line 3361 "dhcp6_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 5137 "dhcp6_parser.cc" +#line 5147 "dhcp6_parser.cc" break; - case 981: // severity: "severity" $@148 ":" "constant string" -#line 3356 "dhcp6_parser.yy" + case 983: // severity: "severity" $@148 ":" "constant string" +#line 3364 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 5147 "dhcp6_parser.cc" +#line 5157 "dhcp6_parser.cc" break; - case 982: // $@149: %empty -#line 3362 "dhcp6_parser.yy" + case 984: // $@149: %empty +#line 3370 "dhcp6_parser.yy" { ctx.unique("output-options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -5155,122 +5165,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 5159 "dhcp6_parser.cc" +#line 5169 "dhcp6_parser.cc" break; - case 983: // output_options_list: "output-options" $@149 ":" "[" output_options_list_content "]" -#line 3368 "dhcp6_parser.yy" + case 985: // output_options_list: "output-options" $@149 ":" "[" output_options_list_content "]" +#line 3376 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 5168 "dhcp6_parser.cc" +#line 5178 "dhcp6_parser.cc" break; - case 986: // output_options_list_content: output_options_list_content "," -#line 3375 "dhcp6_parser.yy" + case 988: // output_options_list_content: output_options_list_content "," +#line 3383 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 5176 "dhcp6_parser.cc" +#line 5186 "dhcp6_parser.cc" break; - case 987: // $@150: %empty -#line 3380 "dhcp6_parser.yy" + case 989: // $@150: %empty +#line 3388 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 5186 "dhcp6_parser.cc" +#line 5196 "dhcp6_parser.cc" break; - case 988: // output_entry: "{" $@150 output_params_list "}" -#line 3384 "dhcp6_parser.yy" + case 990: // output_entry: "{" $@150 output_params_list "}" +#line 3392 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 5194 "dhcp6_parser.cc" +#line 5204 "dhcp6_parser.cc" break; - case 991: // output_params_list: output_params_list "," -#line 3390 "dhcp6_parser.yy" + case 993: // output_params_list: output_params_list "," +#line 3398 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 5202 "dhcp6_parser.cc" +#line 5212 "dhcp6_parser.cc" break; - case 997: // $@151: %empty -#line 3402 "dhcp6_parser.yy" + case 999: // $@151: %empty +#line 3410 "dhcp6_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 5211 "dhcp6_parser.cc" +#line 5221 "dhcp6_parser.cc" break; - case 998: // output: "output" $@151 ":" "constant string" -#line 3405 "dhcp6_parser.yy" + case 1000: // output: "output" $@151 ":" "constant string" +#line 3413 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 5221 "dhcp6_parser.cc" +#line 5231 "dhcp6_parser.cc" break; - case 999: // flush: "flush" ":" "boolean" -#line 3411 "dhcp6_parser.yy" + case 1001: // flush: "flush" ":" "boolean" +#line 3419 "dhcp6_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 5231 "dhcp6_parser.cc" +#line 5241 "dhcp6_parser.cc" break; - case 1000: // maxsize: "maxsize" ":" "integer" -#line 3417 "dhcp6_parser.yy" + case 1002: // maxsize: "maxsize" ":" "integer" +#line 3425 "dhcp6_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 5241 "dhcp6_parser.cc" +#line 5251 "dhcp6_parser.cc" break; - case 1001: // maxver: "maxver" ":" "integer" -#line 3423 "dhcp6_parser.yy" + case 1003: // maxver: "maxver" ":" "integer" +#line 3431 "dhcp6_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 5251 "dhcp6_parser.cc" +#line 5261 "dhcp6_parser.cc" break; - case 1002: // $@152: %empty -#line 3429 "dhcp6_parser.yy" + case 1004: // $@152: %empty +#line 3437 "dhcp6_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 5260 "dhcp6_parser.cc" +#line 5270 "dhcp6_parser.cc" break; - case 1003: // pattern: "pattern" $@152 ":" "constant string" -#line 3432 "dhcp6_parser.yy" + case 1005: // pattern: "pattern" $@152 ":" "constant string" +#line 3440 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 5270 "dhcp6_parser.cc" +#line 5280 "dhcp6_parser.cc" break; - case 1004: // $@153: %empty -#line 3438 "dhcp6_parser.yy" + case 1006: // $@153: %empty +#line 3446 "dhcp6_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -5278,38 +5288,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 5282 "dhcp6_parser.cc" +#line 5292 "dhcp6_parser.cc" break; - case 1005: // compatibility: "compatibility" $@153 ":" "{" compatibility_params "}" -#line 3444 "dhcp6_parser.yy" + case 1007: // compatibility: "compatibility" $@153 ":" "{" compatibility_params "}" +#line 3452 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 5291 "dhcp6_parser.cc" +#line 5301 "dhcp6_parser.cc" break; - case 1008: // compatibility_params: compatibility_params "," -#line 3451 "dhcp6_parser.yy" + case 1010: // compatibility_params: compatibility_params "," +#line 3459 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 5299 "dhcp6_parser.cc" +#line 5309 "dhcp6_parser.cc" break; - case 1011: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 3460 "dhcp6_parser.yy" + case 1013: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" +#line 3468 "dhcp6_parser.yy" { ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lenient-option-parsing", b); } -#line 5309 "dhcp6_parser.cc" +#line 5319 "dhcp6_parser.cc" break; -#line 5313 "dhcp6_parser.cc" +#line 5323 "dhcp6_parser.cc" default: break; @@ -5661,167 +5671,168 @@ namespace isc { namespace dhcp { } - const short Dhcp6Parser::yypact_ninf_ = -1445; + const short Dhcp6Parser::yypact_ninf_ = -1456; const signed char Dhcp6Parser::yytable_ninf_ = -1; const short Dhcp6Parser::yypact_[] = { - 485, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, 49, 43, 34, 44, 62, - 83, 93, 98, 106, 147, 158, 167, 176, 209, 211, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 43, -174, - 110, 768, 56, 1448, 195, 281, 301, 2, 11, 335, - -80, 258, 111, -1445, 136, 238, 243, 241, 261, -1445, - 75, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 300, 314, - 325, 327, 331, 334, 365, 394, 417, 418, 430, 433, - 445, 448, 449, -1445, 469, 478, 484, 491, 503, -1445, - -1445, -1445, 512, 516, 520, 521, 523, 527, 528, -1445, - -1445, -1445, 530, -1445, -1445, -1445, -1445, -1445, -1445, 531, - 534, 535, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, 537, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 541, - 543, 547, -1445, -1445, 550, -1445, 81, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, 554, 557, 559, 560, -1445, 101, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - 563, 565, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - 109, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, 566, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 135, -1445, -1445, -1445, -1445, -1445, -1445, - 567, -1445, 570, 571, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 145, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, 273, 292, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 298, -1445, -1445, 573, -1445, -1445, -1445, - 574, -1445, -1445, 403, 428, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 576, 577, - 578, -1445, -1445, -1445, -1445, -1445, 425, 471, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, 159, -1445, -1445, -1445, 579, -1445, 582, -1445, - 584, 585, -1445, -1445, -1445, -1445, -1445, 174, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 586, 190, - -1445, -1445, -1445, -1445, 43, 43, -1445, -131, 587, -1445, - -1445, 588, 589, 592, 596, 599, 600, 363, 364, 366, - 368, 369, 370, 373, 376, 375, 378, 379, 383, 386, - 388, 387, 603, 390, 391, 392, 393, 399, 605, 621, - 634, 400, 405, 411, 414, 416, 419, 422, 638, 656, - 658, 426, 663, 669, 672, 675, 677, 680, 441, 442, - 443, 685, 687, 688, 691, 692, 693, 694, 695, 697, - 461, 698, 701, 704, 706, 722, 723, 724, 487, 492, - 493, 725, 726, -1445, 768, -1445, 728, 495, 496, 499, - 500, 56, -1445, 729, 730, 731, 739, 743, 506, 507, - 746, 748, 750, 751, 752, 1448, -1445, 753, 517, 195, - -1445, 754, 518, 757, 522, 526, 281, -1445, 758, 759, - 761, 765, 766, 767, 772, 777, -1445, 301, -1445, 778, - 780, 544, 781, 783, 784, 548, -1445, 11, 789, 551, - 552, 553, 790, -1445, 335, 794, 795, 232, -1445, 556, - 797, 568, 801, 569, 572, 804, 805, 258, -1445, 808, - 575, 111, -1445, -1445, -1445, 809, 811, 580, 812, 813, - 849, 850, 810, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 617, -1445, - -1445, -1445, -1445, -1445, -128, 618, 619, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, 856, 857, 858, -1445, 623, 624, - 398, 865, 864, 631, -1445, -1445, -1445, 868, 870, 871, - 872, 873, 875, 876, 878, 879, -1445, 880, 881, 877, - 882, 890, 636, 657, -1445, -1445, -1445, 895, 894, -1445, - 897, -1445, -1445, -1445, -1445, -1445, 898, 899, 664, 665, - 666, -1445, -1445, 897, 897, 897, 668, 903, -1445, 670, - -1445, -1445, 671, -1445, 673, -1445, -1445, -1445, 897, 897, - 897, 897, 674, 678, 681, 682, -1445, 683, 684, -1445, - 689, 690, 696, -1445, -1445, 702, -1445, -1445, -1445, 897, - -1445, 703, 864, -1445, -1445, 705, -1445, 707, -1445, -1445, - 30, 610, -1445, 908, -1445, -1445, 43, 768, -1445, 111, - 56, 177, 177, 909, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 911, 914, 919, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 921, -1445, -1445, -1445, -104, 43, 40, - 279, 922, 925, 926, 104, 74, 234, 198, 927, -62, - 258, -1445, -1445, 931, -184, -1445, -1445, 932, 935, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, 806, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 909, -1445, 228, 271, 290, -1445, -1445, - -1445, -1445, 941, 945, 946, 947, 948, 949, 950, 951, - 952, 953, -1445, 954, 956, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, 291, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, 304, -1445, 955, 769, -1445, -1445, 958, 959, -1445, - -1445, 960, 962, -1445, -1445, 961, 965, -1445, -1445, 963, - 967, -1445, -1445, -1445, 191, -1445, -1445, -1445, 966, -1445, - -1445, -1445, 245, -1445, -1445, -1445, -1445, -1445, 322, -1445, - -1445, -1445, -1445, 260, -1445, -1445, 968, 970, -1445, -1445, - 969, 973, -1445, 974, 981, 982, 983, 984, 985, 336, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 986, - 987, 988, -1445, -1445, -1445, -1445, 338, -1445, -1445, -1445, - -1445, -1445, -1445, 990, 991, 992, -1445, 339, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, 993, -1445, 994, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, 340, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, 971, 996, -1445, - 997, -1445, 998, -1445, -1445, -1445, 348, -1445, -1445, -1445, - -1445, -1445, 351, -1445, 277, -1445, 999, -1445, 357, -1445, - -1445, 763, -1445, 1000, 1002, -1445, -1445, 1001, 1005, -1445, - -1445, 1003, 1004, -1445, -1445, -1445, 1008, 1009, 1010, 1011, - 774, 727, 775, 756, 776, 779, 782, 785, 786, 787, - 1015, 788, 792, 1016, 1018, 1019, 1021, 1022, 177, -1445, - -1445, 177, -1445, 909, 1448, -1445, 911, 11, -1445, 914, - 335, -1445, 919, 1546, -1445, 921, -104, -1445, -1445, 40, - -1445, 1026, 1027, 279, -1445, 265, 922, -1445, 301, -1445, - 925, -80, -1445, 926, 793, 796, 798, 799, 802, 819, - 104, -1445, 1033, 1039, 821, 822, 824, 74, -1445, 807, - 825, 830, 234, -1445, 1044, 1049, 1069, 832, 1073, 835, - 1076, 198, -1445, 198, -1445, 927, 838, 1081, 845, 1084, - -62, -1445, -1445, 221, 931, -1445, 851, -184, -1445, -1445, - 1087, 1098, 195, -1445, 932, 281, -1445, 935, -1445, -1445, - 862, 863, 866, 889, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, 470, -1445, -1445, 891, 900, 924, - 429, 930, -1445, 359, -1445, 367, -1445, 1101, -1445, 1105, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, 381, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, 937, 940, -1445, -1445, -1445, - 1116, 1119, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 1130, 1141, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, 1154, -1445, 382, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 352, 942, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, 353, 944, 995, -1445, 1169, -1445, 1182, - -1445, 407, -1445, -1445, 1006, -1445, 43, -1445, -1445, 1186, - -1445, -1445, -1445, -1445, -1445, 427, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, 1013, 460, -1445, 464, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, 1546, -1445, -1445, -1445, - 1188, 1189, 980, 989, -1445, 265, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 117, - 1193, -1445, -1445, -1445, 1191, 972, 1192, 221, -1445, -1445, - -1445, -1445, -1445, 1020, 1023, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, 486, -1445, -1445, -1445, -1445, - -1445, -1445, 1219, 1226, -1445, 1230, -1445, 1024, -1445, -1445, - -1445, 1235, 1236, 1237, 1240, 117, -1445, -24, -1445, 1193, - 1238, -1445, 1067, 1028, 1030, 1245, -1445, -1445, -1445, -1445, - -1445, -1445, 488, -1445, -1445, -1445, -1445, 302, -1445, -1445, - -1445, -1445, -1445, 1244, 1248, -24, -1445, 32, 1238, -1445, - -1445, 1250, 1254, -1445, 1032, -1445, -1445, 1255, 1258, 1259, - -1445, 489, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 130, - -1445, 1244, -1445, 1264, 1031, 1034, 1036, 1270, 32, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, 490, -1445, -1445, - -1445, -1445, 1038, -1445, -1445, -1445, 1040, -1445, 1276, 1278, - 130, -1445, -1445, -1445, 1042, 1043, -1445, -1445, -1445 + 718, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 43, 62, 50, 57, 63, + 83, 93, 135, 148, 170, 180, 191, 192, 211, 212, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 62, -154, + 82, 772, 56, 322, 1522, 364, 130, 99, 11, 166, + -101, 520, 91, -1456, 228, 121, 237, 234, 246, -1456, + 75, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 265, 266, + 282, 283, 295, 306, 307, 314, 329, 338, 346, 367, + 371, 388, 428, -1456, 445, 446, 452, 453, 461, -1456, + -1456, -1456, 467, 468, 477, 478, 490, 502, 504, -1456, + -1456, -1456, 506, -1456, -1456, -1456, -1456, -1456, -1456, 512, + 513, 519, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, 521, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 523, + 524, 531, 533, -1456, -1456, 534, -1456, 109, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, 537, 538, 540, 541, -1456, 117, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, 544, 546, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, 129, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, 550, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 140, -1456, -1456, -1456, -1456, + -1456, -1456, 553, -1456, 557, 562, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 153, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, 344, 366, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 497, -1456, -1456, 563, -1456, + -1456, -1456, 566, -1456, -1456, 569, 466, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 574, 575, 576, -1456, -1456, -1456, -1456, -1456, 573, 580, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, 159, -1456, -1456, -1456, 581, -1456, + 582, -1456, 585, 587, -1456, -1456, -1456, -1456, -1456, 171, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 588, 259, -1456, -1456, -1456, -1456, 62, 62, -1456, 342, + 589, -1456, -1456, 590, 591, 592, 595, 599, 603, 368, + 369, 372, 375, 378, 379, 381, 382, 363, 384, 385, + 390, 389, 396, 398, 605, 402, 403, 386, 394, 407, + 606, 609, 610, 412, 414, 417, 420, 421, 426, 431, + 643, 661, 666, 436, 667, 678, 680, 683, 684, 685, + 447, 449, 450, 686, 694, 695, 696, 697, 698, 699, + 701, 702, 464, 705, 708, 710, 720, 721, 722, 723, + 483, 484, 485, 486, 728, 729, -1456, 772, -1456, 730, + 496, 498, 503, 508, 56, -1456, 740, 741, 743, 748, + 750, 515, 510, 752, 755, 756, 757, 759, 322, -1456, + 760, 522, 1522, -1456, 762, 529, 763, 530, 532, 364, + -1456, 770, 776, 781, 782, 784, 785, 786, 787, -1456, + 130, -1456, 788, 794, 556, 796, 797, 798, 558, -1456, + 11, 800, 560, 564, 567, 809, -1456, 166, 810, 815, + -70, -1456, 577, 816, 578, 819, 617, 618, 820, 821, + 520, -1456, 858, 620, 91, -1456, -1456, -1456, 860, 769, + 623, 859, 861, 862, 867, 870, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, 625, -1456, -1456, -1456, -1456, -1456, -156, 634, 635, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 874, 875, 876, + -1456, 640, 641, 410, 879, 878, 644, -1456, -1456, -1456, + 884, 885, 886, 894, 887, 888, 897, 898, 899, -1456, + 900, 901, 904, 903, 906, 662, 669, -1456, -1456, -1456, + -1456, 909, 908, -1456, 911, -1456, -1456, -1456, -1456, -1456, + 912, 913, 677, 687, 688, -1456, -1456, 911, 911, 911, + 690, 915, -1456, 691, -1456, -1456, 692, -1456, 693, -1456, + -1456, -1456, 911, 911, 911, 911, 700, 719, 724, 726, + -1456, 727, 731, -1456, 732, 733, 734, -1456, -1456, 735, + -1456, -1456, -1456, 911, -1456, 736, 878, -1456, -1456, 737, + -1456, 738, -1456, -1456, -74, 714, -1456, 920, -1456, -1456, + 62, 772, -1456, 91, 56, 178, 178, 919, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 921, 929, 930, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 931, -1456, -1456, + -1456, -104, 62, 88, 36, 934, 936, 953, 261, 74, + 132, 149, 955, 219, 520, -1456, -1456, 957, -186, -1456, + -1456, 958, 963, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 830, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 919, -1456, 260, + 275, 276, -1456, -1456, -1456, -1456, 923, 968, 977, 978, + 986, 987, 988, 989, 990, 991, -1456, 992, 993, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 277, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 292, -1456, 994, 996, -1456, + -1456, 995, 999, -1456, -1456, 997, 1001, -1456, -1456, 1000, + 1002, -1456, -1456, 1003, 1004, -1456, -1456, -1456, 81, -1456, + -1456, -1456, 1005, -1456, -1456, -1456, 110, -1456, -1456, -1456, + -1456, -1456, 305, -1456, -1456, -1456, -1456, 290, -1456, -1456, + 1006, 1007, -1456, -1456, 1009, 1010, -1456, 1012, 1013, 1014, + 1015, 1016, 1017, 309, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, 1018, 1019, 1020, -1456, -1456, -1456, -1456, + 316, -1456, -1456, -1456, -1456, -1456, -1456, 1021, 1022, 1023, + -1456, 317, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, 1024, -1456, 1025, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, 323, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, 1026, 1027, -1456, 1029, -1456, 1030, -1456, -1456, -1456, + 333, -1456, -1456, -1456, -1456, -1456, 336, -1456, 387, -1456, + 1031, -1456, 348, -1456, -1456, 766, -1456, 1032, 1028, -1456, + -1456, 1033, 1038, -1456, -1456, 1034, 1039, -1456, -1456, -1456, + 1040, 1043, 1044, 1048, 793, 812, 822, 823, 824, 827, + 828, 833, 834, 835, 1051, 836, 840, 1080, 1082, 1085, + 1087, 1088, 178, -1456, -1456, 178, -1456, 919, 322, -1456, + 921, 11, -1456, 929, 166, -1456, 930, 1453, -1456, 931, + -104, -1456, -1456, 88, -1456, 1093, 1095, 36, -1456, 681, + 934, -1456, 130, -1456, 936, -101, -1456, 953, 864, 865, + 868, 881, 891, 893, 261, -1456, 1101, 1109, 902, 905, + 926, 74, -1456, 872, 932, 937, 132, -1456, 1123, 1138, + 1162, 939, 1181, 942, 1185, 149, -1456, 149, -1456, 955, + 946, 1190, 954, 1192, 219, -1456, -1456, 206, 957, -1456, + 959, -186, -1456, -1456, 1193, 1197, 1522, -1456, 958, 364, + -1456, 963, -1456, -1456, 976, 998, 1011, 1035, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 395, -1456, + -1456, 1036, 1037, 1041, 440, 1042, -1456, 350, -1456, 351, + -1456, 1220, -1456, 1221, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 357, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 1045, + 1046, -1456, -1456, -1456, 1229, 1233, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 1230, 1239, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, 1236, -1456, 359, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 370, 1047, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 397, 1049, 1050, + -1456, 1238, -1456, 1243, -1456, 365, -1456, -1456, 1052, -1456, + 62, -1456, -1456, 1245, -1456, -1456, -1456, -1456, -1456, 422, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 1053, 425, + -1456, 444, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 1453, -1456, -1456, -1456, 1247, 1250, 1054, 1055, -1456, 681, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, 67, 1248, -1456, -1456, -1456, 1252, 1058, + 1254, 206, -1456, -1456, -1456, -1456, -1456, 1056, 1060, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 455, + -1456, -1456, -1456, -1456, -1456, -1456, 1255, 1257, -1456, 1258, + -1456, 1061, -1456, -1456, -1456, 1261, 1262, 1263, 1264, 67, + -1456, -6, -1456, 1248, 1265, -1456, 1091, 1062, 1063, 1270, + -1456, -1456, -1456, -1456, -1456, -1456, 456, -1456, -1456, -1456, + -1456, 404, -1456, -1456, -1456, -1456, -1456, 1273, 1278, -6, + -1456, 124, 1265, -1456, -1456, 1279, 1266, -1456, 1064, -1456, + -1456, 1282, 1286, 1289, -1456, 465, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, 128, -1456, 1273, -1456, 1292, 1065, 1070, + 1071, 1293, 124, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, 501, -1456, -1456, -1456, -1456, 1074, -1456, -1456, -1456, + 1075, -1456, 1303, 1315, 128, -1456, -1456, -1456, 1078, 1079, + -1456, -1456, -1456 }; const short @@ -5831,212 +5842,213 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 46, 38, 34, 33, 30, 31, 32, 37, 3, - 35, 36, 61, 5, 67, 7, 207, 9, 401, 11, - 625, 13, 670, 15, 705, 17, 540, 19, 549, 21, - 588, 23, 363, 25, 920, 27, 952, 29, 48, 41, - 0, 0, 0, 0, 0, 0, 707, 0, 551, 590, + 35, 36, 61, 5, 67, 7, 209, 9, 403, 11, + 627, 13, 672, 15, 707, 17, 542, 19, 551, 21, + 590, 23, 365, 25, 922, 27, 954, 29, 48, 41, + 0, 0, 0, 0, 0, 0, 709, 0, 553, 592, 0, 0, 0, 50, 0, 49, 0, 0, 42, 63, - 0, 65, 145, 950, 205, 226, 228, 230, 0, 0, + 0, 65, 146, 952, 207, 228, 230, 232, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 196, 0, 0, 0, 0, 0, 166, + 173, 175, 0, 0, 0, 0, 0, 0, 0, 394, + 540, 581, 0, 199, 201, 179, 479, 659, 661, 0, + 0, 0, 321, 340, 330, 310, 745, 698, 356, 377, + 779, 0, 342, 804, 806, 903, 920, 189, 191, 0, + 0, 0, 0, 964, 1006, 0, 145, 0, 69, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 111, 112, + 113, 114, 115, 116, 81, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 118, 119, + 133, 134, 135, 107, 142, 143, 144, 137, 138, 139, + 140, 84, 85, 86, 87, 104, 88, 90, 89, 136, + 94, 95, 82, 108, 109, 110, 83, 92, 93, 102, + 103, 105, 91, 96, 97, 98, 99, 100, 101, 106, + 117, 141, 222, 0, 0, 0, 0, 221, 0, 211, + 214, 215, 216, 217, 218, 219, 220, 618, 663, 460, + 462, 464, 0, 0, 468, 470, 472, 466, 742, 459, + 408, 409, 410, 411, 412, 413, 414, 415, 435, 436, + 437, 438, 439, 440, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 441, 442, 456, + 457, 458, 0, 405, 419, 420, 421, 424, 425, 426, + 427, 429, 430, 431, 422, 423, 416, 417, 433, 434, + 418, 428, 432, 656, 0, 655, 639, 640, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, + 635, 636, 637, 638, 634, 0, 629, 632, 633, 653, + 654, 691, 0, 694, 0, 0, 690, 682, 683, 684, + 685, 681, 680, 688, 689, 0, 674, 677, 678, 686, + 687, 679, 740, 726, 728, 730, 732, 734, 736, 738, + 725, 722, 723, 724, 0, 710, 711, 716, 717, 718, + 714, 719, 720, 721, 715, 0, 571, 277, 0, 575, + 573, 578, 0, 567, 568, 0, 554, 555, 558, 570, + 559, 560, 561, 577, 562, 563, 564, 565, 566, 609, + 0, 0, 0, 616, 607, 608, 611, 612, 0, 593, + 594, 597, 598, 599, 600, 601, 602, 603, 606, 604, + 605, 373, 375, 370, 0, 367, 371, 372, 0, 939, + 0, 942, 0, 0, 946, 950, 937, 935, 936, 0, + 924, 927, 928, 929, 930, 931, 932, 933, 934, 961, + 0, 0, 956, 959, 960, 47, 52, 0, 39, 45, + 0, 66, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 0, 0, 0, 0, 165, - 172, 174, 0, 0, 0, 0, 0, 0, 0, 392, - 538, 579, 0, 198, 200, 178, 477, 657, 659, 0, - 0, 0, 319, 338, 328, 308, 743, 696, 354, 375, - 777, 0, 340, 802, 804, 901, 918, 188, 190, 0, - 0, 0, 962, 1004, 0, 144, 0, 69, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 111, 112, 113, - 114, 115, 116, 81, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 118, 119, 133, - 134, 135, 107, 141, 142, 143, 137, 138, 139, 84, - 85, 86, 87, 104, 88, 90, 89, 136, 94, 95, - 82, 108, 109, 110, 83, 92, 93, 102, 103, 105, - 91, 96, 97, 98, 99, 100, 101, 106, 117, 140, - 220, 0, 0, 0, 0, 219, 0, 209, 212, 213, - 214, 215, 216, 217, 218, 616, 661, 458, 460, 462, - 0, 0, 466, 468, 470, 464, 740, 457, 406, 407, - 408, 409, 410, 411, 412, 413, 433, 434, 435, 436, - 437, 438, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 439, 440, 454, 455, 456, - 0, 403, 417, 418, 419, 422, 423, 424, 425, 427, - 428, 429, 420, 421, 414, 415, 431, 432, 416, 426, - 430, 654, 0, 653, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 633, 634, - 635, 636, 632, 0, 627, 630, 631, 651, 652, 689, - 0, 692, 0, 0, 688, 680, 681, 682, 683, 679, - 678, 686, 687, 0, 672, 675, 676, 684, 685, 677, - 738, 724, 726, 728, 730, 732, 734, 736, 723, 720, - 721, 722, 0, 708, 709, 714, 715, 716, 712, 717, - 718, 719, 713, 0, 569, 275, 0, 573, 571, 576, - 0, 565, 566, 0, 552, 553, 556, 568, 557, 558, - 559, 575, 560, 561, 562, 563, 564, 607, 0, 0, - 0, 614, 605, 606, 609, 610, 0, 591, 592, 595, - 596, 597, 598, 599, 600, 601, 604, 602, 603, 371, - 373, 368, 0, 365, 369, 370, 0, 937, 0, 940, - 0, 0, 944, 948, 935, 933, 934, 0, 922, 925, - 926, 927, 928, 929, 930, 931, 932, 959, 0, 0, - 954, 957, 958, 47, 52, 0, 39, 45, 0, 66, - 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 71, 68, 0, + 0, 0, 0, 0, 213, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 407, 404, + 0, 0, 631, 628, 0, 0, 0, 0, 0, 676, + 673, 0, 0, 0, 0, 0, 0, 0, 0, 708, + 713, 543, 0, 0, 0, 0, 0, 0, 0, 552, + 557, 0, 0, 0, 0, 0, 591, 596, 0, 0, + 369, 366, 0, 0, 0, 0, 0, 0, 0, 0, + 926, 923, 0, 0, 958, 955, 51, 43, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 0, 194, 195, 163, 164, 165, 0, 0, 0, + 177, 178, 185, 186, 187, 188, 193, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 474, 475, 476, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 803, + 0, 0, 0, 0, 0, 0, 0, 203, 204, 205, + 206, 0, 0, 70, 0, 224, 225, 226, 227, 212, + 0, 0, 0, 0, 0, 477, 478, 0, 0, 0, + 0, 0, 406, 0, 658, 630, 0, 693, 0, 696, + 697, 675, 0, 0, 0, 0, 0, 0, 0, 0, + 712, 0, 0, 569, 0, 0, 0, 580, 556, 0, + 613, 614, 615, 0, 595, 0, 0, 368, 938, 0, + 941, 0, 944, 945, 0, 0, 925, 0, 963, 957, + 0, 0, 147, 0, 0, 0, 0, 234, 197, 168, + 169, 170, 171, 172, 167, 174, 176, 396, 544, 583, + 200, 202, 181, 182, 183, 184, 180, 481, 40, 660, + 662, 0, 48, 0, 0, 0, 700, 358, 0, 0, + 0, 0, 808, 0, 0, 190, 192, 0, 0, 53, + 223, 620, 665, 461, 463, 465, 469, 471, 473, 467, + 0, 657, 692, 695, 741, 727, 729, 731, 733, 735, + 737, 739, 572, 278, 576, 574, 579, 610, 617, 374, + 376, 940, 943, 948, 949, 947, 951, 234, 44, 0, + 0, 0, 268, 270, 272, 274, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 0, 0, 295, + 297, 299, 301, 303, 304, 305, 306, 307, 308, 267, + 0, 241, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 258, 259, 260, 261, 257, + 262, 263, 264, 265, 266, 0, 239, 0, 235, 236, + 401, 0, 397, 398, 549, 0, 545, 546, 588, 0, + 584, 585, 486, 0, 482, 483, 328, 329, 0, 323, + 326, 327, 0, 338, 339, 335, 0, 332, 336, 337, + 317, 319, 0, 312, 315, 316, 750, 0, 747, 705, + 0, 701, 702, 363, 0, 359, 360, 0, 0, 0, + 0, 0, 0, 0, 379, 382, 383, 384, 385, 386, + 387, 793, 799, 0, 0, 0, 792, 789, 790, 791, + 0, 781, 784, 787, 785, 786, 788, 0, 0, 0, + 352, 0, 344, 347, 348, 349, 350, 351, 831, 836, + 838, 0, 861, 0, 842, 830, 823, 824, 825, 828, + 829, 0, 815, 818, 819, 820, 821, 826, 827, 822, + 813, 0, 809, 810, 0, 915, 0, 918, 911, 912, + 0, 905, 908, 909, 910, 913, 0, 969, 0, 966, + 0, 1012, 0, 1008, 1011, 55, 625, 0, 621, 622, + 670, 0, 666, 667, 744, 0, 0, 64, 953, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 60, 71, 68, 0, 0, 0, 0, - 0, 211, 208, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 405, 402, 0, 0, 629, - 626, 0, 0, 0, 0, 0, 674, 671, 0, 0, - 0, 0, 0, 0, 0, 0, 706, 711, 541, 0, - 0, 0, 0, 0, 0, 0, 550, 555, 0, 0, - 0, 0, 0, 589, 594, 0, 0, 367, 364, 0, - 0, 0, 0, 0, 0, 0, 0, 924, 921, 0, - 0, 956, 953, 51, 43, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 0, 193, - 194, 162, 163, 164, 0, 0, 0, 176, 177, 184, - 185, 186, 187, 192, 0, 0, 0, 197, 0, 0, - 0, 0, 0, 0, 472, 473, 474, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 801, 0, 0, 0, - 0, 0, 0, 0, 202, 203, 204, 0, 0, 70, - 0, 222, 223, 224, 225, 210, 0, 0, 0, 0, - 0, 475, 476, 0, 0, 0, 0, 0, 404, 0, - 656, 628, 0, 691, 0, 694, 695, 673, 0, 0, - 0, 0, 0, 0, 0, 0, 710, 0, 0, 567, - 0, 0, 0, 578, 554, 0, 611, 612, 613, 0, - 593, 0, 0, 366, 936, 0, 939, 0, 942, 943, - 0, 0, 923, 0, 961, 955, 0, 0, 146, 0, - 0, 0, 0, 232, 196, 167, 168, 169, 170, 171, - 166, 173, 175, 394, 542, 581, 199, 201, 180, 181, - 182, 183, 179, 479, 40, 658, 660, 0, 48, 0, - 0, 0, 698, 356, 0, 0, 0, 0, 806, 0, - 0, 189, 191, 0, 0, 53, 221, 618, 663, 459, - 461, 463, 467, 469, 471, 465, 0, 655, 690, 693, - 739, 725, 727, 729, 731, 733, 735, 737, 570, 276, - 574, 572, 577, 608, 615, 372, 374, 938, 941, 946, - 947, 945, 949, 232, 44, 0, 0, 0, 266, 268, - 270, 272, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 285, 0, 0, 293, 295, 297, 299, 301, - 302, 303, 304, 305, 306, 265, 0, 239, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 256, 257, 258, 259, 255, 260, 261, 262, 263, - 264, 0, 237, 0, 233, 234, 399, 0, 395, 396, - 547, 0, 543, 544, 586, 0, 582, 583, 484, 0, - 480, 481, 326, 327, 0, 321, 324, 325, 0, 336, - 337, 333, 0, 330, 334, 335, 315, 317, 0, 310, - 313, 314, 748, 0, 745, 703, 0, 699, 700, 361, - 0, 357, 358, 0, 0, 0, 0, 0, 0, 0, - 377, 380, 381, 382, 383, 384, 385, 791, 797, 0, - 0, 0, 790, 787, 788, 789, 0, 779, 782, 785, - 783, 784, 786, 0, 0, 0, 350, 0, 342, 345, - 346, 347, 348, 349, 829, 834, 836, 0, 859, 0, - 840, 828, 821, 822, 823, 826, 827, 0, 813, 816, - 817, 818, 819, 824, 825, 820, 811, 0, 807, 808, - 0, 913, 0, 916, 909, 910, 0, 903, 906, 907, - 908, 911, 0, 967, 0, 964, 0, 1010, 0, 1006, - 1009, 55, 623, 0, 619, 620, 668, 0, 664, 665, - 742, 0, 0, 64, 951, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 227, - 229, 0, 231, 236, 0, 393, 398, 551, 539, 546, - 590, 580, 585, 0, 478, 483, 323, 320, 339, 332, - 329, 0, 0, 312, 309, 750, 747, 744, 707, 697, - 702, 0, 355, 360, 0, 0, 0, 0, 0, 0, - 379, 376, 0, 0, 0, 0, 0, 781, 778, 0, - 0, 0, 344, 341, 0, 0, 0, 0, 0, 0, - 0, 815, 803, 0, 805, 810, 0, 0, 0, 0, - 905, 902, 919, 0, 966, 963, 0, 1008, 1005, 57, - 0, 56, 0, 617, 622, 0, 662, 667, 741, 960, - 0, 0, 0, 0, 274, 277, 278, 279, 280, 281, - 282, 283, 292, 284, 0, 290, 291, 0, 0, 0, - 0, 0, 240, 0, 235, 0, 397, 0, 545, 0, - 584, 537, 504, 505, 506, 508, 509, 510, 493, 494, - 513, 514, 515, 516, 517, 518, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 519, - 520, 534, 535, 536, 489, 490, 491, 492, 500, 501, - 502, 503, 497, 498, 499, 507, 0, 486, 495, 511, - 512, 496, 482, 322, 331, 0, 0, 311, 771, 773, - 0, 0, 769, 763, 764, 765, 766, 767, 768, 770, - 760, 761, 762, 0, 751, 752, 755, 756, 757, 758, - 759, 746, 0, 701, 0, 359, 386, 387, 388, 389, - 390, 391, 378, 0, 0, 796, 799, 800, 780, 351, - 352, 353, 343, 0, 0, 0, 838, 0, 839, 0, - 814, 0, 809, 912, 0, 915, 0, 904, 982, 0, - 980, 978, 972, 976, 977, 0, 969, 974, 975, 973, - 965, 1011, 1007, 54, 59, 0, 621, 0, 666, 267, - 269, 271, 273, 287, 288, 289, 286, 294, 296, 298, - 300, 307, 238, 400, 548, 587, 488, 485, 316, 318, - 0, 0, 0, 0, 749, 754, 704, 362, 793, 794, - 795, 792, 798, 831, 832, 833, 830, 835, 837, 0, - 842, 812, 914, 917, 0, 0, 0, 971, 968, 58, - 624, 669, 487, 0, 0, 775, 776, 753, 871, 874, - 876, 878, 870, 869, 868, 0, 861, 864, 865, 866, - 867, 847, 0, 843, 844, 0, 979, 0, 970, 772, - 774, 0, 0, 0, 0, 863, 860, 0, 841, 846, - 0, 981, 0, 0, 0, 0, 862, 857, 856, 852, - 854, 855, 0, 849, 853, 845, 987, 0, 984, 873, - 872, 875, 877, 880, 0, 851, 848, 0, 986, 983, - 885, 0, 881, 882, 0, 850, 997, 0, 0, 0, - 1002, 0, 989, 992, 993, 994, 995, 996, 985, 0, - 879, 884, 858, 0, 0, 0, 0, 0, 991, 988, - 897, 899, 896, 890, 892, 894, 895, 0, 887, 891, - 893, 883, 0, 999, 1000, 1001, 0, 990, 0, 0, - 889, 886, 998, 1003, 0, 0, 888, 898, 900 + 0, 0, 243, 229, 231, 0, 233, 238, 0, 395, + 400, 553, 541, 548, 592, 582, 587, 0, 480, 485, + 325, 322, 341, 334, 331, 0, 0, 314, 311, 752, + 749, 746, 709, 699, 704, 0, 357, 362, 0, 0, + 0, 0, 0, 0, 381, 378, 0, 0, 0, 0, + 0, 783, 780, 0, 0, 0, 346, 343, 0, 0, + 0, 0, 0, 0, 0, 817, 805, 0, 807, 812, + 0, 0, 0, 0, 907, 904, 921, 0, 968, 965, + 0, 1010, 1007, 57, 0, 56, 0, 619, 624, 0, + 664, 669, 743, 962, 0, 0, 0, 0, 276, 279, + 280, 281, 282, 283, 284, 285, 294, 286, 0, 292, + 293, 0, 0, 0, 0, 0, 242, 0, 237, 0, + 399, 0, 547, 0, 586, 539, 506, 507, 508, 510, + 511, 512, 495, 496, 515, 516, 517, 518, 519, 520, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 521, 522, 536, 537, 538, 491, 492, + 493, 494, 502, 503, 504, 505, 499, 500, 501, 509, + 0, 488, 497, 513, 514, 498, 484, 324, 333, 0, + 0, 313, 773, 775, 0, 0, 771, 765, 766, 767, + 768, 769, 770, 772, 762, 763, 764, 0, 753, 754, + 757, 758, 759, 760, 761, 748, 0, 703, 0, 361, + 388, 389, 390, 391, 392, 393, 380, 0, 0, 798, + 801, 802, 782, 353, 354, 355, 345, 0, 0, 0, + 840, 0, 841, 0, 816, 0, 811, 914, 0, 917, + 0, 906, 984, 0, 982, 980, 974, 978, 979, 0, + 971, 976, 977, 975, 967, 1013, 1009, 54, 59, 0, + 623, 0, 668, 269, 271, 273, 275, 289, 290, 291, + 288, 296, 298, 300, 302, 309, 240, 402, 550, 589, + 490, 487, 318, 320, 0, 0, 0, 0, 751, 756, + 706, 364, 795, 796, 797, 794, 800, 833, 834, 835, + 832, 837, 839, 0, 844, 814, 916, 919, 0, 0, + 0, 973, 970, 58, 626, 671, 489, 0, 0, 777, + 778, 755, 873, 876, 878, 880, 872, 871, 870, 0, + 863, 866, 867, 868, 869, 849, 0, 845, 846, 0, + 981, 0, 972, 774, 776, 0, 0, 0, 0, 865, + 862, 0, 843, 848, 0, 983, 0, 0, 0, 0, + 864, 859, 858, 854, 856, 857, 0, 851, 855, 847, + 989, 0, 986, 875, 874, 877, 879, 882, 0, 853, + 850, 0, 988, 985, 887, 0, 883, 884, 0, 852, + 999, 0, 0, 0, 1004, 0, 991, 994, 995, 996, + 997, 998, 987, 0, 881, 886, 860, 0, 0, 0, + 0, 0, 993, 990, 899, 901, 898, 892, 894, 896, + 897, 0, 889, 893, 895, 885, 0, 1001, 1002, 1003, + 0, 992, 0, 0, 891, 888, 1000, 1005, 0, 0, + 890, 900, 902 }; const short Dhcp6Parser::yypgoto_[] = { - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -10, -1445, -639, -1445, - 524, -1445, -1445, -1445, -1445, 477, -1445, -254, -1445, -1445, - -1445, -71, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 510, - 734, -1445, -1445, 4, 12, 22, 38, 41, 42, -57, - -54, -35, -15, 97, 100, 102, 103, -1445, 20, 23, - 45, 48, -1445, -1445, 55, -1445, 60, -1445, 66, 105, - 71, -1445, -1445, 73, 76, 78, 84, 90, -1445, 95, - -1445, 107, -1445, -1445, -1445, -1445, -1445, 108, -1445, 113, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 509, 732, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, 431, -1445, 187, -1445, -761, 193, -1445, -1445, - -1444, -1445, -1443, -1445, -1445, -1445, -1445, -55, -1445, -802, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -806, -1445, -800, -1445, -797, -1445, 82, - -1445, -1445, -1445, -1445, -1445, -1445, 172, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, 180, -787, -1445, -1445, -1445, -1445, - 178, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 146, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, 166, -1445, -1445, -1445, - 169, 699, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 161, - -1445, -1445, -1445, -1445, -1445, -1445, -1088, -1445, -1445, -1445, - 196, -1445, -1445, -1445, 200, 733, -1445, -1445, -1087, -1445, - -1086, -1445, 61, -1445, 85, -1445, 121, -1445, 125, -1445, - 115, 118, 119, -1445, -1085, -1445, -1445, -1445, -1445, 194, - -1445, -1445, -64, 1234, -1445, -1445, -1445, -1445, -1445, 204, - -1445, -1445, -1445, 208, -1445, 710, -1445, -65, -1445, -1445, - -1445, -1445, -1445, -61, -1445, -1445, -1445, -1445, -1445, -29, - -1445, -1445, -1445, 206, -1445, -1445, -1445, 210, -1445, 709, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, 140, -1445, -1445, -1445, 143, 760, - -1445, -1445, -63, -42, -1445, -13, -1445, -1445, -1445, -1445, - -1445, 142, -1445, -1445, -1445, 148, 741, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -58, -1445, -1445, -1445, 201, -1445, - -1445, -1445, 207, -1445, 735, 501, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1084, -1445, -1445, -1445, -1445, -1445, 212, -1445, -1445, - -1445, -45, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, 197, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 181, -1445, - 179, 184, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -101, -1445, -1445, -126, -1445, - -1445, -1445, -1445, -1445, -95, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -150, -1445, -1445, -177, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, 185, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 538, 737, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, 581, 736, -1445, - -1445, -1445, -1445, -1445, -1445, 188, -1445, -1445, -53, -1445, - -1445, -1445, -1445, -1445, -1445, -119, -1445, -1445, -142, -1445, - -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, -1445, 192, - -1445 + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -10, -1456, -643, -1456, + 561, -1456, -1456, -1456, -1456, 516, -1456, -244, -1456, -1456, + -1456, -71, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 543, + 765, -1456, -1456, 4, 12, 22, 38, 41, 42, -57, + -54, -35, -15, 97, 100, 102, 103, -1456, 20, 23, + 45, 48, -1456, -1456, 55, -1456, 60, -1456, 66, 105, + 71, -1456, -1456, 73, 76, 78, 84, 90, -1456, 95, + -1456, 107, -1456, -1456, -1456, -1456, -1456, 108, -1456, 113, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 545, + 767, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, 469, -1456, 226, -1456, -765, 233, -1456, + -1456, -1455, -1456, -1448, -1456, -1456, -1456, -1456, -55, -1456, + -806, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -810, -1456, -804, -1456, -801, -1456, + 123, -1456, -1456, -1456, -1456, -1456, -1456, 214, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 222, -791, -1456, -1456, -1456, + -1456, 216, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 187, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, 207, -1456, -1456, + -1456, 213, 739, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 202, -1456, -1456, -1456, -1456, -1456, -1456, -1092, -1456, -1456, + -1456, 239, -1456, -1456, -1456, 242, 774, -1456, -1456, -1091, + -1456, -1090, -1456, 61, -1456, 85, -1456, 122, -1456, 126, + -1456, 115, 118, 119, -1456, -1089, -1456, -1456, -1456, -1456, + 235, -1456, -1456, -27, 1280, -1456, -1456, -1456, -1456, -1456, + 245, -1456, -1456, -1456, 244, -1456, 753, -1456, -65, -1456, + -1456, -1456, -1456, -1456, -61, -1456, -1456, -1456, -1456, -1456, + -29, -1456, -1456, -1456, 248, -1456, -1456, -1456, 252, -1456, + 745, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, 182, -1456, -1456, -1456, 185, + 790, -1456, -1456, -63, -42, -1456, -13, -1456, -1456, -1456, + -1456, -1456, 177, -1456, -1456, -1456, 184, 792, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -58, -1456, -1456, -1456, 240, + -1456, -1456, -1456, 243, -1456, 777, 539, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1088, -1456, -1456, -1456, -1456, -1456, 253, -1456, + -1456, -1456, -7, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, 236, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 217, + -1456, 218, 223, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -64, -1456, -1456, -88, + -1456, -1456, -1456, -1456, -1456, -52, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -111, -1456, -1456, + -139, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 225, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 586, + 775, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, 621, 778, + -1456, -1456, -1456, -1456, -1456, -1456, 238, -1456, -1456, -5, + -1456, -1456, -1456, -1456, -1456, -1456, -69, -1456, -1456, -98, + -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, + 258, -1456 }; const short @@ -6044,689 +6056,686 @@ namespace isc { namespace dhcp { { 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 83, 39, 40, 69, - 805, 87, 88, 41, 68, 84, 85, 826, 1061, 1180, - 1181, 895, 43, 70, 90, 478, 91, 45, 71, 166, - 167, 168, 481, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 508, 790, 188, 509, 189, 510, 190, 191, - 192, 524, 802, 193, 194, 195, 196, 197, 546, 198, - 547, 199, 200, 201, 202, 502, 203, 204, 522, 205, - 523, 206, 207, 208, 209, 483, 47, 72, 246, 247, - 248, 556, 249, 250, 251, 252, 210, 484, 211, 485, - 212, 486, 923, 924, 925, 1101, 896, 897, 898, 1076, - 899, 1077, 900, 1078, 901, 1079, 902, 903, 600, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 1090, 1366, - 913, 914, 915, 916, 1093, 917, 1094, 918, 1095, 919, - 1096, 920, 1097, 213, 534, 958, 959, 960, 1121, 961, - 1122, 214, 531, 944, 945, 946, 947, 215, 533, 952, - 953, 954, 955, 216, 532, 217, 541, 1007, 1008, 1009, - 1010, 1011, 218, 537, 970, 971, 972, 1131, 63, 80, - 442, 443, 444, 615, 445, 616, 219, 538, 979, 980, - 981, 982, 983, 984, 985, 986, 220, 518, 927, 928, - 929, 1104, 49, 73, 300, 301, 302, 565, 303, 566, - 304, 567, 305, 573, 306, 570, 307, 571, 308, 572, - 221, 222, 223, 312, 313, 224, 525, 939, 940, 941, - 1113, 1266, 1267, 225, 519, 57, 77, 931, 932, 933, - 1107, 59, 78, 403, 404, 405, 406, 407, 408, 409, - 599, 410, 603, 411, 602, 412, 413, 604, 414, 226, - 520, 935, 936, 937, 1110, 61, 79, 426, 427, 428, - 429, 430, 608, 431, 432, 433, 434, 435, 436, 612, - 315, 563, 1063, 1064, 1065, 1182, 51, 74, 343, 344, - 345, 577, 346, 227, 526, 228, 527, 318, 564, 1067, - 1068, 1069, 1185, 53, 75, 363, 364, 365, 581, 366, - 367, 583, 368, 369, 229, 536, 966, 967, 968, 1128, - 55, 76, 382, 383, 384, 385, 589, 386, 590, 387, - 591, 388, 592, 389, 593, 390, 594, 391, 595, 392, - 588, 320, 574, 1071, 230, 535, 963, 964, 1125, 1293, - 1294, 1295, 1296, 1297, 1380, 1298, 1381, 1299, 1300, 231, - 539, 996, 997, 998, 1142, 1391, 999, 1000, 1143, 1001, - 1002, 232, 233, 542, 234, 543, 1037, 1038, 1039, 1163, - 1027, 1028, 1029, 1154, 1396, 1030, 1155, 1031, 1156, 1032, - 1033, 1034, 1160, 1432, 1433, 1434, 1447, 1462, 1463, 1464, - 1474, 1035, 1158, 1425, 1426, 1427, 1441, 1470, 1428, 1442, - 1429, 1443, 1430, 1444, 1481, 1482, 1483, 1499, 1517, 1518, - 1519, 1528, 1520, 1529, 235, 544, 1046, 1047, 1048, 1049, - 1167, 1050, 1051, 1169, 236, 545, 65, 81, 457, 458, - 459, 460, 620, 461, 462, 622, 463, 464, 465, 625, - 861, 466, 626, 237, 482, 67, 82, 469, 470, 471, - 629, 472, 238, 551, 1054, 1055, 1173, 1345, 1346, 1347, - 1348, 1406, 1349, 1404, 1467, 1468, 1477, 1491, 1492, 1493, - 1503, 1494, 1495, 1496, 1497, 1507, 239, 552, 1058, 1059, - 1060 + 809, 87, 88, 41, 68, 84, 85, 830, 1065, 1184, + 1185, 899, 43, 70, 90, 480, 91, 45, 71, 167, + 168, 169, 483, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 510, 794, 189, 511, 190, 512, 191, 192, + 193, 526, 806, 194, 195, 196, 197, 198, 548, 199, + 549, 200, 201, 202, 203, 504, 204, 205, 524, 206, + 525, 207, 208, 209, 210, 211, 485, 47, 72, 248, + 249, 250, 559, 251, 252, 253, 254, 212, 486, 213, + 487, 214, 488, 927, 928, 929, 1105, 900, 901, 902, + 1080, 903, 1081, 904, 1082, 905, 1083, 906, 907, 603, + 908, 909, 910, 911, 912, 913, 914, 915, 916, 1094, + 1370, 917, 918, 919, 920, 1097, 921, 1098, 922, 1099, + 923, 1100, 924, 1101, 215, 536, 962, 963, 964, 1125, + 965, 1126, 216, 533, 948, 949, 950, 951, 217, 535, + 956, 957, 958, 959, 218, 534, 219, 543, 1011, 1012, + 1013, 1014, 1015, 220, 539, 974, 975, 976, 1135, 63, + 80, 444, 445, 446, 618, 447, 619, 221, 540, 983, + 984, 985, 986, 987, 988, 989, 990, 222, 520, 931, + 932, 933, 1108, 49, 73, 302, 303, 304, 568, 305, + 569, 306, 570, 307, 576, 308, 573, 309, 574, 310, + 575, 223, 224, 225, 314, 315, 226, 527, 943, 944, + 945, 1117, 1270, 1271, 227, 521, 57, 77, 935, 936, + 937, 1111, 59, 78, 405, 406, 407, 408, 409, 410, + 411, 602, 412, 606, 413, 605, 414, 415, 607, 416, + 228, 522, 939, 940, 941, 1114, 61, 79, 428, 429, + 430, 431, 432, 611, 433, 434, 435, 436, 437, 438, + 615, 317, 566, 1067, 1068, 1069, 1186, 51, 74, 345, + 346, 347, 580, 348, 229, 528, 230, 529, 320, 567, + 1071, 1072, 1073, 1189, 53, 75, 365, 366, 367, 584, + 368, 369, 586, 370, 371, 231, 538, 970, 971, 972, + 1132, 55, 76, 384, 385, 386, 387, 592, 388, 593, + 389, 594, 390, 595, 391, 596, 392, 597, 393, 598, + 394, 591, 322, 577, 1075, 232, 537, 967, 968, 1129, + 1297, 1298, 1299, 1300, 1301, 1384, 1302, 1385, 1303, 1304, + 233, 541, 1000, 1001, 1002, 1146, 1395, 1003, 1004, 1147, + 1005, 1006, 234, 235, 544, 236, 545, 1041, 1042, 1043, + 1167, 1031, 1032, 1033, 1158, 1400, 1034, 1159, 1035, 1160, + 1036, 1037, 1038, 1164, 1436, 1437, 1438, 1451, 1466, 1467, + 1468, 1478, 1039, 1162, 1429, 1430, 1431, 1445, 1474, 1432, + 1446, 1433, 1447, 1434, 1448, 1485, 1486, 1487, 1503, 1521, + 1522, 1523, 1532, 1524, 1533, 237, 546, 1050, 1051, 1052, + 1053, 1171, 1054, 1055, 1173, 238, 547, 65, 81, 459, + 460, 461, 462, 623, 463, 464, 625, 465, 466, 467, + 628, 865, 468, 629, 239, 484, 67, 82, 471, 472, + 473, 632, 474, 240, 554, 1058, 1059, 1177, 1349, 1350, + 1351, 1352, 1410, 1353, 1408, 1471, 1472, 1481, 1495, 1496, + 1497, 1507, 1498, 1499, 1500, 1501, 1511, 241, 555, 1062, + 1063, 1064 }; const short Dhcp6Parser::yytable_[] = { - 165, 245, 267, 323, 354, 378, 38, 401, 422, 441, - 454, 1022, 360, 993, 424, 319, 274, 1023, 425, 275, - 1024, 921, 951, 402, 423, 1255, 1256, 1257, 1265, 1271, - 253, 316, 347, 361, 380, 394, 415, 437, 276, 455, - 942, 42, 1056, 804, 314, 342, 359, 379, 31, 30, - 32, 44, 33, 137, 138, 1513, 1514, 164, 277, 254, - 317, 348, 362, 381, 395, 416, 438, 86, 456, 46, - 439, 440, 240, 241, 242, 243, 244, 268, 479, 785, - 786, 787, 788, 480, 554, 269, 1513, 1514, 130, 555, - 48, 137, 138, 282, 324, 270, 283, 325, 987, 395, - 50, 396, 397, 873, 561, 52, 398, 399, 400, 562, - 635, 271, 575, 54, 272, 273, 789, 576, 284, 326, - 89, 285, 327, 804, 467, 468, 137, 138, 286, 328, - 1040, 1041, 1042, 287, 329, 338, 355, 943, 579, 288, - 330, 1418, 473, 580, 290, 331, 291, 332, 586, 292, - 333, 293, 334, 587, 56, 869, 870, 294, 335, 339, - 356, 164, 617, 295, 336, 58, 1457, 618, 296, 337, - 278, 137, 138, 279, 60, 280, 281, 627, 289, 1043, - 297, 298, 628, 62, 942, 949, 299, 950, 309, 137, - 138, 310, 311, 631, 1116, 340, 357, 1117, 632, 341, - 358, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 877, 878, 879, 880, 881, 882, 64, 164, 66, 883, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 554, 137, 138, 859, 860, 1073, 988, 989, 990, - 991, 474, 885, 886, 887, 137, 138, 475, 1119, 476, - 1486, 1120, 164, 1487, 1488, 1489, 1490, 973, 974, 975, - 976, 977, 978, 1126, 477, 395, 1127, 116, 117, 118, - 119, 120, 121, 122, 631, 124, 125, 126, 127, 1074, - 1174, 596, 131, 1175, 34, 35, 36, 37, 1255, 1256, - 1257, 1265, 1271, 561, 1098, 597, 135, 164, 1075, 1099, - 1419, 1420, 1421, 321, 487, 1478, 598, 1098, 1479, 395, - 137, 138, 1100, 137, 138, 164, 1510, 1511, 488, 98, - 99, 100, 101, 102, 103, 1123, 262, 263, 264, 489, - 1124, 490, 951, 265, 322, 491, 137, 138, 492, 1140, - 1213, 1147, 1152, 1161, 1141, 993, 1148, 1153, 1162, 137, - 138, 1170, 131, 395, 627, 1022, 1171, 1022, 164, 1172, - 1177, 1023, 1098, 1023, 1024, 1178, 1024, 1372, 131, 493, - 575, 164, 1014, 137, 138, 1373, 1015, 1016, 1017, 1018, - 137, 138, 439, 440, 1376, 617, 1019, 1020, 131, 1377, - 1387, 349, 350, 351, 352, 353, 137, 138, 494, 1278, - 1279, 1280, 1281, 1003, 1004, 1005, 157, 158, 956, 957, - 1161, 606, 262, 263, 264, 1401, 137, 138, 164, 265, - 322, 495, 496, 395, 417, 396, 397, 418, 419, 420, - 1407, 607, 370, 613, 497, 1408, 164, 498, 1338, 164, - 1339, 1340, 371, 372, 373, 374, 375, 376, 377, 499, - 137, 138, 500, 501, 446, 447, 448, 449, 450, 451, - 452, 453, 164, 579, 633, 634, 421, 586, 1410, 832, - 833, 834, 1411, 503, 614, 164, 888, 889, 890, 891, - 892, 893, 504, 165, 840, 841, 842, 843, 505, 1445, - 245, 1475, 1508, 1530, 1446, 506, 1476, 1509, 1531, 164, - 798, 799, 800, 801, 267, 854, 164, 507, 323, 1363, - 1364, 1365, 1388, 1389, 1390, 354, 511, 319, 274, 253, - 512, 275, 164, 360, 513, 514, 378, 515, 1393, 1394, - 1395, 516, 517, 316, 521, 528, 401, 347, 529, 530, - 276, 540, 164, 422, 361, 548, 314, 549, 254, 424, - 342, 550, 402, 425, 553, 380, 454, 359, 557, 423, - 277, 558, 317, 559, 560, 415, 348, 568, 379, 569, - 578, 582, 437, 362, 584, 585, 164, 601, 605, 268, - 609, 610, 611, 619, 381, 455, 621, 269, 623, 624, - 630, 636, 637, 638, 416, 282, 639, 270, 283, 324, - 640, 438, 325, 641, 642, 643, 644, 658, 645, 664, - 646, 647, 648, 271, 456, 649, 272, 273, 650, 651, - 284, 652, 653, 285, 326, 665, 654, 327, 655, 657, - 286, 656, 659, 660, 328, 287, 661, 662, 666, 329, - 338, 288, 674, 663, 667, 330, 290, 355, 291, 668, - 331, 292, 332, 293, 669, 333, 670, 334, 671, 294, - 675, 672, 676, 335, 339, 295, 673, 678, 677, 336, - 296, 356, 278, 679, 337, 279, 680, 280, 281, 681, - 289, 682, 297, 298, 683, 684, 685, 686, 299, 687, - 309, 688, 689, 310, 311, 690, 691, 692, 693, 694, - 340, 695, 697, 696, 341, 698, 165, 357, 699, 245, - 700, 358, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 701, 702, 703, 707, - 708, 704, 710, 716, 717, 718, 705, 706, 253, 711, - 712, 713, 714, 719, 992, 1006, 1021, 720, 721, 454, - 723, 722, 724, 1057, 725, 726, 727, 729, 732, 730, - 733, 734, 738, 739, 735, 740, 864, 254, 736, 741, - 742, 743, 1103, 994, 1012, 1025, 744, 1044, 455, 92, - 93, 745, 747, 94, 748, 750, 749, 751, 752, 95, - 96, 97, 753, 755, 759, 756, 757, 758, 761, 762, - 764, 765, 995, 1013, 1026, 767, 1045, 456, 770, 771, - 766, 768, 773, 776, 769, 783, 862, 774, 777, 779, - 780, 778, 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, 781, 782, 784, 791, - 792, 793, 794, 795, 796, 797, 132, 133, 134, 135, - 803, 32, 806, 807, 136, 808, 809, 821, 811, 810, - 812, 813, 818, 137, 138, 814, 815, 816, 817, 819, - 139, 140, 141, 142, 143, 144, 145, 820, 822, 146, - 823, 824, 825, 827, 828, 829, 830, 831, 147, 835, - 836, 837, 838, 863, 839, 844, 922, 148, 926, 845, - 149, 930, 846, 847, 848, 849, 934, 150, 938, 962, - 850, 851, 965, 969, 1036, 151, 152, 852, 1053, 1062, - 153, 154, 1066, 853, 855, 1080, 857, 371, 858, 1081, - 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 155, - 1092, 1102, 1106, 156, 1105, 1109, 1108, 1111, 1112, 1114, - 1115, 1195, 1118, 1130, 1129, 1132, 1133, 1164, 1134, 157, - 158, 159, 160, 161, 162, 1135, 1136, 1137, 1138, 1139, - 1144, 1145, 1146, 163, 1149, 1150, 1151, 1157, 1159, 1165, - 1197, 1166, 1168, 1176, 1179, 1184, 1183, 1186, 1187, 164, - 1189, 1188, 1190, 1191, 1192, 1193, 1194, 1196, 1198, 1204, - 1207, 1199, 1208, 1209, 1200, 1210, 1211, 1201, 1202, 1203, - 1275, 1276, 1205, 267, 1206, 1306, 401, 1313, 1307, 422, - 1308, 1309, 1221, 1314, 1310, 424, 319, 274, 1323, 425, - 275, 1319, 402, 1324, 1282, 423, 1228, 378, 1254, 1229, - 441, 1311, 316, 1315, 1316, 415, 1317, 1320, 437, 276, - 1289, 1269, 1321, 1325, 1326, 314, 992, 1327, 1230, 1328, - 1329, 1006, 1333, 1291, 1268, 1334, 380, 1335, 1336, 277, - 1021, 317, 1021, 1353, 416, 1351, 1290, 438, 1231, 379, - 1270, 1354, 1341, 1359, 1360, 994, 1057, 1361, 268, 1374, - 1012, 323, 1292, 1375, 354, 381, 269, 1222, 1342, 1025, - 1382, 1025, 360, 1383, 282, 1223, 270, 283, 1044, 1283, - 1362, 1343, 1367, 1236, 995, 1224, 1237, 1284, 1384, 1013, - 347, 1368, 271, 361, 1385, 272, 273, 1285, 1026, 284, - 1026, 1225, 285, 342, 1226, 1227, 359, 1045, 1238, 286, - 1344, 1239, 1386, 1286, 287, 1369, 1287, 1288, 1240, 348, - 288, 1371, 362, 1241, 1258, 290, 1399, 291, 1378, 1242, - 292, 1379, 293, 1392, 1244, 1397, 1245, 1400, 294, 1246, - 1405, 1247, 1413, 1414, 295, 1435, 1437, 1248, 1259, 296, - 1431, 278, 324, 1249, 279, 325, 280, 281, 1250, 289, - 1232, 297, 298, 1233, 1436, 1234, 1235, 299, 1243, 309, - 1251, 1252, 310, 311, 1415, 1448, 1253, 326, 1262, 1449, - 327, 1263, 1264, 1416, 1260, 1450, 1398, 328, 1261, 1452, - 1453, 1454, 329, 338, 1455, 1466, 355, 1402, 330, 1469, - 1473, 1480, 1484, 331, 1409, 332, 1500, 1501, 333, 1504, - 334, 1439, 1505, 1506, 1440, 1451, 335, 339, 1522, 1471, - 356, 1472, 336, 1502, 1526, 1523, 1524, 337, 1525, 1532, - 1534, 1533, 1535, 1537, 1538, 948, 856, 865, 709, 867, - 1214, 1212, 1370, 715, 1072, 1277, 1273, 1274, 1322, 1305, - 1304, 1312, 1216, 340, 1215, 1221, 357, 341, 728, 1272, - 358, 393, 1412, 1218, 1282, 1217, 763, 754, 1220, 1228, - 1219, 1254, 1229, 760, 1356, 1355, 1403, 737, 1422, 1358, - 1289, 1303, 746, 1357, 1269, 1302, 1341, 1070, 1301, 731, - 1417, 1230, 1331, 1291, 1318, 1330, 1332, 1268, 1465, 1485, - 1456, 1521, 1342, 1536, 1438, 1337, 1290, 1423, 1052, 1498, - 866, 1231, 1350, 1270, 772, 1343, 1527, 775, 0, 1352, - 0, 0, 1292, 0, 1422, 0, 1458, 0, 0, 0, - 1222, 0, 0, 0, 0, 0, 1424, 0, 1223, 1283, - 0, 0, 1459, 0, 1344, 0, 1236, 1284, 1224, 1237, - 0, 0, 0, 1423, 1458, 1460, 0, 1285, 0, 0, - 0, 0, 0, 0, 1225, 0, 0, 1226, 1227, 0, - 1459, 1238, 0, 1286, 1239, 0, 1287, 1288, 1512, 0, - 0, 1240, 1424, 1460, 1461, 0, 1241, 1258, 0, 0, - 0, 0, 1242, 0, 0, 0, 0, 1244, 0, 1245, - 0, 0, 1246, 0, 1247, 0, 0, 1515, 0, 1512, - 1248, 1259, 1461, 0, 0, 0, 1249, 0, 0, 0, - 0, 1250, 0, 1232, 0, 0, 1233, 0, 1234, 1235, - 0, 1243, 0, 1251, 1252, 0, 1516, 0, 1515, 1253, - 0, 1262, 0, 0, 1263, 1264, 0, 1260, 0, 0, - 0, 1261, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 0, 1516, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 0, 0, 131, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 133, 134, 135, - 0, 0, 0, 0, 0, 255, 0, 256, 0, 0, - 0, 0, 0, 137, 138, 257, 258, 259, 260, 261, - 139, 140, 141, 0, 0, 0, 0, 0, 0, 262, - 263, 264, 0, 0, 0, 0, 265, 0, 147, 0, - 0, 0, 0, 0, 0, 0, 266, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 0, 0, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 0, 131, 395, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 133, 134, 135, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, - 158, 137, 138, 0, 258, 259, 0, 261, 139, 140, - 141, 0, 0, 0, 0, 0, 0, 262, 263, 264, - 0, 0, 0, 0, 265, 0, 0, 0, 0, 164, - 0, 0, 0, 0, 266, 0, 0, 0, 0, 0, + 166, 247, 269, 325, 356, 380, 38, 403, 424, 443, + 456, 1026, 362, 997, 426, 321, 276, 1027, 427, 277, + 1028, 925, 955, 404, 425, 1259, 1260, 1261, 1269, 1275, + 255, 318, 349, 363, 382, 396, 417, 439, 278, 457, + 946, 1060, 808, 30, 316, 344, 361, 381, 1517, 441, + 442, 789, 790, 791, 792, 1518, 165, 42, 279, 256, + 319, 350, 364, 383, 44, 418, 440, 31, 458, 32, + 46, 33, 242, 243, 244, 245, 246, 270, 481, 1517, + 441, 442, 397, 482, 1120, 271, 1518, 1121, 86, 793, + 48, 1422, 89, 284, 326, 272, 285, 327, 991, 397, + 50, 398, 399, 877, 469, 470, 400, 401, 402, 137, + 138, 273, 557, 1123, 274, 275, 1124, 558, 286, 328, + 564, 287, 329, 808, 476, 565, 137, 138, 288, 330, + 863, 864, 578, 289, 331, 340, 357, 579, 947, 290, + 332, 165, 52, 582, 292, 333, 293, 334, 583, 294, + 335, 295, 336, 873, 874, 54, 589, 296, 337, 341, + 358, 590, 620, 297, 338, 960, 961, 621, 298, 339, + 280, 137, 138, 281, 630, 282, 283, 56, 291, 631, + 299, 300, 137, 138, 1461, 130, 301, 58, 311, 137, + 138, 312, 313, 889, 890, 891, 342, 359, 60, 62, + 343, 360, 872, 873, 874, 875, 876, 877, 878, 879, + 880, 881, 882, 883, 884, 885, 886, 131, 64, 66, + 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, + 897, 898, 946, 953, 475, 954, 165, 992, 993, 994, + 995, 477, 478, 137, 138, 137, 138, 137, 138, 479, + 1423, 1424, 1425, 165, 397, 419, 398, 399, 420, 421, + 422, 372, 634, 557, 137, 138, 397, 635, 1077, 489, + 490, 373, 374, 375, 376, 377, 378, 379, 634, 564, + 1102, 137, 138, 1078, 1079, 1103, 491, 492, 1259, 1260, + 1261, 1269, 1275, 1130, 397, 1102, 1131, 423, 165, 493, + 1104, 1007, 1008, 1009, 34, 35, 36, 37, 1127, 165, + 494, 495, 1144, 1128, 1514, 1515, 165, 1145, 496, 1151, + 1156, 137, 138, 1018, 1152, 1157, 1165, 1019, 1020, 1021, + 1022, 1166, 955, 497, 137, 138, 1174, 1023, 1024, 630, + 1217, 1175, 498, 1490, 1176, 997, 1491, 1492, 1493, 1494, + 499, 1181, 599, 1102, 578, 1026, 1182, 1026, 1376, 1377, + 1380, 1027, 620, 1027, 1028, 1381, 1028, 1391, 1165, 600, + 165, 500, 165, 1405, 165, 501, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 1178, 165, 502, 1179, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 1482, 165, 131, + 1483, 1044, 1045, 1046, 977, 978, 979, 980, 981, 982, + 165, 133, 134, 135, 1342, 1411, 1343, 1344, 582, 257, + 1412, 258, 503, 1414, 1367, 1368, 1369, 137, 138, 259, + 260, 261, 262, 263, 139, 140, 141, 589, 165, 505, + 506, 131, 1415, 264, 265, 266, 507, 508, 1449, 1479, + 267, 1047, 147, 1450, 1480, 509, 636, 637, 1512, 610, + 268, 513, 514, 1513, 351, 352, 353, 354, 355, 137, + 138, 515, 516, 836, 837, 838, 166, 892, 893, 894, + 895, 896, 897, 247, 517, 264, 265, 266, 844, 845, + 846, 847, 267, 324, 1534, 601, 518, 269, 519, 1535, + 523, 325, 802, 803, 804, 805, 530, 531, 356, 858, + 321, 276, 255, 532, 277, 542, 362, 550, 551, 380, + 1392, 1393, 1394, 157, 158, 552, 318, 553, 556, 403, + 349, 560, 561, 278, 562, 563, 424, 363, 571, 316, + 572, 256, 426, 344, 581, 404, 427, 585, 382, 456, + 361, 587, 425, 279, 165, 319, 588, 604, 417, 350, + 608, 381, 1397, 1398, 1399, 439, 364, 609, 612, 613, + 614, 616, 270, 617, 638, 622, 624, 383, 457, 626, + 271, 627, 633, 639, 640, 641, 642, 418, 284, 643, + 272, 285, 326, 644, 440, 327, 165, 645, 654, 661, + 667, 646, 647, 668, 669, 648, 273, 458, 649, 274, + 275, 650, 651, 286, 652, 653, 287, 328, 655, 656, + 329, 664, 658, 288, 657, 137, 138, 330, 289, 665, + 659, 660, 331, 340, 290, 662, 663, 677, 332, 292, + 357, 293, 666, 333, 294, 334, 295, 670, 335, 671, + 336, 672, 296, 673, 674, 678, 337, 341, 297, 675, + 679, 681, 338, 298, 358, 280, 676, 339, 281, 680, + 282, 283, 682, 291, 683, 299, 300, 684, 685, 686, + 690, 301, 687, 311, 688, 689, 312, 313, 691, 692, + 693, 694, 695, 696, 342, 697, 698, 699, 343, 700, + 166, 359, 701, 247, 702, 360, 448, 449, 450, 451, + 452, 453, 454, 455, 703, 704, 705, 706, 707, 708, + 709, 710, 711, 712, 714, 98, 99, 100, 101, 102, + 103, 715, 255, 716, 720, 721, 717, 722, 996, 1010, + 1025, 718, 723, 456, 724, 726, 727, 1061, 725, 728, + 729, 730, 165, 731, 733, 734, 736, 738, 131, 397, + 868, 256, 737, 739, 742, 740, 781, 998, 1016, 1029, + 743, 1048, 457, 92, 93, 744, 745, 94, 746, 747, + 748, 749, 751, 95, 96, 97, 137, 138, 752, 753, + 754, 755, 756, 757, 759, 760, 999, 1017, 1030, 761, + 1049, 458, 762, 763, 765, 1282, 1283, 1284, 1285, 766, + 769, 770, 768, 771, 774, 775, 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, + 772, 773, 777, 778, 780, 782, 783, 788, 784, 785, + 132, 133, 134, 135, 786, 787, 795, 796, 136, 797, + 798, 799, 800, 801, 807, 32, 810, 137, 138, 811, + 812, 813, 815, 816, 139, 140, 141, 142, 143, 144, + 145, 814, 817, 146, 825, 818, 819, 820, 821, 822, + 823, 826, 147, 824, 827, 828, 829, 831, 832, 833, + 866, 148, 840, 165, 149, 867, 926, 1084, 930, 834, + 835, 150, 839, 841, 842, 843, 934, 938, 942, 151, + 152, 966, 848, 969, 153, 154, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 973, 849, 1040, 155, 1057, 1066, 850, 156, 851, 852, + 1070, 373, 1085, 853, 854, 855, 856, 857, 859, 861, + 862, 1086, 1087, 157, 158, 159, 160, 161, 162, 163, + 1088, 1089, 1090, 1091, 1092, 1093, 1095, 1096, 164, 1107, + 1106, 1109, 1110, 1112, 1113, 1116, 1115, 1119, 1183, 1118, + 1134, 1122, 1133, 1137, 165, 1136, 1138, 1139, 1140, 1141, + 1142, 1143, 1148, 1149, 1150, 1153, 1154, 1155, 1161, 1163, + 1169, 1188, 1168, 1170, 1172, 1180, 1198, 269, 1187, 1190, + 403, 1191, 1192, 424, 1194, 1193, 1225, 1195, 1196, 426, + 321, 276, 1197, 427, 277, 1208, 404, 1199, 1286, 425, + 1232, 380, 1258, 1233, 443, 1200, 318, 1202, 1201, 417, + 1203, 1204, 439, 278, 1293, 1273, 1205, 1206, 1207, 316, + 996, 1209, 1234, 1210, 1211, 1010, 1212, 1295, 1272, 1213, + 382, 1214, 1215, 279, 1025, 319, 1025, 1279, 418, 1280, + 1294, 440, 1235, 381, 1274, 1317, 1345, 1310, 1311, 998, + 1061, 1312, 270, 1318, 1016, 325, 1296, 1323, 356, 383, + 271, 1226, 1346, 1029, 1313, 1029, 362, 1327, 284, 1227, + 272, 285, 1048, 1287, 1314, 1347, 1315, 1240, 999, 1228, + 1241, 1288, 1328, 1017, 349, 1319, 273, 363, 1320, 274, + 275, 1289, 1030, 286, 1030, 1229, 287, 344, 1230, 1231, + 361, 1049, 1242, 288, 1348, 1243, 1329, 1290, 289, 1321, + 1291, 1292, 1244, 350, 290, 1324, 364, 1245, 1262, 292, + 1325, 293, 1330, 1246, 294, 1331, 295, 1332, 1248, 1333, + 1249, 1337, 296, 1250, 1338, 1251, 1340, 1339, 297, 1357, + 1358, 1252, 1263, 298, 1355, 280, 326, 1253, 281, 327, + 282, 283, 1254, 291, 1236, 299, 300, 1237, 1363, 1238, + 1239, 301, 1247, 311, 1255, 1256, 312, 313, 1378, 1379, + 1257, 328, 1266, 1386, 329, 1267, 1268, 1387, 1388, 1264, + 1364, 330, 1389, 1265, 1390, 1403, 331, 340, 1404, 1409, + 357, 1417, 332, 1365, 1418, 1435, 1439, 333, 1441, 334, + 1453, 1452, 335, 1454, 336, 1456, 1457, 1458, 1459, 1505, + 337, 341, 1470, 1473, 358, 1477, 338, 1366, 1371, 1372, + 1484, 339, 1488, 1373, 1375, 1504, 1508, 1382, 1383, 1396, + 1509, 1401, 1402, 1510, 1406, 1413, 1526, 1530, 1443, 1419, + 1420, 1440, 1444, 1455, 1475, 1476, 1506, 1538, 342, 1225, + 1527, 359, 343, 1528, 1529, 360, 1536, 1537, 1286, 1539, + 1541, 1542, 713, 1232, 869, 1258, 1233, 860, 952, 871, + 1407, 719, 1426, 1218, 1293, 1216, 1076, 1374, 1273, 1278, + 1345, 1281, 1277, 1326, 1309, 1234, 1316, 1295, 1308, 1220, + 1219, 1272, 732, 1416, 1276, 1221, 1346, 395, 1222, 767, + 1294, 1427, 764, 758, 1224, 1235, 1223, 1274, 1362, 1347, + 1360, 1359, 735, 1361, 1307, 1306, 1296, 750, 1426, 1074, + 1462, 741, 1421, 1305, 1226, 1335, 1336, 1322, 1334, 1469, + 1428, 1489, 1227, 1287, 1525, 1540, 1463, 1460, 1348, 1341, + 1240, 1288, 1228, 1241, 870, 776, 1442, 1427, 1462, 1464, + 1056, 1289, 779, 1502, 1531, 0, 1354, 0, 1229, 0, + 0, 1230, 1231, 0, 1463, 1242, 0, 1290, 1243, 0, + 1291, 1292, 1516, 0, 0, 1244, 1428, 1464, 1465, 1356, + 1245, 1262, 0, 0, 0, 0, 1246, 0, 0, 0, + 0, 1248, 0, 1249, 0, 0, 1250, 0, 1251, 0, + 0, 1519, 0, 1516, 1252, 1263, 1465, 0, 0, 0, + 1253, 0, 0, 0, 0, 1254, 0, 1236, 0, 0, + 1237, 0, 1238, 1239, 0, 1247, 0, 1255, 1256, 0, + 1520, 0, 1519, 1257, 0, 1266, 0, 0, 1267, 1268, + 0, 0, 1264, 0, 0, 0, 1265, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 1520, 0, 0, 0, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 131, 397, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, + 0, 260, 261, 0, 263, 139, 140, 141, 0, 0, + 0, 0, 0, 0, 264, 265, 266, 0, 0, 0, + 0, 267, 0, 0, 116, 117, 118, 119, 120, 121, + 122, 268, 124, 125, 126, 127, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, + 323, 0, 0, 0, 0, 0, 0, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 265, 266, 0, 0, 0, 0, + 267, 324, 0, 0, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 164 + 0, 0, 0, 157, 158, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 165 }; const short Dhcp6Parser::yycheck_[] = { 71, 72, 73, 74, 75, 76, 16, 78, 79, 80, - 81, 817, 75, 815, 79, 73, 73, 817, 79, 73, - 817, 782, 809, 78, 79, 1113, 1113, 1113, 1113, 1113, + 81, 821, 75, 819, 79, 73, 73, 821, 79, 73, + 821, 786, 813, 78, 79, 1117, 1117, 1117, 1117, 1117, 72, 73, 74, 75, 76, 24, 78, 79, 73, 81, - 144, 7, 226, 682, 73, 74, 75, 76, 5, 0, - 7, 7, 9, 115, 116, 1499, 1499, 241, 73, 72, - 73, 74, 75, 76, 88, 78, 79, 241, 81, 7, - 150, 151, 16, 17, 18, 19, 20, 73, 3, 207, - 208, 209, 210, 8, 3, 73, 1530, 1530, 86, 8, - 7, 115, 116, 73, 74, 73, 73, 74, 24, 88, - 7, 90, 91, 29, 3, 7, 95, 96, 97, 8, - 241, 73, 3, 7, 73, 73, 244, 8, 73, 74, - 10, 73, 74, 762, 13, 14, 115, 116, 73, 74, - 192, 193, 194, 73, 74, 74, 75, 241, 3, 73, - 74, 24, 6, 8, 73, 74, 73, 74, 3, 73, - 74, 73, 74, 8, 7, 25, 26, 73, 74, 74, - 75, 241, 3, 73, 74, 7, 190, 8, 73, 74, - 73, 115, 116, 73, 7, 73, 73, 3, 73, 241, - 73, 73, 8, 7, 144, 145, 73, 147, 73, 115, - 116, 73, 73, 3, 3, 74, 75, 6, 8, 74, - 75, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 7, 241, 7, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 3, 115, 116, 204, 205, 8, 163, 164, 165, - 166, 3, 44, 45, 46, 115, 116, 4, 3, 8, - 218, 6, 241, 221, 222, 223, 224, 153, 154, 155, - 156, 157, 158, 3, 3, 88, 6, 72, 73, 74, - 75, 76, 77, 78, 3, 80, 81, 82, 83, 8, - 3, 8, 87, 6, 241, 242, 243, 244, 1376, 1376, - 1376, 1376, 1376, 3, 3, 3, 101, 241, 8, 8, - 183, 184, 185, 108, 4, 3, 8, 3, 6, 88, - 115, 116, 8, 115, 116, 241, 186, 187, 4, 54, - 55, 56, 57, 58, 59, 3, 131, 132, 133, 4, - 8, 4, 1119, 138, 139, 4, 115, 116, 4, 3, - 1101, 3, 3, 3, 8, 1147, 8, 8, 8, 115, - 116, 3, 87, 88, 3, 1161, 8, 1163, 241, 8, - 3, 1161, 3, 1163, 1161, 8, 1163, 8, 87, 4, - 3, 241, 174, 115, 116, 8, 178, 179, 180, 181, - 115, 116, 150, 151, 3, 3, 188, 189, 87, 8, - 8, 110, 111, 112, 113, 114, 115, 116, 4, 134, - 135, 136, 137, 169, 170, 171, 211, 212, 129, 130, - 3, 8, 131, 132, 133, 8, 115, 116, 241, 138, - 139, 4, 4, 88, 89, 90, 91, 92, 93, 94, - 3, 3, 131, 8, 4, 8, 241, 4, 217, 241, - 219, 220, 141, 142, 143, 144, 145, 146, 147, 4, - 115, 116, 4, 4, 196, 197, 198, 199, 200, 201, - 202, 203, 241, 3, 474, 475, 131, 3, 8, 723, - 724, 725, 8, 4, 3, 241, 47, 48, 49, 50, - 51, 52, 4, 554, 738, 739, 740, 741, 4, 3, - 561, 3, 3, 3, 8, 4, 8, 8, 8, 241, - 102, 103, 104, 105, 575, 759, 241, 4, 579, 39, - 40, 41, 160, 161, 162, 586, 4, 575, 575, 561, - 4, 575, 241, 586, 4, 4, 597, 4, 175, 176, - 177, 4, 4, 575, 4, 4, 607, 579, 4, 4, - 575, 4, 241, 614, 586, 4, 575, 4, 561, 614, - 579, 4, 607, 614, 4, 597, 627, 586, 4, 614, - 575, 4, 575, 4, 4, 607, 579, 4, 597, 4, - 4, 4, 614, 586, 4, 4, 241, 4, 4, 575, - 4, 4, 4, 4, 597, 627, 4, 575, 4, 4, - 4, 4, 4, 4, 607, 575, 4, 575, 575, 579, - 4, 614, 579, 4, 4, 242, 242, 4, 242, 4, - 242, 242, 242, 575, 627, 242, 575, 575, 242, 244, - 575, 243, 243, 575, 579, 4, 243, 579, 242, 242, - 575, 243, 242, 242, 579, 575, 244, 244, 4, 579, - 579, 575, 4, 244, 244, 579, 575, 586, 575, 244, - 579, 575, 579, 575, 243, 579, 242, 579, 242, 575, - 4, 242, 4, 579, 579, 575, 244, 4, 242, 579, - 575, 586, 575, 4, 579, 575, 4, 575, 575, 4, - 575, 4, 575, 575, 4, 244, 244, 244, 575, 4, - 575, 4, 4, 575, 575, 4, 4, 4, 4, 4, - 579, 4, 4, 242, 579, 4, 777, 586, 4, 780, - 4, 586, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 4, 4, 4, 4, - 4, 244, 4, 4, 4, 4, 244, 244, 780, 244, - 244, 242, 242, 4, 815, 816, 817, 4, 242, 820, - 4, 244, 4, 824, 4, 4, 4, 4, 4, 242, - 242, 4, 4, 4, 242, 4, 776, 780, 242, 4, - 4, 4, 3, 815, 816, 817, 4, 819, 820, 11, - 12, 4, 4, 15, 4, 4, 242, 4, 4, 21, - 22, 23, 244, 4, 4, 244, 244, 244, 4, 4, - 244, 4, 815, 816, 817, 4, 819, 820, 4, 4, - 242, 242, 4, 4, 242, 5, 206, 242, 7, 7, - 7, 241, 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, 7, 7, 241, 241, - 241, 5, 5, 5, 241, 241, 98, 99, 100, 101, - 5, 7, 241, 5, 106, 5, 5, 241, 5, 7, - 5, 5, 5, 115, 116, 7, 7, 7, 7, 7, - 122, 123, 124, 125, 126, 127, 128, 7, 241, 131, - 5, 7, 5, 5, 5, 241, 241, 241, 140, 241, - 7, 241, 241, 5, 241, 241, 7, 149, 7, 241, - 152, 7, 241, 241, 241, 241, 7, 159, 7, 7, - 241, 241, 7, 7, 7, 167, 168, 241, 7, 7, - 172, 173, 7, 241, 241, 4, 241, 141, 241, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 191, - 4, 6, 3, 195, 6, 3, 6, 6, 3, 6, - 3, 244, 6, 3, 6, 6, 3, 6, 4, 211, - 212, 213, 214, 215, 216, 4, 4, 4, 4, 4, - 4, 4, 4, 225, 4, 4, 4, 4, 4, 3, - 244, 4, 4, 4, 241, 3, 6, 6, 3, 241, - 6, 8, 4, 4, 4, 4, 242, 242, 242, 4, - 4, 242, 4, 4, 242, 4, 4, 242, 242, 242, - 4, 4, 244, 1104, 242, 242, 1107, 4, 242, 1110, - 242, 242, 1113, 4, 242, 1110, 1104, 1104, 4, 1110, - 1104, 244, 1107, 4, 1125, 1110, 1113, 1128, 1113, 1113, - 1131, 242, 1104, 242, 242, 1107, 242, 242, 1110, 1104, - 1125, 1113, 242, 4, 242, 1104, 1147, 4, 1113, 244, - 4, 1152, 244, 1125, 1113, 4, 1128, 242, 4, 1104, - 1161, 1104, 1163, 6, 1107, 244, 1125, 1110, 1113, 1128, - 1113, 3, 1173, 241, 241, 1147, 1177, 241, 1104, 8, - 1152, 1182, 1125, 8, 1185, 1128, 1104, 1113, 1173, 1161, - 4, 1163, 1185, 4, 1104, 1113, 1104, 1104, 1170, 1125, - 241, 1173, 241, 1113, 1147, 1113, 1113, 1125, 8, 1152, - 1182, 241, 1104, 1185, 3, 1104, 1104, 1125, 1161, 1104, - 1163, 1113, 1104, 1182, 1113, 1113, 1185, 1170, 1113, 1104, - 1173, 1113, 8, 1125, 1104, 241, 1125, 1125, 1113, 1182, - 1104, 241, 1185, 1113, 1113, 1104, 7, 1104, 241, 1113, - 1104, 241, 1104, 241, 1113, 241, 1113, 5, 1104, 1113, - 4, 1113, 4, 4, 1104, 4, 4, 1113, 1113, 1104, - 7, 1104, 1182, 1113, 1104, 1182, 1104, 1104, 1113, 1104, - 1113, 1104, 1104, 1113, 242, 1113, 1113, 1104, 1113, 1104, - 1113, 1113, 1104, 1104, 244, 6, 1113, 1182, 1113, 3, - 1182, 1113, 1113, 244, 1113, 5, 241, 1182, 1113, 4, - 4, 4, 1182, 1182, 4, 7, 1185, 241, 1182, 182, - 5, 7, 4, 1182, 241, 1182, 6, 3, 1182, 4, - 1182, 241, 4, 4, 241, 241, 1182, 1182, 4, 241, - 1185, 241, 1182, 241, 4, 244, 242, 1182, 242, 241, - 4, 241, 4, 241, 241, 808, 762, 777, 554, 780, - 1103, 1098, 1210, 561, 863, 1123, 1116, 1119, 1152, 1133, - 1131, 1140, 1106, 1182, 1104, 1376, 1185, 1182, 575, 1115, - 1185, 77, 1376, 1109, 1385, 1107, 617, 607, 1112, 1376, - 1110, 1376, 1376, 614, 1184, 1182, 1336, 586, 1399, 1187, - 1385, 1130, 597, 1185, 1376, 1128, 1407, 836, 1126, 579, - 1385, 1376, 1163, 1385, 1147, 1161, 1165, 1376, 1449, 1475, - 1445, 1501, 1407, 1530, 1407, 1170, 1385, 1399, 820, 1478, - 779, 1376, 1174, 1376, 627, 1407, 1508, 631, -1, 1177, - -1, -1, 1385, -1, 1445, -1, 1447, -1, -1, -1, - 1376, -1, -1, -1, -1, -1, 1399, -1, 1376, 1385, - -1, -1, 1447, -1, 1407, -1, 1376, 1385, 1376, 1376, - -1, -1, -1, 1445, 1475, 1447, -1, 1385, -1, -1, - -1, -1, -1, -1, 1376, -1, -1, 1376, 1376, -1, - 1475, 1376, -1, 1385, 1376, -1, 1385, 1385, 1499, -1, - -1, 1376, 1445, 1475, 1447, -1, 1376, 1376, -1, -1, - -1, -1, 1376, -1, -1, -1, -1, 1376, -1, 1376, - -1, -1, 1376, -1, 1376, -1, -1, 1499, -1, 1530, - 1376, 1376, 1475, -1, -1, -1, 1376, -1, -1, -1, - -1, 1376, -1, 1376, -1, -1, 1376, -1, 1376, 1376, - -1, 1376, -1, 1376, 1376, -1, 1499, -1, 1530, 1376, - -1, 1376, -1, -1, 1376, 1376, -1, 1376, -1, -1, - -1, 1376, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, 1530, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, -1, 87, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, - -1, -1, -1, -1, -1, 107, -1, 109, -1, -1, - -1, -1, -1, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, -1, -1, -1, -1, -1, -1, 131, - 132, 133, -1, -1, -1, -1, 138, -1, 140, -1, - -1, -1, -1, -1, -1, -1, 148, -1, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, -1, 87, 88, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 99, 100, 101, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, - 212, 115, 116, -1, 118, 119, -1, 121, 122, 123, - 124, -1, -1, -1, -1, -1, -1, 131, 132, 133, - -1, -1, -1, -1, 138, -1, -1, -1, -1, 241, - -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, + 144, 227, 685, 0, 73, 74, 75, 76, 1503, 150, + 151, 207, 208, 209, 210, 1503, 242, 7, 73, 72, + 73, 74, 75, 76, 7, 78, 79, 5, 81, 7, + 7, 9, 16, 17, 18, 19, 20, 73, 3, 1534, + 150, 151, 88, 8, 3, 73, 1534, 6, 242, 245, + 7, 24, 10, 73, 74, 73, 73, 74, 24, 88, + 7, 90, 91, 29, 13, 14, 95, 96, 97, 115, + 116, 73, 3, 3, 73, 73, 6, 8, 73, 74, + 3, 73, 74, 766, 3, 8, 115, 116, 73, 74, + 204, 205, 3, 73, 74, 74, 75, 8, 242, 73, + 74, 242, 7, 3, 73, 74, 73, 74, 8, 73, + 74, 73, 74, 25, 26, 7, 3, 73, 74, 74, + 75, 8, 3, 73, 74, 129, 130, 8, 73, 74, + 73, 115, 116, 73, 3, 73, 73, 7, 73, 8, + 73, 73, 115, 116, 190, 86, 73, 7, 73, 115, + 116, 73, 73, 44, 45, 46, 74, 75, 7, 7, + 74, 75, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 87, 7, 7, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 144, 145, 6, 147, 242, 163, 164, 165, + 166, 4, 8, 115, 116, 115, 116, 115, 116, 3, + 183, 184, 185, 242, 88, 89, 90, 91, 92, 93, + 94, 131, 3, 3, 115, 116, 88, 8, 8, 4, + 4, 141, 142, 143, 144, 145, 146, 147, 3, 3, + 3, 115, 116, 8, 8, 8, 4, 4, 1380, 1380, + 1380, 1380, 1380, 3, 88, 3, 6, 131, 242, 4, + 8, 169, 170, 171, 242, 243, 244, 245, 3, 242, + 4, 4, 3, 8, 186, 187, 242, 8, 4, 3, + 3, 115, 116, 174, 8, 8, 3, 178, 179, 180, + 181, 8, 1123, 4, 115, 116, 3, 188, 189, 3, + 1105, 8, 4, 219, 8, 1151, 222, 223, 224, 225, + 4, 3, 8, 3, 3, 1165, 8, 1167, 8, 8, + 3, 1165, 3, 1167, 1165, 8, 1167, 8, 3, 3, + 242, 4, 242, 8, 242, 4, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 3, 242, 4, 6, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 3, 242, 87, + 6, 192, 193, 194, 153, 154, 155, 156, 157, 158, + 242, 99, 100, 101, 218, 3, 220, 221, 3, 107, + 8, 109, 4, 8, 39, 40, 41, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 3, 242, 4, + 4, 87, 8, 131, 132, 133, 4, 4, 3, 3, + 138, 242, 140, 8, 8, 4, 476, 477, 3, 3, + 148, 4, 4, 8, 110, 111, 112, 113, 114, 115, + 116, 4, 4, 727, 728, 729, 557, 47, 48, 49, + 50, 51, 52, 564, 4, 131, 132, 133, 742, 743, + 744, 745, 138, 139, 3, 8, 4, 578, 4, 8, + 4, 582, 102, 103, 104, 105, 4, 4, 589, 763, + 578, 578, 564, 4, 578, 4, 589, 4, 4, 600, + 160, 161, 162, 211, 212, 4, 578, 4, 4, 610, + 582, 4, 4, 578, 4, 4, 617, 589, 4, 578, + 4, 564, 617, 582, 4, 610, 617, 4, 600, 630, + 589, 4, 617, 578, 242, 578, 4, 4, 610, 582, + 4, 600, 175, 176, 177, 617, 589, 8, 4, 4, + 4, 8, 578, 3, 242, 4, 4, 600, 630, 4, + 578, 4, 4, 4, 4, 4, 4, 610, 578, 4, + 578, 578, 582, 4, 617, 582, 242, 4, 245, 4, + 4, 243, 243, 4, 4, 243, 578, 630, 243, 578, + 578, 243, 243, 578, 243, 243, 578, 582, 244, 244, + 582, 245, 243, 578, 244, 115, 116, 582, 578, 245, + 244, 243, 582, 582, 578, 243, 243, 4, 582, 578, + 589, 578, 245, 582, 578, 582, 578, 245, 582, 245, + 582, 244, 578, 243, 243, 4, 582, 582, 578, 243, + 4, 4, 582, 578, 589, 578, 245, 582, 578, 243, + 578, 578, 4, 578, 4, 578, 578, 4, 4, 4, + 4, 578, 245, 578, 245, 245, 578, 578, 4, 4, + 4, 4, 4, 4, 582, 4, 4, 243, 582, 4, + 781, 589, 4, 784, 4, 589, 196, 197, 198, 199, + 200, 201, 202, 203, 4, 4, 4, 4, 245, 245, + 245, 245, 4, 4, 4, 54, 55, 56, 57, 58, + 59, 245, 784, 245, 4, 4, 243, 4, 819, 820, + 821, 243, 4, 824, 4, 245, 4, 828, 243, 4, + 4, 4, 242, 4, 4, 243, 4, 4, 87, 88, + 780, 784, 243, 243, 4, 243, 7, 819, 820, 821, + 4, 823, 824, 11, 12, 4, 4, 15, 4, 4, + 4, 4, 4, 21, 22, 23, 115, 116, 4, 243, + 4, 4, 4, 245, 4, 245, 819, 820, 821, 245, + 823, 824, 245, 4, 4, 134, 135, 136, 137, 4, + 4, 243, 245, 4, 4, 4, 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, + 243, 243, 4, 243, 4, 242, 7, 242, 7, 7, + 98, 99, 100, 101, 7, 5, 242, 242, 106, 5, + 5, 5, 242, 242, 5, 7, 242, 115, 116, 5, + 5, 5, 5, 5, 122, 123, 124, 125, 126, 127, + 128, 7, 5, 131, 242, 7, 7, 7, 7, 5, + 7, 242, 140, 7, 5, 7, 5, 5, 5, 242, + 206, 149, 7, 242, 152, 5, 7, 4, 7, 242, + 242, 159, 242, 242, 242, 242, 7, 7, 7, 167, + 168, 7, 242, 7, 172, 173, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 7, 242, 7, 191, 7, 7, 242, 195, 242, 242, + 7, 141, 4, 242, 242, 242, 242, 242, 242, 242, + 242, 4, 4, 211, 212, 213, 214, 215, 216, 217, + 4, 4, 4, 4, 4, 4, 4, 4, 226, 3, + 6, 6, 3, 6, 3, 3, 6, 3, 242, 6, + 3, 6, 6, 3, 242, 6, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 3, 3, 6, 4, 4, 4, 243, 1108, 6, 6, + 1111, 3, 8, 1114, 4, 6, 1117, 4, 4, 1114, + 1108, 1108, 4, 1114, 1108, 4, 1111, 245, 1129, 1114, + 1117, 1132, 1117, 1117, 1135, 243, 1108, 243, 245, 1111, + 243, 243, 1114, 1108, 1129, 1117, 243, 243, 243, 1108, + 1151, 245, 1117, 243, 4, 1156, 4, 1129, 1117, 4, + 1132, 4, 4, 1108, 1165, 1108, 1167, 4, 1111, 4, + 1129, 1114, 1117, 1132, 1117, 4, 1177, 243, 243, 1151, + 1181, 243, 1108, 4, 1156, 1186, 1129, 245, 1189, 1132, + 1108, 1117, 1177, 1165, 243, 1167, 1189, 4, 1108, 1117, + 1108, 1108, 1174, 1129, 243, 1177, 243, 1117, 1151, 1117, + 1117, 1129, 4, 1156, 1186, 243, 1108, 1189, 243, 1108, + 1108, 1129, 1165, 1108, 1167, 1117, 1108, 1186, 1117, 1117, + 1189, 1174, 1117, 1108, 1177, 1117, 4, 1129, 1108, 243, + 1129, 1129, 1117, 1186, 1108, 243, 1189, 1117, 1117, 1108, + 243, 1108, 243, 1117, 1108, 4, 1108, 245, 1117, 4, + 1117, 245, 1108, 1117, 4, 1117, 4, 243, 1108, 6, + 3, 1117, 1117, 1108, 245, 1108, 1186, 1117, 1108, 1186, + 1108, 1108, 1117, 1108, 1117, 1108, 1108, 1117, 242, 1117, + 1117, 1108, 1117, 1108, 1117, 1117, 1108, 1108, 8, 8, + 1117, 1186, 1117, 4, 1186, 1117, 1117, 4, 8, 1117, + 242, 1186, 3, 1117, 8, 7, 1186, 1186, 5, 4, + 1189, 4, 1186, 242, 4, 7, 4, 1186, 4, 1186, + 3, 6, 1186, 5, 1186, 4, 4, 4, 4, 3, + 1186, 1186, 7, 182, 1189, 5, 1186, 242, 242, 242, + 7, 1186, 4, 242, 242, 6, 4, 242, 242, 242, + 4, 242, 242, 4, 242, 242, 4, 4, 242, 245, + 245, 243, 242, 242, 242, 242, 242, 4, 1186, 1380, + 245, 1189, 1186, 243, 243, 1189, 242, 242, 1389, 4, + 242, 242, 557, 1380, 781, 1380, 1380, 766, 812, 784, + 1340, 564, 1403, 1107, 1389, 1102, 867, 1214, 1380, 1123, + 1411, 1127, 1120, 1156, 1137, 1380, 1144, 1389, 1135, 1110, + 1108, 1380, 578, 1380, 1119, 1111, 1411, 77, 1113, 620, + 1389, 1403, 617, 610, 1116, 1380, 1114, 1380, 1191, 1411, + 1188, 1186, 582, 1189, 1134, 1132, 1389, 600, 1449, 840, + 1451, 589, 1389, 1130, 1380, 1167, 1169, 1151, 1165, 1453, + 1403, 1479, 1380, 1389, 1505, 1534, 1451, 1449, 1411, 1174, + 1380, 1389, 1380, 1380, 783, 630, 1411, 1449, 1479, 1451, + 824, 1389, 634, 1482, 1512, -1, 1178, -1, 1380, -1, + -1, 1380, 1380, -1, 1479, 1380, -1, 1389, 1380, -1, + 1389, 1389, 1503, -1, -1, 1380, 1449, 1479, 1451, 1181, + 1380, 1380, -1, -1, -1, -1, 1380, -1, -1, -1, + -1, 1380, -1, 1380, -1, -1, 1380, -1, 1380, -1, + -1, 1503, -1, 1534, 1380, 1380, 1479, -1, -1, -1, + 1380, -1, -1, -1, -1, 1380, -1, 1380, -1, -1, + 1380, -1, 1380, 1380, -1, 1380, -1, 1380, 1380, -1, + 1503, -1, 1534, 1380, -1, 1380, -1, -1, 1380, 1380, + -1, -1, 1380, -1, -1, -1, 1380, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 1534, -1, -1, -1, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, + 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 99, 100, 101, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, + -1, 118, 119, -1, 121, 122, 123, 124, -1, -1, + -1, -1, -1, -1, 131, 132, 133, -1, -1, -1, + -1, 138, -1, -1, 72, 73, 74, 75, 76, 77, + 78, 148, 80, 81, 82, 83, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, + 108, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 131, 132, 133, -1, -1, -1, -1, + 138, 139, -1, -1, 211, 212, -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, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 211, 212, -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, 241 + -1, -1, -1, 211, 212, -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, 242 }; const short Dhcp6Parser::yystos_[] = { - 0, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 0, 5, 7, 9, 241, 242, 243, 244, 261, 262, - 263, 268, 7, 277, 7, 282, 7, 341, 7, 457, - 7, 541, 7, 558, 7, 575, 7, 490, 7, 496, - 7, 520, 7, 433, 7, 691, 7, 710, 269, 264, - 278, 283, 342, 458, 542, 559, 576, 491, 497, 521, - 434, 692, 711, 261, 270, 271, 241, 266, 267, 10, - 279, 281, 11, 12, 15, 21, 22, 23, 54, 55, + 0, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 0, 5, 7, 9, 242, 243, 244, 245, 262, 263, + 264, 269, 7, 278, 7, 283, 7, 343, 7, 459, + 7, 543, 7, 560, 7, 577, 7, 492, 7, 498, + 7, 522, 7, 435, 7, 693, 7, 712, 270, 265, + 279, 284, 344, 460, 544, 561, 578, 493, 499, 523, + 436, 694, 713, 262, 271, 272, 242, 267, 268, 10, + 280, 282, 11, 12, 15, 21, 22, 23, 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, 98, 99, 100, 101, 106, 115, 116, 122, 123, 124, 125, 126, 127, 128, 131, 140, 149, 152, 159, 167, 168, 172, 173, 191, 195, 211, 212, 213, - 214, 215, 216, 225, 241, 276, 284, 285, 286, 288, + 214, 215, 216, 217, 226, 242, 277, 285, 286, 287, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 309, 311, - 313, 314, 315, 318, 319, 320, 321, 322, 324, 326, - 327, 328, 329, 331, 332, 334, 336, 337, 338, 339, - 351, 353, 355, 398, 406, 412, 418, 420, 427, 441, - 451, 475, 476, 477, 480, 488, 514, 548, 550, 569, - 599, 614, 626, 627, 629, 679, 689, 708, 717, 741, - 16, 17, 18, 19, 20, 276, 343, 344, 345, 347, - 348, 349, 350, 548, 550, 107, 109, 117, 118, 119, - 120, 121, 131, 132, 133, 138, 148, 276, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 303, 304, 305, 306, 309, 311, 313, 314, - 315, 318, 319, 320, 321, 322, 324, 326, 332, 334, - 459, 460, 461, 463, 465, 467, 469, 471, 473, 475, - 476, 477, 478, 479, 514, 535, 548, 550, 552, 569, - 596, 108, 139, 276, 303, 304, 305, 306, 309, 311, - 313, 315, 318, 319, 320, 321, 322, 324, 467, 469, - 471, 473, 514, 543, 544, 545, 547, 548, 550, 110, - 111, 112, 113, 114, 276, 467, 469, 471, 473, 514, - 547, 548, 550, 560, 561, 562, 564, 565, 567, 568, - 131, 141, 142, 143, 144, 145, 146, 147, 276, 514, - 548, 550, 577, 578, 579, 580, 582, 584, 586, 588, - 590, 592, 594, 488, 24, 88, 90, 91, 95, 96, - 97, 276, 372, 498, 499, 500, 501, 502, 503, 504, - 506, 508, 510, 511, 513, 548, 550, 89, 92, 93, - 94, 131, 276, 372, 502, 508, 522, 523, 524, 525, - 526, 528, 529, 530, 531, 532, 533, 548, 550, 150, - 151, 276, 435, 436, 437, 439, 196, 197, 198, 199, - 200, 201, 202, 203, 276, 548, 550, 693, 694, 695, - 696, 698, 699, 701, 702, 703, 706, 13, 14, 712, - 713, 714, 716, 6, 3, 4, 8, 3, 280, 3, - 8, 287, 709, 340, 352, 354, 356, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 330, 4, 4, 4, 4, 4, 307, 310, - 312, 4, 4, 4, 4, 4, 4, 4, 452, 489, - 515, 4, 333, 335, 316, 481, 549, 551, 4, 4, - 4, 407, 419, 413, 399, 600, 570, 428, 442, 615, - 4, 421, 628, 630, 680, 690, 323, 325, 4, 4, - 4, 718, 742, 4, 3, 8, 346, 4, 4, 4, - 4, 3, 8, 536, 553, 462, 464, 466, 4, 4, - 470, 472, 474, 468, 597, 3, 8, 546, 4, 3, - 8, 563, 4, 566, 4, 4, 3, 8, 595, 581, - 583, 585, 587, 589, 591, 593, 8, 3, 8, 505, - 373, 4, 509, 507, 512, 4, 8, 3, 527, 4, - 4, 4, 534, 8, 3, 438, 440, 3, 8, 4, - 697, 4, 700, 4, 4, 704, 707, 3, 8, 715, - 4, 3, 8, 261, 261, 241, 4, 4, 4, 4, - 4, 4, 4, 242, 242, 242, 242, 242, 242, 242, - 242, 244, 243, 243, 243, 242, 243, 242, 4, 242, - 242, 244, 244, 244, 4, 4, 4, 244, 244, 243, - 242, 242, 242, 244, 4, 4, 4, 242, 4, 4, - 4, 4, 4, 4, 244, 244, 244, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 242, 4, 4, 4, - 4, 4, 4, 4, 244, 244, 244, 4, 4, 285, - 4, 244, 244, 242, 242, 344, 4, 4, 4, 4, - 4, 242, 244, 4, 4, 4, 4, 4, 460, 4, - 242, 544, 4, 242, 4, 242, 242, 561, 4, 4, - 4, 4, 4, 4, 4, 4, 579, 4, 4, 242, - 4, 4, 4, 244, 500, 4, 244, 244, 244, 4, - 524, 4, 4, 436, 244, 4, 242, 4, 242, 242, - 4, 4, 694, 4, 242, 713, 4, 7, 241, 7, - 7, 7, 7, 5, 241, 207, 208, 209, 210, 244, - 308, 241, 241, 5, 5, 5, 241, 241, 102, 103, - 104, 105, 317, 5, 263, 265, 241, 5, 5, 5, - 7, 5, 5, 5, 7, 7, 7, 7, 5, 7, - 7, 241, 241, 5, 7, 5, 272, 5, 5, 241, - 241, 241, 272, 272, 272, 241, 7, 241, 241, 241, - 272, 272, 272, 272, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 272, 241, 265, 241, 241, 204, - 205, 705, 206, 5, 261, 284, 712, 343, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 276, 361, 362, 363, 365, - 367, 369, 371, 372, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 385, 386, 387, 388, 390, 392, 394, - 396, 361, 7, 357, 358, 359, 7, 453, 454, 455, - 7, 492, 493, 494, 7, 516, 517, 518, 7, 482, - 483, 484, 144, 241, 408, 409, 410, 411, 270, 145, - 147, 410, 414, 415, 416, 417, 129, 130, 400, 401, - 402, 404, 7, 601, 602, 7, 571, 572, 573, 7, - 429, 430, 431, 153, 154, 155, 156, 157, 158, 443, - 444, 445, 446, 447, 448, 449, 450, 24, 163, 164, - 165, 166, 276, 374, 548, 550, 616, 617, 618, 621, - 622, 624, 625, 169, 170, 171, 276, 422, 423, 424, - 425, 426, 548, 550, 174, 178, 179, 180, 181, 188, - 189, 276, 388, 390, 392, 548, 550, 635, 636, 637, - 640, 642, 644, 645, 646, 656, 7, 631, 632, 633, - 192, 193, 194, 241, 548, 550, 681, 682, 683, 684, - 686, 687, 693, 7, 719, 720, 226, 276, 743, 744, - 745, 273, 7, 537, 538, 539, 7, 554, 555, 556, - 580, 598, 357, 8, 8, 8, 364, 366, 368, 370, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 310, + 312, 314, 315, 316, 319, 320, 321, 322, 323, 325, + 327, 328, 329, 330, 332, 333, 335, 337, 338, 339, + 340, 341, 353, 355, 357, 400, 408, 414, 420, 422, + 429, 443, 453, 477, 478, 479, 482, 490, 516, 550, + 552, 571, 601, 616, 628, 629, 631, 681, 691, 710, + 719, 743, 16, 17, 18, 19, 20, 277, 345, 346, + 347, 349, 350, 351, 352, 550, 552, 107, 109, 117, + 118, 119, 120, 121, 131, 132, 133, 138, 148, 277, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 304, 305, 306, 307, 310, 312, + 314, 315, 316, 319, 320, 321, 322, 323, 325, 327, + 333, 335, 461, 462, 463, 465, 467, 469, 471, 473, + 475, 477, 478, 479, 480, 481, 516, 537, 550, 552, + 554, 571, 598, 108, 139, 277, 304, 305, 306, 307, + 310, 312, 314, 316, 319, 320, 321, 322, 323, 325, + 469, 471, 473, 475, 516, 545, 546, 547, 549, 550, + 552, 110, 111, 112, 113, 114, 277, 469, 471, 473, + 475, 516, 549, 550, 552, 562, 563, 564, 566, 567, + 569, 570, 131, 141, 142, 143, 144, 145, 146, 147, + 277, 516, 550, 552, 579, 580, 581, 582, 584, 586, + 588, 590, 592, 594, 596, 490, 24, 88, 90, 91, + 95, 96, 97, 277, 374, 500, 501, 502, 503, 504, + 505, 506, 508, 510, 512, 513, 515, 550, 552, 89, + 92, 93, 94, 131, 277, 374, 504, 510, 524, 525, + 526, 527, 528, 530, 531, 532, 533, 534, 535, 550, + 552, 150, 151, 277, 437, 438, 439, 441, 196, 197, + 198, 199, 200, 201, 202, 203, 277, 550, 552, 695, + 696, 697, 698, 700, 701, 703, 704, 705, 708, 13, + 14, 714, 715, 716, 718, 6, 3, 4, 8, 3, + 281, 3, 8, 288, 711, 342, 354, 356, 358, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 383, 4, 4, 389, 391, 393, 395, 397, 3, 8, - 8, 360, 6, 3, 456, 6, 3, 495, 6, 3, - 519, 6, 3, 485, 6, 3, 3, 6, 6, 3, - 6, 403, 405, 3, 8, 603, 3, 6, 574, 6, - 3, 432, 6, 3, 4, 4, 4, 4, 4, 4, - 3, 8, 619, 623, 4, 4, 4, 3, 8, 4, - 4, 4, 3, 8, 638, 641, 643, 4, 657, 4, - 647, 3, 8, 634, 6, 3, 4, 685, 4, 688, - 3, 8, 8, 721, 3, 6, 4, 3, 8, 241, - 274, 275, 540, 6, 3, 557, 6, 3, 8, 6, - 4, 4, 4, 4, 242, 244, 242, 244, 242, 242, - 242, 242, 242, 242, 4, 244, 242, 4, 4, 4, - 4, 4, 362, 361, 359, 459, 455, 498, 494, 522, - 518, 276, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 303, 304, 305, 306, - 309, 311, 313, 314, 315, 318, 319, 320, 321, 322, - 324, 326, 332, 334, 372, 451, 463, 465, 467, 469, - 471, 473, 475, 476, 477, 479, 486, 487, 514, 548, - 550, 596, 484, 409, 415, 4, 4, 401, 134, 135, - 136, 137, 276, 288, 289, 290, 291, 292, 293, 372, - 514, 548, 550, 604, 605, 606, 607, 608, 610, 612, - 613, 602, 577, 573, 435, 431, 242, 242, 242, 242, - 242, 242, 444, 4, 4, 242, 242, 242, 617, 244, - 242, 242, 423, 4, 4, 4, 242, 4, 244, 4, - 636, 635, 633, 244, 4, 242, 4, 682, 217, 219, - 220, 276, 372, 548, 550, 722, 723, 724, 725, 727, - 720, 244, 744, 6, 3, 543, 539, 560, 556, 241, - 241, 241, 241, 39, 40, 41, 384, 241, 241, 241, - 394, 241, 8, 8, 8, 8, 3, 8, 241, 241, - 609, 611, 4, 4, 8, 3, 8, 8, 160, 161, - 162, 620, 241, 175, 176, 177, 639, 241, 241, 7, - 5, 8, 241, 261, 728, 4, 726, 3, 8, 241, - 8, 8, 487, 4, 4, 244, 244, 606, 24, 183, - 184, 185, 276, 548, 550, 658, 659, 660, 663, 665, - 667, 7, 648, 649, 650, 4, 242, 4, 723, 241, - 241, 661, 664, 666, 668, 3, 8, 651, 6, 3, - 5, 241, 4, 4, 4, 4, 659, 190, 276, 372, - 548, 550, 652, 653, 654, 650, 7, 729, 730, 182, - 662, 241, 241, 5, 655, 3, 8, 731, 3, 6, - 7, 669, 670, 671, 4, 653, 218, 221, 222, 223, - 224, 732, 733, 734, 736, 737, 738, 739, 730, 672, - 6, 3, 241, 735, 4, 4, 4, 740, 3, 8, - 186, 187, 276, 365, 367, 548, 550, 673, 674, 675, - 677, 671, 4, 244, 242, 242, 4, 733, 676, 678, - 3, 8, 241, 241, 4, 4, 674, 241, 241 + 4, 4, 4, 4, 331, 4, 4, 4, 4, 4, + 308, 311, 313, 4, 4, 4, 4, 4, 4, 4, + 454, 491, 517, 4, 334, 336, 317, 483, 551, 553, + 4, 4, 4, 409, 421, 415, 401, 602, 572, 430, + 444, 617, 4, 423, 630, 632, 682, 692, 324, 326, + 4, 4, 4, 4, 720, 744, 4, 3, 8, 348, + 4, 4, 4, 4, 3, 8, 538, 555, 464, 466, + 468, 4, 4, 472, 474, 476, 470, 599, 3, 8, + 548, 4, 3, 8, 565, 4, 568, 4, 4, 3, + 8, 597, 583, 585, 587, 589, 591, 593, 595, 8, + 3, 8, 507, 375, 4, 511, 509, 514, 4, 8, + 3, 529, 4, 4, 4, 536, 8, 3, 440, 442, + 3, 8, 4, 699, 4, 702, 4, 4, 706, 709, + 3, 8, 717, 4, 3, 8, 262, 262, 242, 4, + 4, 4, 4, 4, 4, 4, 243, 243, 243, 243, + 243, 243, 243, 243, 245, 244, 244, 244, 243, 244, + 243, 4, 243, 243, 245, 245, 245, 4, 4, 4, + 245, 245, 244, 243, 243, 243, 245, 4, 4, 4, + 243, 4, 4, 4, 4, 4, 4, 245, 245, 245, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 243, + 4, 4, 4, 4, 4, 4, 4, 245, 245, 245, + 245, 4, 4, 286, 4, 245, 245, 243, 243, 346, + 4, 4, 4, 4, 4, 243, 245, 4, 4, 4, + 4, 4, 462, 4, 243, 546, 4, 243, 4, 243, + 243, 563, 4, 4, 4, 4, 4, 4, 4, 4, + 581, 4, 4, 243, 4, 4, 4, 245, 502, 4, + 245, 245, 245, 4, 526, 4, 4, 438, 245, 4, + 243, 4, 243, 243, 4, 4, 696, 4, 243, 715, + 4, 7, 242, 7, 7, 7, 7, 5, 242, 207, + 208, 209, 210, 245, 309, 242, 242, 5, 5, 5, + 242, 242, 102, 103, 104, 105, 318, 5, 264, 266, + 242, 5, 5, 5, 7, 5, 5, 5, 7, 7, + 7, 7, 5, 7, 7, 242, 242, 5, 7, 5, + 273, 5, 5, 242, 242, 242, 273, 273, 273, 242, + 7, 242, 242, 242, 273, 273, 273, 273, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 273, 242, + 266, 242, 242, 204, 205, 707, 206, 5, 262, 285, + 714, 345, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 277, + 363, 364, 365, 367, 369, 371, 373, 374, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 387, 388, 389, + 390, 392, 394, 396, 398, 363, 7, 359, 360, 361, + 7, 455, 456, 457, 7, 494, 495, 496, 7, 518, + 519, 520, 7, 484, 485, 486, 144, 242, 410, 411, + 412, 413, 271, 145, 147, 412, 416, 417, 418, 419, + 129, 130, 402, 403, 404, 406, 7, 603, 604, 7, + 573, 574, 575, 7, 431, 432, 433, 153, 154, 155, + 156, 157, 158, 445, 446, 447, 448, 449, 450, 451, + 452, 24, 163, 164, 165, 166, 277, 376, 550, 552, + 618, 619, 620, 623, 624, 626, 627, 169, 170, 171, + 277, 424, 425, 426, 427, 428, 550, 552, 174, 178, + 179, 180, 181, 188, 189, 277, 390, 392, 394, 550, + 552, 637, 638, 639, 642, 644, 646, 647, 648, 658, + 7, 633, 634, 635, 192, 193, 194, 242, 550, 552, + 683, 684, 685, 686, 688, 689, 695, 7, 721, 722, + 227, 277, 745, 746, 747, 274, 7, 539, 540, 541, + 7, 556, 557, 558, 582, 600, 359, 8, 8, 8, + 366, 368, 370, 372, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 385, 4, 4, 391, 393, 395, + 397, 399, 3, 8, 8, 362, 6, 3, 458, 6, + 3, 497, 6, 3, 521, 6, 3, 487, 6, 3, + 3, 6, 6, 3, 6, 405, 407, 3, 8, 605, + 3, 6, 576, 6, 3, 434, 6, 3, 4, 4, + 4, 4, 4, 4, 3, 8, 621, 625, 4, 4, + 4, 3, 8, 4, 4, 4, 3, 8, 640, 643, + 645, 4, 659, 4, 649, 3, 8, 636, 6, 3, + 4, 687, 4, 690, 3, 8, 8, 723, 3, 6, + 4, 3, 8, 242, 275, 276, 542, 6, 3, 559, + 6, 3, 8, 6, 4, 4, 4, 4, 243, 245, + 243, 245, 243, 243, 243, 243, 243, 243, 4, 245, + 243, 4, 4, 4, 4, 4, 364, 363, 361, 461, + 457, 500, 496, 524, 520, 277, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 304, 305, 306, 307, 310, 312, 314, 315, 316, 319, + 320, 321, 322, 323, 325, 327, 333, 335, 374, 453, + 465, 467, 469, 471, 473, 475, 477, 478, 479, 481, + 488, 489, 516, 550, 552, 598, 486, 411, 417, 4, + 4, 403, 134, 135, 136, 137, 277, 289, 290, 291, + 292, 293, 294, 374, 516, 550, 552, 606, 607, 608, + 609, 610, 612, 614, 615, 604, 579, 575, 437, 433, + 243, 243, 243, 243, 243, 243, 446, 4, 4, 243, + 243, 243, 619, 245, 243, 243, 425, 4, 4, 4, + 243, 4, 245, 4, 638, 637, 635, 245, 4, 243, + 4, 684, 218, 220, 221, 277, 374, 550, 552, 724, + 725, 726, 727, 729, 722, 245, 746, 6, 3, 545, + 541, 562, 558, 242, 242, 242, 242, 39, 40, 41, + 386, 242, 242, 242, 396, 242, 8, 8, 8, 8, + 3, 8, 242, 242, 611, 613, 4, 4, 8, 3, + 8, 8, 160, 161, 162, 622, 242, 175, 176, 177, + 641, 242, 242, 7, 5, 8, 242, 262, 730, 4, + 728, 3, 8, 242, 8, 8, 489, 4, 4, 245, + 245, 608, 24, 183, 184, 185, 277, 550, 552, 660, + 661, 662, 665, 667, 669, 7, 650, 651, 652, 4, + 243, 4, 725, 242, 242, 663, 666, 668, 670, 3, + 8, 653, 6, 3, 5, 242, 4, 4, 4, 4, + 661, 190, 277, 374, 550, 552, 654, 655, 656, 652, + 7, 731, 732, 182, 664, 242, 242, 5, 657, 3, + 8, 733, 3, 6, 7, 671, 672, 673, 4, 655, + 219, 222, 223, 224, 225, 734, 735, 736, 738, 739, + 740, 741, 732, 674, 6, 3, 242, 737, 4, 4, + 4, 742, 3, 8, 186, 187, 277, 367, 369, 550, + 552, 675, 676, 677, 679, 673, 4, 245, 243, 243, + 4, 735, 678, 680, 3, 8, 242, 242, 4, 4, + 676, 242, 242 }; const short Dhcp6Parser::yyr1_[] = { - 0, 245, 247, 246, 248, 246, 249, 246, 250, 246, - 251, 246, 252, 246, 253, 246, 254, 246, 255, 246, - 256, 246, 257, 246, 258, 246, 259, 246, 260, 246, - 261, 261, 261, 261, 261, 261, 261, 262, 264, 263, - 265, 266, 266, 267, 267, 267, 269, 268, 270, 270, - 271, 271, 271, 273, 272, 274, 274, 275, 275, 275, - 276, 278, 277, 280, 279, 279, 281, 283, 282, 284, - 284, 284, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 287, 286, 288, 289, 290, + 0, 246, 248, 247, 249, 247, 250, 247, 251, 247, + 252, 247, 253, 247, 254, 247, 255, 247, 256, 247, + 257, 247, 258, 247, 259, 247, 260, 247, 261, 247, + 262, 262, 262, 262, 262, 262, 262, 263, 265, 264, + 266, 267, 267, 268, 268, 268, 270, 269, 271, 271, + 272, 272, 272, 274, 273, 275, 275, 276, 276, 276, + 277, 279, 278, 281, 280, 280, 282, 284, 283, 285, + 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 288, 287, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 307, 306, 308, 308, 308, - 308, 308, 310, 309, 312, 311, 313, 314, 316, 315, - 317, 317, 317, 317, 318, 319, 320, 321, 323, 322, - 325, 324, 326, 327, 328, 330, 329, 331, 333, 332, - 335, 334, 336, 337, 338, 340, 339, 342, 341, 343, - 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, - 346, 345, 347, 348, 349, 350, 352, 351, 354, 353, - 356, 355, 357, 357, 358, 358, 358, 360, 359, 361, - 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 364, 363, 366, 365, - 368, 367, 370, 369, 371, 373, 372, 374, 375, 376, - 377, 378, 379, 380, 381, 383, 382, 384, 384, 384, - 385, 386, 387, 389, 388, 391, 390, 393, 392, 395, - 394, 394, 394, 394, 394, 394, 397, 396, 399, 398, - 400, 400, 400, 401, 401, 403, 402, 405, 404, 407, - 406, 408, 408, 408, 409, 409, 410, 411, 413, 412, - 414, 414, 414, 415, 415, 415, 416, 417, 419, 418, - 421, 420, 422, 422, 422, 423, 423, 423, 423, 423, - 423, 424, 425, 426, 428, 427, 429, 429, 430, 430, - 430, 432, 431, 434, 433, 435, 435, 435, 435, 436, - 436, 438, 437, 440, 439, 442, 441, 443, 443, 443, - 444, 444, 444, 444, 444, 444, 445, 446, 447, 448, - 449, 450, 452, 451, 453, 453, 454, 454, 454, 456, - 455, 458, 457, 459, 459, 459, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 462, 461, + 301, 302, 303, 304, 305, 306, 308, 307, 309, 309, + 309, 309, 309, 311, 310, 313, 312, 314, 315, 317, + 316, 318, 318, 318, 318, 319, 320, 321, 322, 324, + 323, 326, 325, 327, 328, 329, 331, 330, 332, 334, + 333, 336, 335, 337, 338, 339, 340, 342, 341, 344, + 343, 345, 345, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 348, 347, 349, 350, 351, 352, 354, 353, + 356, 355, 358, 357, 359, 359, 360, 360, 360, 362, + 361, 363, 363, 363, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 366, 365, + 368, 367, 370, 369, 372, 371, 373, 375, 374, 376, + 377, 378, 379, 380, 381, 382, 383, 385, 384, 386, + 386, 386, 387, 388, 389, 391, 390, 393, 392, 395, + 394, 397, 396, 396, 396, 396, 396, 396, 399, 398, + 401, 400, 402, 402, 402, 403, 403, 405, 404, 407, + 406, 409, 408, 410, 410, 410, 411, 411, 412, 413, + 415, 414, 416, 416, 416, 417, 417, 417, 418, 419, + 421, 420, 423, 422, 424, 424, 424, 425, 425, 425, + 425, 425, 425, 426, 427, 428, 430, 429, 431, 431, + 432, 432, 432, 434, 433, 436, 435, 437, 437, 437, + 437, 438, 438, 440, 439, 442, 441, 444, 443, 445, + 445, 445, 446, 446, 446, 446, 446, 446, 447, 448, + 449, 450, 451, 452, 454, 453, 455, 455, 456, 456, + 456, 458, 457, 460, 459, 461, 461, 461, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 464, 463, 466, 465, 468, 467, 470, 469, 472, 471, - 474, 473, 475, 476, 477, 478, 479, 481, 480, 482, - 482, 483, 483, 483, 485, 484, 486, 486, 486, 487, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 487, 487, 487, 489, 488, - 491, 490, 492, 492, 493, 493, 493, 495, 494, 497, - 496, 498, 498, 499, 499, 499, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 500, 501, 502, 503, 505, - 504, 507, 506, 509, 508, 510, 512, 511, 513, 515, - 514, 516, 516, 517, 517, 517, 519, 518, 521, 520, - 522, 522, 523, 523, 523, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 525, 527, 526, 528, - 529, 530, 531, 532, 534, 533, 536, 535, 537, 537, - 538, 538, 538, 540, 539, 542, 541, 543, 543, 543, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 546, 545, 547, 549, 548, 551, - 550, 553, 552, 554, 554, 555, 555, 555, 557, 556, - 559, 558, 560, 560, 560, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 563, - 562, 564, 566, 565, 567, 568, 570, 569, 571, 571, - 572, 572, 572, 574, 573, 576, 575, 577, 577, 578, - 578, 578, 579, 579, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 581, 580, 583, 582, 585, 584, + 474, 473, 476, 475, 477, 478, 479, 480, 481, 483, + 482, 484, 484, 485, 485, 485, 487, 486, 488, 488, + 488, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 491, 490, 493, 492, 494, 494, 495, 495, 495, 497, + 496, 499, 498, 500, 500, 501, 501, 501, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 503, 504, + 505, 507, 506, 509, 508, 511, 510, 512, 514, 513, + 515, 517, 516, 518, 518, 519, 519, 519, 521, 520, + 523, 522, 524, 524, 525, 525, 525, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 527, 529, + 528, 530, 531, 532, 533, 534, 536, 535, 538, 537, + 539, 539, 540, 540, 540, 542, 541, 544, 543, 545, + 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 548, 547, 549, 551, + 550, 553, 552, 555, 554, 556, 556, 557, 557, 557, + 559, 558, 561, 560, 562, 562, 562, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, + 563, 565, 564, 566, 568, 567, 569, 570, 572, 571, + 573, 573, 574, 574, 574, 576, 575, 578, 577, 579, + 579, 580, 580, 580, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 583, 582, 585, 584, 587, 586, 589, 588, 591, 590, 593, 592, 595, 594, - 597, 596, 598, 600, 599, 601, 601, 601, 603, 602, - 604, 604, 605, 605, 605, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 607, 609, 608, 611, 610, 612, 613, 615, 614, 616, - 616, 616, 617, 617, 617, 617, 617, 617, 617, 617, - 617, 619, 618, 620, 620, 620, 621, 623, 622, 624, - 625, 626, 628, 627, 630, 629, 631, 631, 632, 632, - 632, 634, 633, 635, 635, 635, 636, 636, 636, 636, - 636, 636, 636, 636, 636, 636, 636, 636, 636, 638, - 637, 639, 639, 639, 641, 640, 643, 642, 644, 645, - 647, 646, 648, 648, 649, 649, 649, 651, 650, 652, - 652, 652, 653, 653, 653, 653, 653, 655, 654, 657, - 656, 658, 658, 658, 659, 659, 659, 659, 659, 659, - 659, 661, 660, 662, 664, 663, 666, 665, 668, 667, - 669, 669, 670, 670, 670, 672, 671, 673, 673, 673, - 674, 674, 674, 674, 674, 674, 674, 676, 675, 678, - 677, 680, 679, 681, 681, 681, 682, 682, 682, 682, - 682, 682, 683, 685, 684, 686, 688, 687, 690, 689, - 692, 691, 693, 693, 693, 694, 694, 694, 694, 694, - 694, 694, 694, 694, 694, 694, 695, 697, 696, 698, - 700, 699, 701, 702, 704, 703, 705, 705, 707, 706, - 709, 708, 711, 710, 712, 712, 712, 713, 713, 715, - 714, 716, 718, 717, 719, 719, 719, 721, 720, 722, - 722, 722, 723, 723, 723, 723, 723, 723, 723, 724, - 726, 725, 728, 727, 729, 729, 729, 731, 730, 732, - 732, 732, 733, 733, 733, 733, 733, 735, 734, 736, - 737, 738, 740, 739, 742, 741, 743, 743, 743, 744, - 744, 745 + 597, 596, 599, 598, 600, 602, 601, 603, 603, 603, + 605, 604, 606, 606, 607, 607, 607, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, + 608, 608, 609, 611, 610, 613, 612, 614, 615, 617, + 616, 618, 618, 618, 619, 619, 619, 619, 619, 619, + 619, 619, 619, 621, 620, 622, 622, 622, 623, 625, + 624, 626, 627, 628, 630, 629, 632, 631, 633, 633, + 634, 634, 634, 636, 635, 637, 637, 637, 638, 638, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, + 638, 640, 639, 641, 641, 641, 643, 642, 645, 644, + 646, 647, 649, 648, 650, 650, 651, 651, 651, 653, + 652, 654, 654, 654, 655, 655, 655, 655, 655, 657, + 656, 659, 658, 660, 660, 660, 661, 661, 661, 661, + 661, 661, 661, 663, 662, 664, 666, 665, 668, 667, + 670, 669, 671, 671, 672, 672, 672, 674, 673, 675, + 675, 675, 676, 676, 676, 676, 676, 676, 676, 678, + 677, 680, 679, 682, 681, 683, 683, 683, 684, 684, + 684, 684, 684, 684, 685, 687, 686, 688, 690, 689, + 692, 691, 694, 693, 695, 695, 695, 696, 696, 696, + 696, 696, 696, 696, 696, 696, 696, 696, 697, 699, + 698, 700, 702, 701, 703, 704, 706, 705, 707, 707, + 709, 708, 711, 710, 713, 712, 714, 714, 714, 715, + 715, 717, 716, 718, 720, 719, 721, 721, 721, 723, + 722, 724, 724, 724, 725, 725, 725, 725, 725, 725, + 725, 726, 728, 727, 730, 729, 731, 731, 731, 733, + 732, 734, 734, 734, 735, 735, 735, 735, 735, 737, + 736, 738, 739, 740, 742, 741, 744, 743, 745, 745, + 745, 746, 746, 747 }; const signed char @@ -6746,94 +6755,94 @@ 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, 1, 1, 0, 4, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 0, 4, 3, 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, 3, 0, 4, - 1, 1, 1, 1, 3, 3, 3, 3, 0, 4, - 0, 4, 3, 3, 3, 0, 4, 3, 0, 4, - 0, 4, 3, 3, 3, 0, 6, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 4, 3, 3, 3, 3, 0, 6, 0, 6, - 0, 6, 0, 1, 1, 3, 2, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 0, 4, 1, 1, + 1, 1, 1, 0, 4, 0, 4, 3, 3, 0, + 4, 1, 1, 1, 1, 3, 3, 3, 3, 0, + 4, 0, 4, 3, 3, 3, 0, 4, 3, 0, + 4, 0, 4, 3, 3, 3, 3, 0, 6, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 3, 3, 3, 3, 0, 6, + 0, 6, 0, 6, 0, 1, 1, 3, 2, 0, + 4, 1, 3, 2, 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, 3, 0, 4, 3, 3, 3, - 3, 3, 3, 3, 3, 0, 4, 1, 1, 1, - 3, 3, 3, 0, 4, 0, 4, 0, 4, 0, - 4, 1, 1, 1, 1, 1, 0, 4, 0, 6, - 1, 3, 2, 1, 1, 0, 4, 0, 4, 0, - 6, 1, 3, 2, 1, 1, 1, 1, 0, 6, - 1, 3, 2, 1, 1, 1, 1, 1, 0, 6, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 0, 4, 0, 4, 0, 4, 3, 0, 4, 3, + 3, 3, 3, 3, 3, 3, 3, 0, 4, 1, + 1, 1, 3, 3, 3, 0, 4, 0, 4, 0, + 4, 0, 4, 1, 1, 1, 1, 1, 0, 4, + 0, 6, 1, 3, 2, 1, 1, 0, 4, 0, + 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, 0, 6, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 3, 3, 3, 0, 6, 0, 1, 1, 3, + 0, 6, 0, 6, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 3, 3, 3, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, + 1, 1, 1, 0, 4, 0, 4, 0, 6, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 3, 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, 1, - 1, 0, 4, 0, 4, 0, 6, 1, 3, 2, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, - 4, 0, 4, 1, 3, 2, 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, 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, 3, 3, 3, 3, 3, 0, 6, 0, - 1, 1, 3, 2, 0, 4, 1, 3, 2, 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, 3, 3, 3, 3, 3, 0, + 6, 0, 1, 1, 3, 2, 0, 4, 1, 3, + 2, 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, 6, - 0, 4, 0, 1, 1, 3, 2, 0, 4, 0, - 4, 0, 1, 1, 3, 2, 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, 2, 0, 4, 0, 4, - 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, - 1, 3, 3, 3, 0, 4, 0, 6, 0, 1, - 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, 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, 0, 4, 0, - 4, 0, 6, 0, 1, 1, 3, 2, 0, 4, - 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, + 0, 6, 0, 4, 0, 1, 1, 3, 2, 0, + 4, 0, 4, 0, 1, 1, 3, 2, 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, 2, 0, 4, + 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 4, 3, 0, 4, 3, 3, 0, 6, 0, 1, - 1, 3, 2, 0, 4, 0, 4, 0, 1, 1, + 4, 1, 1, 3, 3, 3, 0, 4, 0, 6, + 0, 1, 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 4, 3, 0, + 4, 0, 4, 0, 6, 0, 1, 1, 3, 2, + 0, 4, 0, 4, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 4, 3, 0, 4, 3, 3, 0, 6, + 0, 1, 1, 3, 2, 0, 4, 0, 4, 0, + 1, 1, 3, 2, 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, 6, 1, 0, 6, 1, 3, 2, 0, 4, - 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, + 0, 4, 0, 6, 1, 0, 6, 1, 3, 2, + 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 3, 3, 0, 6, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 1, 1, 1, 3, 0, 4, 3, - 3, 3, 0, 6, 0, 6, 0, 1, 1, 3, - 2, 0, 4, 1, 3, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 4, 1, 1, 1, 0, 4, 0, 4, 3, 3, - 0, 6, 0, 1, 1, 3, 2, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 0, 4, 0, + 1, 1, 1, 0, 4, 0, 4, 3, 3, 0, 6, 1, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 1, 0, 4, 0, 4, 0, 6, - 0, 1, 1, 3, 2, 0, 4, 1, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 1, 1, 1, 0, 4, 1, 1, 1, 3, 0, + 4, 3, 3, 3, 0, 6, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 1, 3, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 4, 1, 1, 1, 0, 4, 0, 4, + 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 0, 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, - 1, 1, 3, 0, 4, 3, 0, 4, 0, 6, - 0, 4, 1, 3, 2, 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, 6, 0, 4, 1, 3, 2, 1, 1, 0, - 6, 3, 0, 6, 1, 3, 2, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 3, - 0, 4, 0, 6, 1, 3, 2, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 0, 4, 3, - 3, 3, 0, 4, 0, 6, 1, 3, 2, 1, - 1, 3 + 1, 1, 1, 0, 4, 1, 0, 4, 0, 4, + 0, 6, 0, 1, 1, 3, 2, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 0, + 4, 0, 4, 0, 6, 1, 3, 2, 1, 1, + 1, 1, 1, 1, 3, 0, 4, 3, 0, 4, + 0, 6, 0, 4, 1, 3, 2, 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, 6, 0, 4, 1, 3, 2, 1, + 1, 0, 6, 3, 0, 6, 1, 3, 2, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, + 1, 3, 0, 4, 0, 6, 1, 3, 2, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 0, + 4, 3, 3, 3, 0, 4, 0, 6, 1, 3, + 2, 1, 1, 3 }; @@ -6913,32 +6922,33 @@ namespace isc { namespace dhcp { "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"", "\"hostname-char-set\"", "\"hostname-char-replacement\"", "\"early-global-reservations-lookup\"", "\"ip-reservations-unique\"", - "\"reservations-lookup-first\"", "\"loggers\"", "\"output-options\"", - "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"", - "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"compatibility\"", - "\"lenient-option-parsing\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", - "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6", - "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF", - "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", - "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"", - "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2", - "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", - "$@13", "$@14", "value", "sub_json", "map2", "$@15", "map_value", - "map_content", "not_empty_map", "list_generic", "$@16", "list_content", - "not_empty_list", "list_strings", "$@17", "list_strings_content", - "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@18", - "global_object", "$@19", "global_object_comma", "sub_dhcp6", "$@20", - "global_params", "global_param", "data_directory", "$@21", - "preferred_lifetime", "min_preferred_lifetime", "max_preferred_lifetime", - "valid_lifetime", "min_valid_lifetime", "max_valid_lifetime", - "renew_timer", "rebind_timer", "calculate_tee_times", "t1_percent", - "t2_percent", "cache_threshold", "cache_max_age", - "adaptive_lease_time_threshold", "decline_probation_period", - "ddns_send_updates", "ddns_override_no_update", - "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", - "ddns_use_conflict_resolution", "ddns_conflict_resolution_mode", "$@25", + "\"reservations-lookup-first\"", "\"allow-address-registration\"", + "\"loggers\"", "\"output-options\"", "\"output\"", "\"debuglevel\"", + "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"", + "\"compatibility\"", "\"lenient-option-parsing\"", "TOPLEVEL_JSON", + "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", + "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", + "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", + "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"", + "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start", + "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", + "$@11", "$@12", "$@13", "$@14", "value", "sub_json", "map2", "$@15", + "map_value", "map_content", "not_empty_map", "list_generic", "$@16", + "list_content", "not_empty_list", "list_strings", "$@17", + "list_strings_content", "not_empty_list_strings", "unknown_map_entry", + "syntax_map", "$@18", "global_object", "$@19", "global_object_comma", + "sub_dhcp6", "$@20", "global_params", "global_param", "data_directory", + "$@21", "preferred_lifetime", "min_preferred_lifetime", + "max_preferred_lifetime", "valid_lifetime", "min_valid_lifetime", + "max_valid_lifetime", "renew_timer", "rebind_timer", + "calculate_tee_times", "t1_percent", "t2_percent", "cache_threshold", + "cache_max_age", "adaptive_lease_time_threshold", + "decline_probation_period", "ddns_send_updates", + "ddns_override_no_update", "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", "ddns_use_conflict_resolution", + "ddns_conflict_resolution_mode", "$@25", "ddns_conflict_resolution_mode_value", "ddns_ttl_percent", "ddns_ttl", "ddns_ttl_min", "ddns_ttl_max", "hostname_char_set", "$@26", "hostname_char_replacement", "$@27", "store_extended_info", @@ -6946,23 +6956,23 @@ namespace isc { namespace dhcp { "server_tag", "$@28", "parked_packet_limit", "allocator", "$@29", "pd_allocator", "$@30", "early_global_reservations_lookup", "ip_reservations_unique", "reservations_lookup_first", - "interfaces_config", "$@31", "sub_interfaces6", "$@32", - "interfaces_config_params", "interfaces_config_param", "interfaces_list", - "$@33", "re_detect", "service_sockets_require_all", - "service_sockets_retry_wait_time", "service_sockets_max_retries", - "lease_database", "$@34", "hosts_database", "$@35", "hosts_databases", - "$@36", "database_list", "not_empty_database_list", "database", "$@37", - "database_map_params", "database_map_param", "database_type", "$@38", - "user", "$@39", "password", "$@40", "host", "$@41", "port", "name", - "$@42", "persist", "lfc_interval", "readonly", "connect_timeout", - "read_timeout", "write_timeout", "tcp_user_timeout", - "reconnect_wait_time", "on_fail", "$@43", "on_fail_mode", - "retry_on_startup", "max_row_errors", "max_reconnect_tries", - "trust_anchor", "$@44", "cert_file", "$@45", "key_file", "$@46", - "ssl_mode", "$@47", "cipher_list", "$@48", "sanity_checks", "$@49", - "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@50", - "extended_info_checks", "$@51", "mac_sources", "$@52", - "mac_sources_list", "mac_sources_value", "duid_id", "string_id", + "allow_address_registration", "interfaces_config", "$@31", + "sub_interfaces6", "$@32", "interfaces_config_params", + "interfaces_config_param", "interfaces_list", "$@33", "re_detect", + "service_sockets_require_all", "service_sockets_retry_wait_time", + "service_sockets_max_retries", "lease_database", "$@34", + "hosts_database", "$@35", "hosts_databases", "$@36", "database_list", + "not_empty_database_list", "database", "$@37", "database_map_params", + "database_map_param", "database_type", "$@38", "user", "$@39", + "password", "$@40", "host", "$@41", "port", "name", "$@42", "persist", + "lfc_interval", "readonly", "connect_timeout", "read_timeout", + "write_timeout", "tcp_user_timeout", "reconnect_wait_time", "on_fail", + "$@43", "on_fail_mode", "retry_on_startup", "max_row_errors", + "max_reconnect_tries", "trust_anchor", "$@44", "cert_file", "$@45", + "key_file", "$@46", "ssl_mode", "$@47", "cipher_list", "$@48", + "sanity_checks", "$@49", "sanity_checks_params", "sanity_checks_param", + "lease_checks", "$@50", "extended_info_checks", "$@51", "mac_sources", + "$@52", "mac_sources_list", "mac_sources_value", "duid_id", "string_id", "host_reservation_identifiers", "$@53", "host_reservation_identifiers_list", "host_reservation_identifier", "hw_address_id", "flex_id", "relay_supplied_options", "$@54", @@ -7057,108 +7067,108 @@ namespace isc { namespace dhcp { const short Dhcp6Parser::yyrline_[] = { - 0, 340, 340, 340, 341, 341, 342, 342, 343, 343, - 344, 344, 345, 345, 346, 346, 347, 347, 348, 348, - 349, 349, 350, 350, 351, 351, 352, 352, 353, 353, - 361, 362, 363, 364, 365, 366, 367, 370, 375, 375, - 386, 389, 390, 393, 398, 404, 409, 409, 416, 417, - 420, 424, 428, 434, 434, 441, 442, 445, 449, 453, - 463, 472, 472, 487, 487, 501, 504, 510, 510, 519, - 520, 521, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 603, 603, 613, 619, 625, - 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, - 691, 697, 703, 709, 715, 721, 721, 730, 733, 736, - 739, 742, 748, 748, 757, 757, 766, 775, 785, 785, - 794, 797, 800, 803, 808, 814, 820, 826, 832, 832, - 841, 841, 850, 856, 862, 868, 868, 877, 883, 883, - 892, 892, 901, 907, 913, 919, 919, 931, 931, 940, - 941, 942, 947, 948, 949, 950, 951, 952, 953, 954, - 957, 957, 968, 974, 980, 986, 992, 992, 1005, 1005, - 1018, 1018, 1029, 1030, 1033, 1034, 1035, 1040, 1040, 1050, - 1051, 1052, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, - 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 1078, 1079, 1080, 1083, 1083, 1092, 1092, - 1101, 1101, 1110, 1110, 1119, 1125, 1125, 1134, 1140, 1146, - 1152, 1158, 1164, 1170, 1176, 1182, 1182, 1190, 1191, 1192, - 1195, 1201, 1207, 1213, 1213, 1222, 1222, 1231, 1231, 1240, - 1240, 1248, 1251, 1254, 1257, 1260, 1265, 1265, 1274, 1274, - 1285, 1286, 1287, 1292, 1293, 1296, 1296, 1315, 1315, 1333, - 1333, 1344, 1345, 1346, 1351, 1352, 1355, 1360, 1365, 1365, - 1376, 1377, 1378, 1383, 1384, 1385, 1388, 1393, 1400, 1400, - 1413, 1413, 1426, 1427, 1428, 1433, 1434, 1435, 1436, 1437, - 1438, 1441, 1447, 1453, 1459, 1459, 1470, 1471, 1474, 1475, - 1476, 1481, 1481, 1491, 1491, 1501, 1502, 1503, 1506, 1509, - 1510, 1513, 1513, 1522, 1522, 1531, 1531, 1543, 1544, 1545, - 1550, 1551, 1552, 1553, 1554, 1555, 1558, 1564, 1570, 1576, - 1582, 1588, 1597, 1597, 1611, 1612, 1615, 1616, 1617, 1626, - 1626, 1652, 1652, 1663, 1664, 1665, 1671, 1672, 1673, 1674, - 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, - 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, - 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, - 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, - 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1725, 1725, - 1734, 1734, 1743, 1743, 1752, 1752, 1762, 1762, 1774, 1774, - 1785, 1785, 1796, 1802, 1808, 1814, 1820, 1828, 1828, 1840, - 1841, 1845, 1846, 1847, 1852, 1852, 1860, 1861, 1862, 1867, - 1868, 1869, 1870, 1871, 1872, 1873, 1874, 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, 1902, 1903, 1904, 1905, 1906, 1907, - 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1922, 1922, - 1936, 1936, 1945, 1946, 1949, 1950, 1951, 1958, 1958, 1973, - 1973, 1987, 1988, 1991, 1992, 1993, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2010, 2012, 2018, 2020, - 2020, 2029, 2029, 2038, 2038, 2047, 2049, 2049, 2058, 2068, - 2068, 2081, 2082, 2087, 2088, 2089, 2096, 2096, 2108, 2108, - 2120, 2121, 2126, 2127, 2128, 2135, 2136, 2137, 2138, 2139, - 2140, 2141, 2142, 2143, 2144, 2145, 2148, 2150, 2150, 2159, - 2161, 2163, 2169, 2175, 2181, 2181, 2195, 2195, 2208, 2209, - 2212, 2213, 2214, 2219, 2219, 2229, 2229, 2239, 2240, 2241, - 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, - 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, - 2266, 2267, 2268, 2269, 2272, 2272, 2281, 2287, 2287, 2312, - 2312, 2342, 2342, 2355, 2356, 2359, 2360, 2361, 2366, 2366, - 2378, 2378, 2390, 2391, 2392, 2397, 2398, 2399, 2400, 2401, - 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2413, - 2413, 2422, 2428, 2428, 2437, 2443, 2452, 2452, 2463, 2464, - 2467, 2468, 2469, 2474, 2474, 2483, 2483, 2492, 2493, 2496, - 2497, 2498, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, - 2512, 2513, 2514, 2515, 2518, 2518, 2529, 2529, 2540, 2540, - 2551, 2551, 2560, 2560, 2569, 2569, 2578, 2578, 2587, 2587, - 2601, 2601, 2612, 2618, 2618, 2629, 2630, 2631, 2636, 2636, - 2646, 2647, 2650, 2651, 2652, 2657, 2658, 2659, 2660, 2661, - 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, - 2674, 2676, 2676, 2685, 2685, 2695, 2701, 2710, 2710, 2723, - 2724, 2725, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, - 2738, 2741, 2741, 2749, 2750, 2751, 2754, 2760, 2760, 2769, - 2775, 2783, 2791, 2791, 2803, 2803, 2815, 2816, 2819, 2820, - 2821, 2826, 2826, 2834, 2835, 2836, 2841, 2842, 2843, 2844, - 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2856, - 2856, 2865, 2866, 2867, 2870, 2870, 2880, 2880, 2890, 2896, - 2902, 2902, 2913, 2914, 2917, 2918, 2919, 2924, 2924, 2932, - 2933, 2934, 2939, 2940, 2941, 2942, 2943, 2946, 2946, 2957, - 2957, 2970, 2971, 2972, 2977, 2978, 2979, 2980, 2981, 2982, - 2983, 2986, 2986, 2994, 2997, 2997, 3006, 3006, 3015, 3015, - 3026, 3027, 3030, 3031, 3032, 3037, 3037, 3045, 3046, 3047, - 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3061, 3061, 3070, - 3070, 3081, 3081, 3094, 3095, 3096, 3101, 3102, 3103, 3104, - 3105, 3106, 3109, 3115, 3115, 3124, 3130, 3130, 3140, 3140, - 3153, 3153, 3163, 3164, 3165, 3170, 3171, 3172, 3173, 3174, - 3175, 3176, 3177, 3178, 3179, 3180, 3183, 3189, 3189, 3198, - 3204, 3204, 3213, 3219, 3225, 3225, 3234, 3235, 3238, 3238, - 3249, 3249, 3261, 3261, 3271, 3272, 3273, 3279, 3280, 3283, - 3283, 3294, 3302, 3302, 3315, 3316, 3317, 3323, 3323, 3331, - 3332, 3333, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3347, - 3353, 3353, 3362, 3362, 3373, 3374, 3375, 3380, 3380, 3388, - 3389, 3390, 3395, 3396, 3397, 3398, 3399, 3402, 3402, 3411, - 3417, 3423, 3429, 3429, 3438, 3438, 3449, 3450, 3451, 3456, - 3457, 3460 + 0, 341, 341, 341, 342, 342, 343, 343, 344, 344, + 345, 345, 346, 346, 347, 347, 348, 348, 349, 349, + 350, 350, 351, 351, 352, 352, 353, 353, 354, 354, + 362, 363, 364, 365, 366, 367, 368, 371, 376, 376, + 387, 390, 391, 394, 399, 405, 410, 410, 417, 418, + 421, 425, 429, 435, 435, 442, 443, 446, 450, 454, + 464, 473, 473, 488, 488, 502, 505, 511, 511, 520, + 521, 522, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 605, 605, 615, 621, + 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, + 687, 693, 699, 705, 711, 717, 723, 723, 732, 735, + 738, 741, 744, 750, 750, 759, 759, 768, 777, 787, + 787, 796, 799, 802, 805, 810, 816, 822, 828, 834, + 834, 843, 843, 852, 858, 864, 870, 870, 879, 885, + 885, 894, 894, 903, 909, 915, 921, 927, 927, 939, + 939, 948, 949, 950, 955, 956, 957, 958, 959, 960, + 961, 962, 965, 965, 976, 982, 988, 994, 1000, 1000, + 1013, 1013, 1026, 1026, 1037, 1038, 1041, 1042, 1043, 1048, + 1048, 1058, 1059, 1060, 1065, 1066, 1067, 1068, 1069, 1070, + 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, + 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1091, 1091, + 1100, 1100, 1109, 1109, 1118, 1118, 1127, 1133, 1133, 1142, + 1148, 1154, 1160, 1166, 1172, 1178, 1184, 1190, 1190, 1198, + 1199, 1200, 1203, 1209, 1215, 1221, 1221, 1230, 1230, 1239, + 1239, 1248, 1248, 1256, 1259, 1262, 1265, 1268, 1273, 1273, + 1282, 1282, 1293, 1294, 1295, 1300, 1301, 1304, 1304, 1323, + 1323, 1341, 1341, 1352, 1353, 1354, 1359, 1360, 1363, 1368, + 1373, 1373, 1384, 1385, 1386, 1391, 1392, 1393, 1396, 1401, + 1408, 1408, 1421, 1421, 1434, 1435, 1436, 1441, 1442, 1443, + 1444, 1445, 1446, 1449, 1455, 1461, 1467, 1467, 1478, 1479, + 1482, 1483, 1484, 1489, 1489, 1499, 1499, 1509, 1510, 1511, + 1514, 1517, 1518, 1521, 1521, 1530, 1530, 1539, 1539, 1551, + 1552, 1553, 1558, 1559, 1560, 1561, 1562, 1563, 1566, 1572, + 1578, 1584, 1590, 1596, 1605, 1605, 1619, 1620, 1623, 1624, + 1625, 1634, 1634, 1660, 1660, 1671, 1672, 1673, 1679, 1680, + 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, + 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, + 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, + 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, + 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, + 1733, 1733, 1742, 1742, 1751, 1751, 1760, 1760, 1770, 1770, + 1782, 1782, 1793, 1793, 1804, 1810, 1816, 1822, 1828, 1836, + 1836, 1848, 1849, 1853, 1854, 1855, 1860, 1860, 1868, 1869, + 1870, 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, 1902, 1903, + 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, + 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, + 1930, 1930, 1944, 1944, 1953, 1954, 1957, 1958, 1959, 1966, + 1966, 1981, 1981, 1995, 1996, 1999, 2000, 2001, 2006, 2007, + 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2018, 2020, + 2026, 2028, 2028, 2037, 2037, 2046, 2046, 2055, 2057, 2057, + 2066, 2076, 2076, 2089, 2090, 2095, 2096, 2097, 2104, 2104, + 2116, 2116, 2128, 2129, 2134, 2135, 2136, 2143, 2144, 2145, + 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2156, 2158, + 2158, 2167, 2169, 2171, 2177, 2183, 2189, 2189, 2203, 2203, + 2216, 2217, 2220, 2221, 2222, 2227, 2227, 2237, 2237, 2247, + 2248, 2249, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, + 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, + 2272, 2273, 2274, 2275, 2276, 2277, 2280, 2280, 2289, 2295, + 2295, 2320, 2320, 2350, 2350, 2363, 2364, 2367, 2368, 2369, + 2374, 2374, 2386, 2386, 2398, 2399, 2400, 2405, 2406, 2407, + 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, + 2418, 2421, 2421, 2430, 2436, 2436, 2445, 2451, 2460, 2460, + 2471, 2472, 2475, 2476, 2477, 2482, 2482, 2491, 2491, 2500, + 2501, 2504, 2505, 2506, 2512, 2513, 2514, 2515, 2516, 2517, + 2518, 2519, 2520, 2521, 2522, 2523, 2526, 2526, 2537, 2537, + 2548, 2548, 2559, 2559, 2568, 2568, 2577, 2577, 2586, 2586, + 2595, 2595, 2609, 2609, 2620, 2626, 2626, 2637, 2638, 2639, + 2644, 2644, 2654, 2655, 2658, 2659, 2660, 2665, 2666, 2667, + 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, + 2678, 2679, 2682, 2684, 2684, 2693, 2693, 2703, 2709, 2718, + 2718, 2731, 2732, 2733, 2738, 2739, 2740, 2741, 2742, 2743, + 2744, 2745, 2746, 2749, 2749, 2757, 2758, 2759, 2762, 2768, + 2768, 2777, 2783, 2791, 2799, 2799, 2811, 2811, 2823, 2824, + 2827, 2828, 2829, 2834, 2834, 2842, 2843, 2844, 2849, 2850, + 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, + 2861, 2864, 2864, 2873, 2874, 2875, 2878, 2878, 2888, 2888, + 2898, 2904, 2910, 2910, 2921, 2922, 2925, 2926, 2927, 2932, + 2932, 2940, 2941, 2942, 2947, 2948, 2949, 2950, 2951, 2954, + 2954, 2965, 2965, 2978, 2979, 2980, 2985, 2986, 2987, 2988, + 2989, 2990, 2991, 2994, 2994, 3002, 3005, 3005, 3014, 3014, + 3023, 3023, 3034, 3035, 3038, 3039, 3040, 3045, 3045, 3053, + 3054, 3055, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3069, + 3069, 3078, 3078, 3089, 3089, 3102, 3103, 3104, 3109, 3110, + 3111, 3112, 3113, 3114, 3117, 3123, 3123, 3132, 3138, 3138, + 3148, 3148, 3161, 3161, 3171, 3172, 3173, 3178, 3179, 3180, + 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3191, 3197, + 3197, 3206, 3212, 3212, 3221, 3227, 3233, 3233, 3242, 3243, + 3246, 3246, 3257, 3257, 3269, 3269, 3279, 3280, 3281, 3287, + 3288, 3291, 3291, 3302, 3310, 3310, 3323, 3324, 3325, 3331, + 3331, 3339, 3340, 3341, 3346, 3347, 3348, 3349, 3350, 3351, + 3352, 3355, 3361, 3361, 3370, 3370, 3381, 3382, 3383, 3388, + 3388, 3396, 3397, 3398, 3403, 3404, 3405, 3406, 3407, 3410, + 3410, 3419, 3425, 3431, 3437, 3437, 3446, 3446, 3457, 3458, + 3459, 3464, 3465, 3468 }; void @@ -7191,9 +7201,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp6_parser.yy" } } // isc::dhcp -#line 7195 "dhcp6_parser.cc" +#line 7205 "dhcp6_parser.cc" -#line 3466 "dhcp6_parser.yy" +#line 3474 "dhcp6_parser.yy" void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index 04d3848188..f3db3b9ae2 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -713,35 +713,36 @@ namespace isc { namespace dhcp { TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 468, // "early-global-reservations-lookup" TOKEN_IP_RESERVATIONS_UNIQUE = 469, // "ip-reservations-unique" TOKEN_RESERVATIONS_LOOKUP_FIRST = 470, // "reservations-lookup-first" - TOKEN_LOGGERS = 471, // "loggers" - TOKEN_OUTPUT_OPTIONS = 472, // "output-options" - TOKEN_OUTPUT = 473, // "output" - TOKEN_DEBUGLEVEL = 474, // "debuglevel" - TOKEN_SEVERITY = 475, // "severity" - TOKEN_FLUSH = 476, // "flush" - TOKEN_MAXSIZE = 477, // "maxsize" - TOKEN_MAXVER = 478, // "maxver" - TOKEN_PATTERN = 479, // "pattern" - TOKEN_COMPATIBILITY = 480, // "compatibility" - TOKEN_LENIENT_OPTION_PARSING = 481, // "lenient-option-parsing" - TOKEN_TOPLEVEL_JSON = 482, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP6 = 483, // TOPLEVEL_DHCP6 - TOKEN_SUB_DHCP6 = 484, // SUB_DHCP6 - TOKEN_SUB_INTERFACES6 = 485, // SUB_INTERFACES6 - TOKEN_SUB_SUBNET6 = 486, // SUB_SUBNET6 - TOKEN_SUB_POOL6 = 487, // SUB_POOL6 - TOKEN_SUB_PD_POOL = 488, // SUB_PD_POOL - TOKEN_SUB_RESERVATION = 489, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 490, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 491, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 492, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 493, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 494, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 495, // SUB_CONFIG_CONTROL - TOKEN_STRING = 496, // "constant string" - TOKEN_INTEGER = 497, // "integer" - TOKEN_FLOAT = 498, // "floating point" - TOKEN_BOOLEAN = 499 // "boolean" + TOKEN_ALLOW_ADDRESS_REGISTRATION = 471, // "allow-address-registration" + TOKEN_LOGGERS = 472, // "loggers" + TOKEN_OUTPUT_OPTIONS = 473, // "output-options" + TOKEN_OUTPUT = 474, // "output" + TOKEN_DEBUGLEVEL = 475, // "debuglevel" + TOKEN_SEVERITY = 476, // "severity" + TOKEN_FLUSH = 477, // "flush" + TOKEN_MAXSIZE = 478, // "maxsize" + TOKEN_MAXVER = 479, // "maxver" + TOKEN_PATTERN = 480, // "pattern" + TOKEN_COMPATIBILITY = 481, // "compatibility" + TOKEN_LENIENT_OPTION_PARSING = 482, // "lenient-option-parsing" + TOKEN_TOPLEVEL_JSON = 483, // TOPLEVEL_JSON + TOKEN_TOPLEVEL_DHCP6 = 484, // TOPLEVEL_DHCP6 + TOKEN_SUB_DHCP6 = 485, // SUB_DHCP6 + TOKEN_SUB_INTERFACES6 = 486, // SUB_INTERFACES6 + TOKEN_SUB_SUBNET6 = 487, // SUB_SUBNET6 + TOKEN_SUB_POOL6 = 488, // SUB_POOL6 + TOKEN_SUB_PD_POOL = 489, // SUB_PD_POOL + TOKEN_SUB_RESERVATION = 490, // SUB_RESERVATION + TOKEN_SUB_OPTION_DEFS = 491, // SUB_OPTION_DEFS + TOKEN_SUB_OPTION_DEF = 492, // SUB_OPTION_DEF + TOKEN_SUB_OPTION_DATA = 493, // SUB_OPTION_DATA + TOKEN_SUB_HOOKS_LIBRARY = 494, // SUB_HOOKS_LIBRARY + TOKEN_SUB_DHCP_DDNS = 495, // SUB_DHCP_DDNS + TOKEN_SUB_CONFIG_CONTROL = 496, // SUB_CONFIG_CONTROL + TOKEN_STRING = 497, // "constant string" + TOKEN_INTEGER = 498, // "integer" + TOKEN_FLOAT = 499, // "floating point" + TOKEN_BOOLEAN = 500 // "boolean" }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -758,7 +759,7 @@ namespace isc { namespace dhcp { { enum symbol_kind_type { - YYNTOKENS = 245, ///< Number of tokens. + YYNTOKENS = 246, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -976,536 +977,538 @@ namespace isc { namespace dhcp { S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 213, // "early-global-reservations-lookup" S_IP_RESERVATIONS_UNIQUE = 214, // "ip-reservations-unique" S_RESERVATIONS_LOOKUP_FIRST = 215, // "reservations-lookup-first" - S_LOGGERS = 216, // "loggers" - S_OUTPUT_OPTIONS = 217, // "output-options" - S_OUTPUT = 218, // "output" - S_DEBUGLEVEL = 219, // "debuglevel" - S_SEVERITY = 220, // "severity" - S_FLUSH = 221, // "flush" - S_MAXSIZE = 222, // "maxsize" - S_MAXVER = 223, // "maxver" - S_PATTERN = 224, // "pattern" - S_COMPATIBILITY = 225, // "compatibility" - S_LENIENT_OPTION_PARSING = 226, // "lenient-option-parsing" - S_TOPLEVEL_JSON = 227, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP6 = 228, // TOPLEVEL_DHCP6 - S_SUB_DHCP6 = 229, // SUB_DHCP6 - S_SUB_INTERFACES6 = 230, // SUB_INTERFACES6 - S_SUB_SUBNET6 = 231, // SUB_SUBNET6 - S_SUB_POOL6 = 232, // SUB_POOL6 - S_SUB_PD_POOL = 233, // SUB_PD_POOL - S_SUB_RESERVATION = 234, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 235, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 236, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 237, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 238, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 239, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 240, // SUB_CONFIG_CONTROL - S_STRING = 241, // "constant string" - S_INTEGER = 242, // "integer" - S_FLOAT = 243, // "floating point" - S_BOOLEAN = 244, // "boolean" - S_YYACCEPT = 245, // $accept - S_start = 246, // start - S_247_1 = 247, // $@1 - S_248_2 = 248, // $@2 - S_249_3 = 249, // $@3 - S_250_4 = 250, // $@4 - S_251_5 = 251, // $@5 - S_252_6 = 252, // $@6 - S_253_7 = 253, // $@7 - S_254_8 = 254, // $@8 - S_255_9 = 255, // $@9 - S_256_10 = 256, // $@10 - S_257_11 = 257, // $@11 - S_258_12 = 258, // $@12 - S_259_13 = 259, // $@13 - S_260_14 = 260, // $@14 - S_value = 261, // value - S_sub_json = 262, // sub_json - S_map2 = 263, // map2 - S_264_15 = 264, // $@15 - S_map_value = 265, // map_value - S_map_content = 266, // map_content - S_not_empty_map = 267, // not_empty_map - S_list_generic = 268, // list_generic - S_269_16 = 269, // $@16 - S_list_content = 270, // list_content - S_not_empty_list = 271, // not_empty_list - S_list_strings = 272, // list_strings - S_273_17 = 273, // $@17 - S_list_strings_content = 274, // list_strings_content - S_not_empty_list_strings = 275, // not_empty_list_strings - S_unknown_map_entry = 276, // unknown_map_entry - S_syntax_map = 277, // syntax_map - S_278_18 = 278, // $@18 - S_global_object = 279, // global_object - S_280_19 = 280, // $@19 - S_global_object_comma = 281, // global_object_comma - S_sub_dhcp6 = 282, // sub_dhcp6 - S_283_20 = 283, // $@20 - S_global_params = 284, // global_params - S_global_param = 285, // global_param - S_data_directory = 286, // data_directory - S_287_21 = 287, // $@21 - S_preferred_lifetime = 288, // preferred_lifetime - S_min_preferred_lifetime = 289, // min_preferred_lifetime - S_max_preferred_lifetime = 290, // max_preferred_lifetime - S_valid_lifetime = 291, // valid_lifetime - S_min_valid_lifetime = 292, // min_valid_lifetime - S_max_valid_lifetime = 293, // max_valid_lifetime - S_renew_timer = 294, // renew_timer - S_rebind_timer = 295, // rebind_timer - S_calculate_tee_times = 296, // calculate_tee_times - S_t1_percent = 297, // t1_percent - S_t2_percent = 298, // t2_percent - S_cache_threshold = 299, // cache_threshold - S_cache_max_age = 300, // cache_max_age - S_adaptive_lease_time_threshold = 301, // adaptive_lease_time_threshold - S_decline_probation_period = 302, // decline_probation_period - S_ddns_send_updates = 303, // ddns_send_updates - S_ddns_override_no_update = 304, // ddns_override_no_update - S_ddns_override_client_update = 305, // ddns_override_client_update - S_ddns_replace_client_name = 306, // ddns_replace_client_name - S_307_22 = 307, // $@22 - S_ddns_replace_client_name_value = 308, // ddns_replace_client_name_value - S_ddns_generated_prefix = 309, // ddns_generated_prefix - S_310_23 = 310, // $@23 - S_ddns_qualifying_suffix = 311, // ddns_qualifying_suffix - S_312_24 = 312, // $@24 - S_ddns_update_on_renew = 313, // ddns_update_on_renew - S_ddns_use_conflict_resolution = 314, // ddns_use_conflict_resolution - S_ddns_conflict_resolution_mode = 315, // ddns_conflict_resolution_mode - S_316_25 = 316, // $@25 - S_ddns_conflict_resolution_mode_value = 317, // ddns_conflict_resolution_mode_value - S_ddns_ttl_percent = 318, // ddns_ttl_percent - S_ddns_ttl = 319, // ddns_ttl - S_ddns_ttl_min = 320, // ddns_ttl_min - S_ddns_ttl_max = 321, // ddns_ttl_max - S_hostname_char_set = 322, // hostname_char_set - S_323_26 = 323, // $@26 - S_hostname_char_replacement = 324, // hostname_char_replacement - S_325_27 = 325, // $@27 - S_store_extended_info = 326, // store_extended_info - S_statistic_default_sample_count = 327, // statistic_default_sample_count - S_statistic_default_sample_age = 328, // statistic_default_sample_age - S_server_tag = 329, // server_tag - S_330_28 = 330, // $@28 - S_parked_packet_limit = 331, // parked_packet_limit - S_allocator = 332, // allocator - S_333_29 = 333, // $@29 - S_pd_allocator = 334, // pd_allocator - S_335_30 = 335, // $@30 - S_early_global_reservations_lookup = 336, // early_global_reservations_lookup - S_ip_reservations_unique = 337, // ip_reservations_unique - S_reservations_lookup_first = 338, // reservations_lookup_first - S_interfaces_config = 339, // interfaces_config - S_340_31 = 340, // $@31 - S_sub_interfaces6 = 341, // sub_interfaces6 - S_342_32 = 342, // $@32 - S_interfaces_config_params = 343, // interfaces_config_params - S_interfaces_config_param = 344, // interfaces_config_param - S_interfaces_list = 345, // interfaces_list - S_346_33 = 346, // $@33 - S_re_detect = 347, // re_detect - S_service_sockets_require_all = 348, // service_sockets_require_all - S_service_sockets_retry_wait_time = 349, // service_sockets_retry_wait_time - S_service_sockets_max_retries = 350, // service_sockets_max_retries - S_lease_database = 351, // lease_database - S_352_34 = 352, // $@34 - S_hosts_database = 353, // hosts_database - S_354_35 = 354, // $@35 - S_hosts_databases = 355, // hosts_databases - S_356_36 = 356, // $@36 - S_database_list = 357, // database_list - S_not_empty_database_list = 358, // not_empty_database_list - S_database = 359, // database - S_360_37 = 360, // $@37 - S_database_map_params = 361, // database_map_params - S_database_map_param = 362, // database_map_param - S_database_type = 363, // database_type - S_364_38 = 364, // $@38 - S_user = 365, // user - S_366_39 = 366, // $@39 - S_password = 367, // password - S_368_40 = 368, // $@40 - S_host = 369, // host - S_370_41 = 370, // $@41 - S_port = 371, // port - S_name = 372, // name - S_373_42 = 373, // $@42 - S_persist = 374, // persist - S_lfc_interval = 375, // lfc_interval - S_readonly = 376, // readonly - S_connect_timeout = 377, // connect_timeout - S_read_timeout = 378, // read_timeout - S_write_timeout = 379, // write_timeout - S_tcp_user_timeout = 380, // tcp_user_timeout - S_reconnect_wait_time = 381, // reconnect_wait_time - S_on_fail = 382, // on_fail - S_383_43 = 383, // $@43 - S_on_fail_mode = 384, // on_fail_mode - S_retry_on_startup = 385, // retry_on_startup - S_max_row_errors = 386, // max_row_errors - S_max_reconnect_tries = 387, // max_reconnect_tries - S_trust_anchor = 388, // trust_anchor - S_389_44 = 389, // $@44 - S_cert_file = 390, // cert_file - S_391_45 = 391, // $@45 - S_key_file = 392, // key_file - S_393_46 = 393, // $@46 - S_ssl_mode = 394, // ssl_mode - S_395_47 = 395, // $@47 - S_cipher_list = 396, // cipher_list - S_397_48 = 397, // $@48 - S_sanity_checks = 398, // sanity_checks - S_399_49 = 399, // $@49 - S_sanity_checks_params = 400, // sanity_checks_params - S_sanity_checks_param = 401, // sanity_checks_param - S_lease_checks = 402, // lease_checks - S_403_50 = 403, // $@50 - S_extended_info_checks = 404, // extended_info_checks - S_405_51 = 405, // $@51 - S_mac_sources = 406, // mac_sources - S_407_52 = 407, // $@52 - S_mac_sources_list = 408, // mac_sources_list - S_mac_sources_value = 409, // mac_sources_value - S_duid_id = 410, // duid_id - S_string_id = 411, // string_id - S_host_reservation_identifiers = 412, // host_reservation_identifiers - S_413_53 = 413, // $@53 - S_host_reservation_identifiers_list = 414, // host_reservation_identifiers_list - S_host_reservation_identifier = 415, // host_reservation_identifier - S_hw_address_id = 416, // hw_address_id - S_flex_id = 417, // flex_id - S_relay_supplied_options = 418, // relay_supplied_options - S_419_54 = 419, // $@54 - S_dhcp_multi_threading = 420, // dhcp_multi_threading - S_421_55 = 421, // $@55 - S_multi_threading_params = 422, // multi_threading_params - S_multi_threading_param = 423, // multi_threading_param - S_enable_multi_threading = 424, // enable_multi_threading - S_thread_pool_size = 425, // thread_pool_size - S_packet_queue_size = 426, // packet_queue_size - S_hooks_libraries = 427, // hooks_libraries - S_428_56 = 428, // $@56 - S_hooks_libraries_list = 429, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 430, // not_empty_hooks_libraries_list - S_hooks_library = 431, // hooks_library - S_432_57 = 432, // $@57 - S_sub_hooks_library = 433, // sub_hooks_library - S_434_58 = 434, // $@58 - S_hooks_params = 435, // hooks_params - S_hooks_param = 436, // hooks_param - S_library = 437, // library - S_438_59 = 438, // $@59 - S_parameters = 439, // parameters - S_440_60 = 440, // $@60 - S_expired_leases_processing = 441, // expired_leases_processing - S_442_61 = 442, // $@61 - S_expired_leases_params = 443, // expired_leases_params - S_expired_leases_param = 444, // expired_leases_param - S_reclaim_timer_wait_time = 445, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 446, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 447, // hold_reclaimed_time - S_max_reclaim_leases = 448, // max_reclaim_leases - S_max_reclaim_time = 449, // max_reclaim_time - S_unwarned_reclaim_cycles = 450, // unwarned_reclaim_cycles - S_subnet6_list = 451, // subnet6_list - S_452_62 = 452, // $@62 - S_subnet6_list_content = 453, // subnet6_list_content - S_not_empty_subnet6_list = 454, // not_empty_subnet6_list - S_subnet6 = 455, // subnet6 - S_456_63 = 456, // $@63 - S_sub_subnet6 = 457, // sub_subnet6 - S_458_64 = 458, // $@64 - S_subnet6_params = 459, // subnet6_params - S_subnet6_param = 460, // subnet6_param - S_subnet = 461, // subnet - S_462_65 = 462, // $@65 - S_interface = 463, // interface - S_464_66 = 464, // $@66 - S_interface_id = 465, // interface_id - S_466_67 = 466, // $@67 - S_client_class = 467, // client_class - S_468_68 = 468, // $@68 - S_network_client_classes = 469, // network_client_classes - S_470_69 = 470, // $@69 - S_require_client_classes = 471, // require_client_classes - S_472_70 = 472, // $@70 - S_evaluate_additional_classes = 473, // evaluate_additional_classes - S_474_71 = 474, // $@71 - S_reservations_global = 475, // reservations_global - S_reservations_in_subnet = 476, // reservations_in_subnet - S_reservations_out_of_pool = 477, // reservations_out_of_pool - S_id = 478, // id - S_rapid_commit = 479, // rapid_commit - S_shared_networks = 480, // shared_networks - S_481_72 = 481, // $@72 - S_shared_networks_content = 482, // shared_networks_content - S_shared_networks_list = 483, // shared_networks_list - S_shared_network = 484, // shared_network - S_485_73 = 485, // $@73 - S_shared_network_params = 486, // shared_network_params - S_shared_network_param = 487, // shared_network_param - S_option_def_list = 488, // option_def_list - S_489_74 = 489, // $@74 - S_sub_option_def_list = 490, // sub_option_def_list - S_491_75 = 491, // $@75 - S_option_def_list_content = 492, // option_def_list_content - S_not_empty_option_def_list = 493, // not_empty_option_def_list - S_option_def_entry = 494, // option_def_entry - S_495_76 = 495, // $@76 - S_sub_option_def = 496, // sub_option_def - S_497_77 = 497, // $@77 - S_option_def_params = 498, // option_def_params - S_not_empty_option_def_params = 499, // not_empty_option_def_params - S_option_def_param = 500, // option_def_param - S_option_def_name = 501, // option_def_name - S_code = 502, // code - S_option_def_code = 503, // option_def_code - S_option_def_type = 504, // option_def_type - S_505_78 = 505, // $@78 - S_option_def_record_types = 506, // option_def_record_types - S_507_79 = 507, // $@79 - S_space = 508, // space - S_509_80 = 509, // $@80 - S_option_def_space = 510, // option_def_space - S_option_def_encapsulate = 511, // option_def_encapsulate - S_512_81 = 512, // $@81 - S_option_def_array = 513, // option_def_array - S_option_data_list = 514, // option_data_list - S_515_82 = 515, // $@82 - S_option_data_list_content = 516, // option_data_list_content - S_not_empty_option_data_list = 517, // not_empty_option_data_list - S_option_data_entry = 518, // option_data_entry - S_519_83 = 519, // $@83 - S_sub_option_data = 520, // sub_option_data - S_521_84 = 521, // $@84 - S_option_data_params = 522, // option_data_params - S_not_empty_option_data_params = 523, // not_empty_option_data_params - S_option_data_param = 524, // option_data_param - S_option_data_name = 525, // option_data_name - S_option_data_data = 526, // option_data_data - S_527_85 = 527, // $@85 - S_option_data_code = 528, // option_data_code - S_option_data_space = 529, // option_data_space - S_option_data_csv_format = 530, // option_data_csv_format - S_option_data_always_send = 531, // option_data_always_send - S_option_data_never_send = 532, // option_data_never_send - S_option_data_client_classes = 533, // option_data_client_classes - S_534_86 = 534, // $@86 - S_pools_list = 535, // pools_list - S_536_87 = 536, // $@87 - S_pools_list_content = 537, // pools_list_content - S_not_empty_pools_list = 538, // not_empty_pools_list - S_pool_list_entry = 539, // pool_list_entry - S_540_88 = 540, // $@88 - S_sub_pool6 = 541, // sub_pool6 - S_542_89 = 542, // $@89 - S_pool_params = 543, // pool_params - S_pool_param = 544, // pool_param - S_pool_entry = 545, // pool_entry - S_546_90 = 546, // $@90 - S_pool_id = 547, // pool_id - S_user_context = 548, // user_context - S_549_91 = 549, // $@91 - S_comment = 550, // comment - S_551_92 = 551, // $@92 - S_pd_pools_list = 552, // pd_pools_list - S_553_93 = 553, // $@93 - S_pd_pools_list_content = 554, // pd_pools_list_content - S_not_empty_pd_pools_list = 555, // not_empty_pd_pools_list - S_pd_pool_entry = 556, // pd_pool_entry - S_557_94 = 557, // $@94 - S_sub_pd_pool = 558, // sub_pd_pool - S_559_95 = 559, // $@95 - S_pd_pool_params = 560, // pd_pool_params - S_pd_pool_param = 561, // pd_pool_param - S_pd_prefix = 562, // pd_prefix - S_563_96 = 563, // $@96 - S_pd_prefix_len = 564, // pd_prefix_len - S_excluded_prefix = 565, // excluded_prefix - S_566_97 = 566, // $@97 - S_excluded_prefix_len = 567, // excluded_prefix_len - S_pd_delegated_len = 568, // pd_delegated_len - S_reservations = 569, // reservations - S_570_98 = 570, // $@98 - S_reservations_list = 571, // reservations_list - S_not_empty_reservations_list = 572, // not_empty_reservations_list - S_reservation = 573, // reservation - S_574_99 = 574, // $@99 - S_sub_reservation = 575, // sub_reservation - S_576_100 = 576, // $@100 - S_reservation_params = 577, // reservation_params - S_not_empty_reservation_params = 578, // not_empty_reservation_params - S_reservation_param = 579, // reservation_param - S_ip_addresses = 580, // ip_addresses - S_581_101 = 581, // $@101 - S_prefixes = 582, // prefixes - S_583_102 = 583, // $@102 - S_excluded_prefixes = 584, // excluded_prefixes - S_585_103 = 585, // $@103 - S_duid = 586, // duid - S_587_104 = 587, // $@104 - S_hw_address = 588, // hw_address - S_589_105 = 589, // $@105 - S_hostname = 590, // hostname - S_591_106 = 591, // $@106 - S_flex_id_value = 592, // flex_id_value - S_593_107 = 593, // $@107 - S_reservation_client_classes = 594, // reservation_client_classes - S_595_108 = 595, // $@108 - S_relay = 596, // relay - S_597_109 = 597, // $@109 - S_relay_map = 598, // relay_map - S_client_classes = 599, // client_classes - S_600_110 = 600, // $@110 - S_client_classes_list = 601, // client_classes_list - S_client_class_entry = 602, // client_class_entry - S_603_111 = 603, // $@111 - S_client_class_params = 604, // client_class_params - S_not_empty_client_class_params = 605, // not_empty_client_class_params - S_client_class_param = 606, // client_class_param - S_client_class_name = 607, // client_class_name - S_client_class_test = 608, // client_class_test - S_609_112 = 609, // $@112 - S_client_class_template_test = 610, // client_class_template_test - S_611_113 = 611, // $@113 - S_only_if_required = 612, // only_if_required - S_only_in_additional_list = 613, // only_in_additional_list - S_server_id = 614, // server_id - S_615_114 = 615, // $@114 - S_server_id_params = 616, // server_id_params - S_server_id_param = 617, // server_id_param - S_server_id_type = 618, // server_id_type - S_619_115 = 619, // $@115 - S_duid_type = 620, // duid_type - S_htype = 621, // htype - S_identifier = 622, // identifier - S_623_116 = 623, // $@116 - S_time = 624, // time - S_enterprise_id = 625, // enterprise_id - S_dhcp4o6_port = 626, // dhcp4o6_port - S_control_socket = 627, // control_socket - S_628_117 = 628, // $@117 - S_control_sockets = 629, // control_sockets - S_630_118 = 630, // $@118 - S_control_socket_list = 631, // control_socket_list - S_not_empty_control_socket_list = 632, // not_empty_control_socket_list - S_control_socket_entry = 633, // control_socket_entry - S_634_119 = 634, // $@119 - S_control_socket_params = 635, // control_socket_params - S_control_socket_param = 636, // control_socket_param - S_control_socket_type = 637, // control_socket_type - S_638_120 = 638, // $@120 - S_control_socket_type_value = 639, // control_socket_type_value - S_control_socket_name = 640, // control_socket_name - S_641_121 = 641, // $@121 - S_control_socket_address = 642, // control_socket_address - S_643_122 = 643, // $@122 - S_control_socket_port = 644, // control_socket_port - S_cert_required = 645, // cert_required - S_http_headers = 646, // http_headers - S_647_123 = 647, // $@123 - S_http_header_list = 648, // http_header_list - S_not_empty_http_header_list = 649, // not_empty_http_header_list - S_http_header = 650, // http_header - S_651_124 = 651, // $@124 - S_http_header_params = 652, // http_header_params - S_http_header_param = 653, // http_header_param - S_header_value = 654, // header_value - S_655_125 = 655, // $@125 - S_authentication = 656, // authentication - S_657_126 = 657, // $@126 - S_auth_params = 658, // auth_params - S_auth_param = 659, // auth_param - S_auth_type = 660, // auth_type - S_661_127 = 661, // $@127 - S_auth_type_value = 662, // auth_type_value - S_realm = 663, // realm - S_664_128 = 664, // $@128 - S_directory = 665, // directory - S_666_129 = 666, // $@129 - S_clients = 667, // clients - S_668_130 = 668, // $@130 - S_clients_list = 669, // clients_list - S_not_empty_clients_list = 670, // not_empty_clients_list - S_basic_auth = 671, // basic_auth - S_672_131 = 672, // $@131 - S_clients_params = 673, // clients_params - S_clients_param = 674, // clients_param - S_user_file = 675, // user_file - S_676_132 = 676, // $@132 - S_password_file = 677, // password_file - S_678_133 = 678, // $@133 - S_dhcp_queue_control = 679, // dhcp_queue_control - S_680_134 = 680, // $@134 - S_queue_control_params = 681, // queue_control_params - S_queue_control_param = 682, // queue_control_param - S_enable_queue = 683, // enable_queue - S_queue_type = 684, // queue_type - S_685_135 = 685, // $@135 - S_capacity = 686, // capacity - S_arbitrary_map_entry = 687, // arbitrary_map_entry - S_688_136 = 688, // $@136 - S_dhcp_ddns = 689, // dhcp_ddns - S_690_137 = 690, // $@137 - S_sub_dhcp_ddns = 691, // sub_dhcp_ddns - S_692_138 = 692, // $@138 - S_dhcp_ddns_params = 693, // dhcp_ddns_params - S_dhcp_ddns_param = 694, // dhcp_ddns_param - S_enable_updates = 695, // enable_updates - S_server_ip = 696, // server_ip - S_697_139 = 697, // $@139 - S_server_port = 698, // server_port - S_sender_ip = 699, // sender_ip - S_700_140 = 700, // $@140 - S_sender_port = 701, // sender_port - S_max_queue_size = 702, // max_queue_size - S_ncr_protocol = 703, // ncr_protocol - S_704_141 = 704, // $@141 - S_ncr_protocol_value = 705, // ncr_protocol_value - S_ncr_format = 706, // ncr_format - S_707_142 = 707, // $@142 - S_config_control = 708, // config_control - S_709_143 = 709, // $@143 - S_sub_config_control = 710, // sub_config_control - S_711_144 = 711, // $@144 - S_config_control_params = 712, // config_control_params - S_config_control_param = 713, // config_control_param - S_config_databases = 714, // config_databases - S_715_145 = 715, // $@145 - S_config_fetch_wait_time = 716, // config_fetch_wait_time - S_loggers = 717, // loggers - S_718_146 = 718, // $@146 - S_loggers_entries = 719, // loggers_entries - S_logger_entry = 720, // logger_entry - S_721_147 = 721, // $@147 - S_logger_params = 722, // logger_params - S_logger_param = 723, // logger_param - S_debuglevel = 724, // debuglevel - S_severity = 725, // severity - S_726_148 = 726, // $@148 - S_output_options_list = 727, // output_options_list - S_728_149 = 728, // $@149 - S_output_options_list_content = 729, // output_options_list_content - S_output_entry = 730, // output_entry - S_731_150 = 731, // $@150 - S_output_params_list = 732, // output_params_list - S_output_params = 733, // output_params - S_output = 734, // output - S_735_151 = 735, // $@151 - S_flush = 736, // flush - S_maxsize = 737, // maxsize - S_maxver = 738, // maxver - S_pattern = 739, // pattern - S_740_152 = 740, // $@152 - S_compatibility = 741, // compatibility - S_742_153 = 742, // $@153 - S_compatibility_params = 743, // compatibility_params - S_compatibility_param = 744, // compatibility_param - S_lenient_option_parsing = 745 // lenient_option_parsing + S_ALLOW_ADDRESS_REGISTRATION = 216, // "allow-address-registration" + S_LOGGERS = 217, // "loggers" + S_OUTPUT_OPTIONS = 218, // "output-options" + S_OUTPUT = 219, // "output" + S_DEBUGLEVEL = 220, // "debuglevel" + S_SEVERITY = 221, // "severity" + S_FLUSH = 222, // "flush" + S_MAXSIZE = 223, // "maxsize" + S_MAXVER = 224, // "maxver" + S_PATTERN = 225, // "pattern" + S_COMPATIBILITY = 226, // "compatibility" + S_LENIENT_OPTION_PARSING = 227, // "lenient-option-parsing" + S_TOPLEVEL_JSON = 228, // TOPLEVEL_JSON + S_TOPLEVEL_DHCP6 = 229, // TOPLEVEL_DHCP6 + S_SUB_DHCP6 = 230, // SUB_DHCP6 + S_SUB_INTERFACES6 = 231, // SUB_INTERFACES6 + S_SUB_SUBNET6 = 232, // SUB_SUBNET6 + S_SUB_POOL6 = 233, // SUB_POOL6 + S_SUB_PD_POOL = 234, // SUB_PD_POOL + S_SUB_RESERVATION = 235, // SUB_RESERVATION + S_SUB_OPTION_DEFS = 236, // SUB_OPTION_DEFS + S_SUB_OPTION_DEF = 237, // SUB_OPTION_DEF + S_SUB_OPTION_DATA = 238, // SUB_OPTION_DATA + S_SUB_HOOKS_LIBRARY = 239, // SUB_HOOKS_LIBRARY + S_SUB_DHCP_DDNS = 240, // SUB_DHCP_DDNS + S_SUB_CONFIG_CONTROL = 241, // SUB_CONFIG_CONTROL + S_STRING = 242, // "constant string" + S_INTEGER = 243, // "integer" + S_FLOAT = 244, // "floating point" + S_BOOLEAN = 245, // "boolean" + S_YYACCEPT = 246, // $accept + S_start = 247, // start + S_248_1 = 248, // $@1 + S_249_2 = 249, // $@2 + S_250_3 = 250, // $@3 + S_251_4 = 251, // $@4 + S_252_5 = 252, // $@5 + S_253_6 = 253, // $@6 + S_254_7 = 254, // $@7 + S_255_8 = 255, // $@8 + S_256_9 = 256, // $@9 + S_257_10 = 257, // $@10 + S_258_11 = 258, // $@11 + S_259_12 = 259, // $@12 + S_260_13 = 260, // $@13 + S_261_14 = 261, // $@14 + S_value = 262, // value + S_sub_json = 263, // sub_json + S_map2 = 264, // map2 + S_265_15 = 265, // $@15 + S_map_value = 266, // map_value + S_map_content = 267, // map_content + S_not_empty_map = 268, // not_empty_map + S_list_generic = 269, // list_generic + S_270_16 = 270, // $@16 + S_list_content = 271, // list_content + S_not_empty_list = 272, // not_empty_list + S_list_strings = 273, // list_strings + S_274_17 = 274, // $@17 + S_list_strings_content = 275, // list_strings_content + S_not_empty_list_strings = 276, // not_empty_list_strings + S_unknown_map_entry = 277, // unknown_map_entry + S_syntax_map = 278, // syntax_map + S_279_18 = 279, // $@18 + S_global_object = 280, // global_object + S_281_19 = 281, // $@19 + S_global_object_comma = 282, // global_object_comma + S_sub_dhcp6 = 283, // sub_dhcp6 + S_284_20 = 284, // $@20 + S_global_params = 285, // global_params + S_global_param = 286, // global_param + S_data_directory = 287, // data_directory + S_288_21 = 288, // $@21 + S_preferred_lifetime = 289, // preferred_lifetime + S_min_preferred_lifetime = 290, // min_preferred_lifetime + S_max_preferred_lifetime = 291, // max_preferred_lifetime + S_valid_lifetime = 292, // valid_lifetime + S_min_valid_lifetime = 293, // min_valid_lifetime + S_max_valid_lifetime = 294, // max_valid_lifetime + S_renew_timer = 295, // renew_timer + S_rebind_timer = 296, // rebind_timer + S_calculate_tee_times = 297, // calculate_tee_times + S_t1_percent = 298, // t1_percent + S_t2_percent = 299, // t2_percent + S_cache_threshold = 300, // cache_threshold + S_cache_max_age = 301, // cache_max_age + S_adaptive_lease_time_threshold = 302, // adaptive_lease_time_threshold + S_decline_probation_period = 303, // decline_probation_period + S_ddns_send_updates = 304, // ddns_send_updates + S_ddns_override_no_update = 305, // ddns_override_no_update + S_ddns_override_client_update = 306, // ddns_override_client_update + S_ddns_replace_client_name = 307, // ddns_replace_client_name + S_308_22 = 308, // $@22 + S_ddns_replace_client_name_value = 309, // ddns_replace_client_name_value + S_ddns_generated_prefix = 310, // ddns_generated_prefix + S_311_23 = 311, // $@23 + S_ddns_qualifying_suffix = 312, // ddns_qualifying_suffix + S_313_24 = 313, // $@24 + S_ddns_update_on_renew = 314, // ddns_update_on_renew + S_ddns_use_conflict_resolution = 315, // ddns_use_conflict_resolution + S_ddns_conflict_resolution_mode = 316, // ddns_conflict_resolution_mode + S_317_25 = 317, // $@25 + S_ddns_conflict_resolution_mode_value = 318, // ddns_conflict_resolution_mode_value + S_ddns_ttl_percent = 319, // ddns_ttl_percent + S_ddns_ttl = 320, // ddns_ttl + S_ddns_ttl_min = 321, // ddns_ttl_min + S_ddns_ttl_max = 322, // ddns_ttl_max + S_hostname_char_set = 323, // hostname_char_set + S_324_26 = 324, // $@26 + S_hostname_char_replacement = 325, // hostname_char_replacement + S_326_27 = 326, // $@27 + S_store_extended_info = 327, // store_extended_info + S_statistic_default_sample_count = 328, // statistic_default_sample_count + S_statistic_default_sample_age = 329, // statistic_default_sample_age + S_server_tag = 330, // server_tag + S_331_28 = 331, // $@28 + S_parked_packet_limit = 332, // parked_packet_limit + S_allocator = 333, // allocator + S_334_29 = 334, // $@29 + S_pd_allocator = 335, // pd_allocator + S_336_30 = 336, // $@30 + S_early_global_reservations_lookup = 337, // early_global_reservations_lookup + S_ip_reservations_unique = 338, // ip_reservations_unique + S_reservations_lookup_first = 339, // reservations_lookup_first + S_allow_address_registration = 340, // allow_address_registration + S_interfaces_config = 341, // interfaces_config + S_342_31 = 342, // $@31 + S_sub_interfaces6 = 343, // sub_interfaces6 + S_344_32 = 344, // $@32 + S_interfaces_config_params = 345, // interfaces_config_params + S_interfaces_config_param = 346, // interfaces_config_param + S_interfaces_list = 347, // interfaces_list + S_348_33 = 348, // $@33 + S_re_detect = 349, // re_detect + S_service_sockets_require_all = 350, // service_sockets_require_all + S_service_sockets_retry_wait_time = 351, // service_sockets_retry_wait_time + S_service_sockets_max_retries = 352, // service_sockets_max_retries + S_lease_database = 353, // lease_database + S_354_34 = 354, // $@34 + S_hosts_database = 355, // hosts_database + S_356_35 = 356, // $@35 + S_hosts_databases = 357, // hosts_databases + S_358_36 = 358, // $@36 + S_database_list = 359, // database_list + S_not_empty_database_list = 360, // not_empty_database_list + S_database = 361, // database + S_362_37 = 362, // $@37 + S_database_map_params = 363, // database_map_params + S_database_map_param = 364, // database_map_param + S_database_type = 365, // database_type + S_366_38 = 366, // $@38 + S_user = 367, // user + S_368_39 = 368, // $@39 + S_password = 369, // password + S_370_40 = 370, // $@40 + S_host = 371, // host + S_372_41 = 372, // $@41 + S_port = 373, // port + S_name = 374, // name + S_375_42 = 375, // $@42 + S_persist = 376, // persist + S_lfc_interval = 377, // lfc_interval + S_readonly = 378, // readonly + S_connect_timeout = 379, // connect_timeout + S_read_timeout = 380, // read_timeout + S_write_timeout = 381, // write_timeout + S_tcp_user_timeout = 382, // tcp_user_timeout + S_reconnect_wait_time = 383, // reconnect_wait_time + S_on_fail = 384, // on_fail + S_385_43 = 385, // $@43 + S_on_fail_mode = 386, // on_fail_mode + S_retry_on_startup = 387, // retry_on_startup + S_max_row_errors = 388, // max_row_errors + S_max_reconnect_tries = 389, // max_reconnect_tries + S_trust_anchor = 390, // trust_anchor + S_391_44 = 391, // $@44 + S_cert_file = 392, // cert_file + S_393_45 = 393, // $@45 + S_key_file = 394, // key_file + S_395_46 = 395, // $@46 + S_ssl_mode = 396, // ssl_mode + S_397_47 = 397, // $@47 + S_cipher_list = 398, // cipher_list + S_399_48 = 399, // $@48 + S_sanity_checks = 400, // sanity_checks + S_401_49 = 401, // $@49 + S_sanity_checks_params = 402, // sanity_checks_params + S_sanity_checks_param = 403, // sanity_checks_param + S_lease_checks = 404, // lease_checks + S_405_50 = 405, // $@50 + S_extended_info_checks = 406, // extended_info_checks + S_407_51 = 407, // $@51 + S_mac_sources = 408, // mac_sources + S_409_52 = 409, // $@52 + S_mac_sources_list = 410, // mac_sources_list + S_mac_sources_value = 411, // mac_sources_value + S_duid_id = 412, // duid_id + S_string_id = 413, // string_id + S_host_reservation_identifiers = 414, // host_reservation_identifiers + S_415_53 = 415, // $@53 + S_host_reservation_identifiers_list = 416, // host_reservation_identifiers_list + S_host_reservation_identifier = 417, // host_reservation_identifier + S_hw_address_id = 418, // hw_address_id + S_flex_id = 419, // flex_id + S_relay_supplied_options = 420, // relay_supplied_options + S_421_54 = 421, // $@54 + S_dhcp_multi_threading = 422, // dhcp_multi_threading + S_423_55 = 423, // $@55 + S_multi_threading_params = 424, // multi_threading_params + S_multi_threading_param = 425, // multi_threading_param + S_enable_multi_threading = 426, // enable_multi_threading + S_thread_pool_size = 427, // thread_pool_size + S_packet_queue_size = 428, // packet_queue_size + S_hooks_libraries = 429, // hooks_libraries + S_430_56 = 430, // $@56 + S_hooks_libraries_list = 431, // hooks_libraries_list + S_not_empty_hooks_libraries_list = 432, // not_empty_hooks_libraries_list + S_hooks_library = 433, // hooks_library + S_434_57 = 434, // $@57 + S_sub_hooks_library = 435, // sub_hooks_library + S_436_58 = 436, // $@58 + S_hooks_params = 437, // hooks_params + S_hooks_param = 438, // hooks_param + S_library = 439, // library + S_440_59 = 440, // $@59 + S_parameters = 441, // parameters + S_442_60 = 442, // $@60 + S_expired_leases_processing = 443, // expired_leases_processing + S_444_61 = 444, // $@61 + S_expired_leases_params = 445, // expired_leases_params + S_expired_leases_param = 446, // expired_leases_param + S_reclaim_timer_wait_time = 447, // reclaim_timer_wait_time + S_flush_reclaimed_timer_wait_time = 448, // flush_reclaimed_timer_wait_time + S_hold_reclaimed_time = 449, // hold_reclaimed_time + S_max_reclaim_leases = 450, // max_reclaim_leases + S_max_reclaim_time = 451, // max_reclaim_time + S_unwarned_reclaim_cycles = 452, // unwarned_reclaim_cycles + S_subnet6_list = 453, // subnet6_list + S_454_62 = 454, // $@62 + S_subnet6_list_content = 455, // subnet6_list_content + S_not_empty_subnet6_list = 456, // not_empty_subnet6_list + S_subnet6 = 457, // subnet6 + S_458_63 = 458, // $@63 + S_sub_subnet6 = 459, // sub_subnet6 + S_460_64 = 460, // $@64 + S_subnet6_params = 461, // subnet6_params + S_subnet6_param = 462, // subnet6_param + S_subnet = 463, // subnet + S_464_65 = 464, // $@65 + S_interface = 465, // interface + S_466_66 = 466, // $@66 + S_interface_id = 467, // interface_id + S_468_67 = 468, // $@67 + S_client_class = 469, // client_class + S_470_68 = 470, // $@68 + S_network_client_classes = 471, // network_client_classes + S_472_69 = 472, // $@69 + S_require_client_classes = 473, // require_client_classes + S_474_70 = 474, // $@70 + S_evaluate_additional_classes = 475, // evaluate_additional_classes + S_476_71 = 476, // $@71 + S_reservations_global = 477, // reservations_global + S_reservations_in_subnet = 478, // reservations_in_subnet + S_reservations_out_of_pool = 479, // reservations_out_of_pool + S_id = 480, // id + S_rapid_commit = 481, // rapid_commit + S_shared_networks = 482, // shared_networks + S_483_72 = 483, // $@72 + S_shared_networks_content = 484, // shared_networks_content + S_shared_networks_list = 485, // shared_networks_list + S_shared_network = 486, // shared_network + S_487_73 = 487, // $@73 + S_shared_network_params = 488, // shared_network_params + S_shared_network_param = 489, // shared_network_param + S_option_def_list = 490, // option_def_list + S_491_74 = 491, // $@74 + S_sub_option_def_list = 492, // sub_option_def_list + S_493_75 = 493, // $@75 + S_option_def_list_content = 494, // option_def_list_content + S_not_empty_option_def_list = 495, // not_empty_option_def_list + S_option_def_entry = 496, // option_def_entry + S_497_76 = 497, // $@76 + S_sub_option_def = 498, // sub_option_def + S_499_77 = 499, // $@77 + S_option_def_params = 500, // option_def_params + S_not_empty_option_def_params = 501, // not_empty_option_def_params + S_option_def_param = 502, // option_def_param + S_option_def_name = 503, // option_def_name + S_code = 504, // code + S_option_def_code = 505, // option_def_code + S_option_def_type = 506, // option_def_type + S_507_78 = 507, // $@78 + S_option_def_record_types = 508, // option_def_record_types + S_509_79 = 509, // $@79 + S_space = 510, // space + S_511_80 = 511, // $@80 + S_option_def_space = 512, // option_def_space + S_option_def_encapsulate = 513, // option_def_encapsulate + S_514_81 = 514, // $@81 + S_option_def_array = 515, // option_def_array + S_option_data_list = 516, // option_data_list + S_517_82 = 517, // $@82 + S_option_data_list_content = 518, // option_data_list_content + S_not_empty_option_data_list = 519, // not_empty_option_data_list + S_option_data_entry = 520, // option_data_entry + S_521_83 = 521, // $@83 + S_sub_option_data = 522, // sub_option_data + S_523_84 = 523, // $@84 + S_option_data_params = 524, // option_data_params + S_not_empty_option_data_params = 525, // not_empty_option_data_params + S_option_data_param = 526, // option_data_param + S_option_data_name = 527, // option_data_name + S_option_data_data = 528, // option_data_data + S_529_85 = 529, // $@85 + S_option_data_code = 530, // option_data_code + S_option_data_space = 531, // option_data_space + S_option_data_csv_format = 532, // option_data_csv_format + S_option_data_always_send = 533, // option_data_always_send + S_option_data_never_send = 534, // option_data_never_send + S_option_data_client_classes = 535, // option_data_client_classes + S_536_86 = 536, // $@86 + S_pools_list = 537, // pools_list + S_538_87 = 538, // $@87 + S_pools_list_content = 539, // pools_list_content + S_not_empty_pools_list = 540, // not_empty_pools_list + S_pool_list_entry = 541, // pool_list_entry + S_542_88 = 542, // $@88 + S_sub_pool6 = 543, // sub_pool6 + S_544_89 = 544, // $@89 + S_pool_params = 545, // pool_params + S_pool_param = 546, // pool_param + S_pool_entry = 547, // pool_entry + S_548_90 = 548, // $@90 + S_pool_id = 549, // pool_id + S_user_context = 550, // user_context + S_551_91 = 551, // $@91 + S_comment = 552, // comment + S_553_92 = 553, // $@92 + S_pd_pools_list = 554, // pd_pools_list + S_555_93 = 555, // $@93 + S_pd_pools_list_content = 556, // pd_pools_list_content + S_not_empty_pd_pools_list = 557, // not_empty_pd_pools_list + S_pd_pool_entry = 558, // pd_pool_entry + S_559_94 = 559, // $@94 + S_sub_pd_pool = 560, // sub_pd_pool + S_561_95 = 561, // $@95 + S_pd_pool_params = 562, // pd_pool_params + S_pd_pool_param = 563, // pd_pool_param + S_pd_prefix = 564, // pd_prefix + S_565_96 = 565, // $@96 + S_pd_prefix_len = 566, // pd_prefix_len + S_excluded_prefix = 567, // excluded_prefix + S_568_97 = 568, // $@97 + S_excluded_prefix_len = 569, // excluded_prefix_len + S_pd_delegated_len = 570, // pd_delegated_len + S_reservations = 571, // reservations + S_572_98 = 572, // $@98 + S_reservations_list = 573, // reservations_list + S_not_empty_reservations_list = 574, // not_empty_reservations_list + S_reservation = 575, // reservation + S_576_99 = 576, // $@99 + S_sub_reservation = 577, // sub_reservation + S_578_100 = 578, // $@100 + S_reservation_params = 579, // reservation_params + S_not_empty_reservation_params = 580, // not_empty_reservation_params + S_reservation_param = 581, // reservation_param + S_ip_addresses = 582, // ip_addresses + S_583_101 = 583, // $@101 + S_prefixes = 584, // prefixes + S_585_102 = 585, // $@102 + S_excluded_prefixes = 586, // excluded_prefixes + S_587_103 = 587, // $@103 + S_duid = 588, // duid + S_589_104 = 589, // $@104 + S_hw_address = 590, // hw_address + S_591_105 = 591, // $@105 + S_hostname = 592, // hostname + S_593_106 = 593, // $@106 + S_flex_id_value = 594, // flex_id_value + S_595_107 = 595, // $@107 + S_reservation_client_classes = 596, // reservation_client_classes + S_597_108 = 597, // $@108 + S_relay = 598, // relay + S_599_109 = 599, // $@109 + S_relay_map = 600, // relay_map + S_client_classes = 601, // client_classes + S_602_110 = 602, // $@110 + S_client_classes_list = 603, // client_classes_list + S_client_class_entry = 604, // client_class_entry + S_605_111 = 605, // $@111 + S_client_class_params = 606, // client_class_params + S_not_empty_client_class_params = 607, // not_empty_client_class_params + S_client_class_param = 608, // client_class_param + S_client_class_name = 609, // client_class_name + S_client_class_test = 610, // client_class_test + S_611_112 = 611, // $@112 + S_client_class_template_test = 612, // client_class_template_test + S_613_113 = 613, // $@113 + S_only_if_required = 614, // only_if_required + S_only_in_additional_list = 615, // only_in_additional_list + S_server_id = 616, // server_id + S_617_114 = 617, // $@114 + S_server_id_params = 618, // server_id_params + S_server_id_param = 619, // server_id_param + S_server_id_type = 620, // server_id_type + S_621_115 = 621, // $@115 + S_duid_type = 622, // duid_type + S_htype = 623, // htype + S_identifier = 624, // identifier + S_625_116 = 625, // $@116 + S_time = 626, // time + S_enterprise_id = 627, // enterprise_id + S_dhcp4o6_port = 628, // dhcp4o6_port + S_control_socket = 629, // control_socket + S_630_117 = 630, // $@117 + S_control_sockets = 631, // control_sockets + S_632_118 = 632, // $@118 + S_control_socket_list = 633, // control_socket_list + S_not_empty_control_socket_list = 634, // not_empty_control_socket_list + S_control_socket_entry = 635, // control_socket_entry + S_636_119 = 636, // $@119 + S_control_socket_params = 637, // control_socket_params + S_control_socket_param = 638, // control_socket_param + S_control_socket_type = 639, // control_socket_type + S_640_120 = 640, // $@120 + S_control_socket_type_value = 641, // control_socket_type_value + S_control_socket_name = 642, // control_socket_name + S_643_121 = 643, // $@121 + S_control_socket_address = 644, // control_socket_address + S_645_122 = 645, // $@122 + S_control_socket_port = 646, // control_socket_port + S_cert_required = 647, // cert_required + S_http_headers = 648, // http_headers + S_649_123 = 649, // $@123 + S_http_header_list = 650, // http_header_list + S_not_empty_http_header_list = 651, // not_empty_http_header_list + S_http_header = 652, // http_header + S_653_124 = 653, // $@124 + S_http_header_params = 654, // http_header_params + S_http_header_param = 655, // http_header_param + S_header_value = 656, // header_value + S_657_125 = 657, // $@125 + S_authentication = 658, // authentication + S_659_126 = 659, // $@126 + S_auth_params = 660, // auth_params + S_auth_param = 661, // auth_param + S_auth_type = 662, // auth_type + S_663_127 = 663, // $@127 + S_auth_type_value = 664, // auth_type_value + S_realm = 665, // realm + S_666_128 = 666, // $@128 + S_directory = 667, // directory + S_668_129 = 668, // $@129 + S_clients = 669, // clients + S_670_130 = 670, // $@130 + S_clients_list = 671, // clients_list + S_not_empty_clients_list = 672, // not_empty_clients_list + S_basic_auth = 673, // basic_auth + S_674_131 = 674, // $@131 + S_clients_params = 675, // clients_params + S_clients_param = 676, // clients_param + S_user_file = 677, // user_file + S_678_132 = 678, // $@132 + S_password_file = 679, // password_file + S_680_133 = 680, // $@133 + S_dhcp_queue_control = 681, // dhcp_queue_control + S_682_134 = 682, // $@134 + S_queue_control_params = 683, // queue_control_params + S_queue_control_param = 684, // queue_control_param + S_enable_queue = 685, // enable_queue + S_queue_type = 686, // queue_type + S_687_135 = 687, // $@135 + S_capacity = 688, // capacity + S_arbitrary_map_entry = 689, // arbitrary_map_entry + S_690_136 = 690, // $@136 + S_dhcp_ddns = 691, // dhcp_ddns + S_692_137 = 692, // $@137 + S_sub_dhcp_ddns = 693, // sub_dhcp_ddns + S_694_138 = 694, // $@138 + S_dhcp_ddns_params = 695, // dhcp_ddns_params + S_dhcp_ddns_param = 696, // dhcp_ddns_param + S_enable_updates = 697, // enable_updates + S_server_ip = 698, // server_ip + S_699_139 = 699, // $@139 + S_server_port = 700, // server_port + S_sender_ip = 701, // sender_ip + S_702_140 = 702, // $@140 + S_sender_port = 703, // sender_port + S_max_queue_size = 704, // max_queue_size + S_ncr_protocol = 705, // ncr_protocol + S_706_141 = 706, // $@141 + S_ncr_protocol_value = 707, // ncr_protocol_value + S_ncr_format = 708, // ncr_format + S_709_142 = 709, // $@142 + S_config_control = 710, // config_control + S_711_143 = 711, // $@143 + S_sub_config_control = 712, // sub_config_control + S_713_144 = 713, // $@144 + S_config_control_params = 714, // config_control_params + S_config_control_param = 715, // config_control_param + S_config_databases = 716, // config_databases + S_717_145 = 717, // $@145 + S_config_fetch_wait_time = 718, // config_fetch_wait_time + S_loggers = 719, // loggers + S_720_146 = 720, // $@146 + S_loggers_entries = 721, // loggers_entries + S_logger_entry = 722, // logger_entry + S_723_147 = 723, // $@147 + S_logger_params = 724, // logger_params + S_logger_param = 725, // logger_param + S_debuglevel = 726, // debuglevel + S_severity = 727, // severity + S_728_148 = 728, // $@148 + S_output_options_list = 729, // output_options_list + S_730_149 = 730, // $@149 + S_output_options_list_content = 731, // output_options_list_content + S_output_entry = 732, // output_entry + S_733_150 = 733, // $@150 + S_output_params_list = 734, // output_params_list + S_output_params = 735, // output_params + S_output = 736, // output + S_737_151 = 737, // $@151 + S_flush = 738, // flush + S_maxsize = 739, // maxsize + S_maxver = 740, // maxver + S_pattern = 741, // pattern + S_742_152 = 742, // $@152 + S_compatibility = 743, // compatibility + S_744_153 = 744, // $@153 + S_compatibility_params = 745, // compatibility_params + S_compatibility_param = 746, // compatibility_param + S_lenient_option_parsing = 747 // lenient_option_parsing }; }; @@ -5154,6 +5157,21 @@ switch (yykind) return symbol_type (token::TOKEN_RESERVATIONS_LOOKUP_FIRST, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_ALLOW_ADDRESS_REGISTRATION (location_type l) + { + return symbol_type (token::TOKEN_ALLOW_ADDRESS_REGISTRATION, std::move (l)); + } +#else + static + symbol_type + make_ALLOW_ADDRESS_REGISTRATION (const location_type& l) + { + return symbol_type (token::TOKEN_ALLOW_ADDRESS_REGISTRATION, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -5919,8 +5937,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1787, ///< Last index in yytable_. - yynnts_ = 501, ///< Number of nonterminal symbols. + yylast_ = 1764, ///< Last index in yytable_. + yynnts_ = 502, ///< Number of nonterminal symbols. yyfinal_ = 30 ///< Termination state number. }; @@ -5989,10 +6007,11 @@ switch (yykind) 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244 + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245 }; // Last valid token kind. - const int code_max = 499; + const int code_max = 500; if (t <= 0) return symbol_kind::S_YYEOF; @@ -6167,7 +6186,7 @@ switch (yykind) #line 14 "dhcp6_parser.yy" } } // isc::dhcp -#line 6171 "dhcp6_parser.h" +#line 6190 "dhcp6_parser.h" diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 7ae7c099df..00710d736d 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -280,6 +280,7 @@ using namespace std; EARLY_GLOBAL_RESERVATIONS_LOOKUP "early-global-reservations-lookup" IP_RESERVATIONS_UNIQUE "ip-reservations-unique" RESERVATIONS_LOOKUP_FIRST "reservations-lookup-first" + ALLOW_ADDRESS_REGISTRATION "allow-address-registration" LOGGERS "loggers" OUTPUT_OPTIONS "output-options" @@ -593,6 +594,7 @@ global_param: data_directory | early_global_reservations_lookup | ip_reservations_unique | reservations_lookup_first + | allow_address_registration | compatibility | parked_packet_limit | allocator @@ -916,6 +918,12 @@ reservations_lookup_first: RESERVATIONS_LOOKUP_FIRST COLON BOOLEAN { ctx.stack_.back()->set("reservations-lookup-first", first); }; +allow_address_registration: ALLOW_ADDRESS_REGISTRATION COLON BOOLEAN { + ctx.unique("allow-address-registration", ctx.loc2pos(@1)); + ElementPtr first(new BoolElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("allow-address-registration", first); +}; + interfaces_config: INTERFACES_CONFIG { ctx.unique("interfaces-config", ctx.loc2pos(@1)); ElementPtr i(new MapElement(ctx.loc2pos(@1))); diff --git a/src/bin/dhcp6/dhcp6_srv.cc b/src/bin/dhcp6/dhcp6_srv.cc index 3f32b8ab97..0e063a534f 100644 --- a/src/bin/dhcp6/dhcp6_srv.cc +++ b/src/bin/dhcp6/dhcp6_srv.cc @@ -4558,7 +4558,6 @@ Dhcpv6Srv::processDhcp4Query(const Pkt6Ptr& dhcp4_query) { Pkt6Ptr Dhcpv6Srv::processAddrRegInform(AllocEngine::ClientContext6& ctx) { - ConstSubnetPtr subnet = ctx.subnet_; // Silently ignore message which can't be localized if (!subnet) { @@ -4567,6 +4566,19 @@ Dhcpv6Srv::processAddrRegInform(AllocEngine::ClientContext6& ctx) { Pkt6Ptr addr_reg_inf = ctx.query_; + // Get the allow-address-resgistration flag value. + // If it's false, punt. + auto allow_address_registration = CfgMgr::instance().getCurrentCfg()-> + getConfiguredGlobal(CfgGlobals::ALLOW_ADDRESS_REGISTRATION); + + if (allow_address_registration && !allow_address_registration->boolValue()) { + LOG_DEBUG(packet6_logger, DBG_DHCP6_BASIC, DHCP6_ADDR6_REGISTER_DISABLED_DROP) + .arg(addr_reg_inf->getLabel()); + StatsMgr::instance().addValue("pkt6-receive-drop", + static_cast(1)); + return(Pkt6Ptr()); + } + // Get the client source address. IOAddress addr = addr_reg_inf->getRemoteAddr(); // If there are some relays get the peer address of the closest relay diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index e8d85e50fb..75ad895762 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -799,6 +799,7 @@ processDhcp6Config(isc::data::ConstElementPtr config_set) { (config_pair.first == "early-global-reservations-lookup") || (config_pair.first == "ip-reservations-unique") || (config_pair.first == "reservations-lookup-first") || + (config_pair.first == "allow-address-registration") || (config_pair.first == "parked-packet-limit") || (config_pair.first == "allocator") || (config_pair.first == "ddns-ttl") || diff --git a/src/bin/dhcp6/tests/addr_reg_unittest.cc b/src/bin/dhcp6/tests/addr_reg_unittest.cc index 9b08088171..f7b0f5a5bb 100644 --- a/src/bin/dhcp6/tests/addr_reg_unittest.cc +++ b/src/bin/dhcp6/tests/addr_reg_unittest.cc @@ -1861,4 +1861,100 @@ TEST_F(AddrRegTest, clientRenew) { EXPECT_EQ(1, countFile(expected)); } +// Test the global allow-address-registration = false; +TEST_F(AddrRegTest, allowAddressRegistrationFalse) { + IfaceMgrTestConfig test_config(true); + + /// @brief Basic configuration. + string config = "{\n" + "\"interfaces-config\": { \"interfaces\": [ \"*\" ] },\n" + "\"valid-lifetime\": 4000,\n" + "\"preferred-lifetime\": 3000,\n" + "\"rebind-timer\": 2000,\n" + "\"renew-timer\": 1000,\n" + "\"subnet6\": [ {\n" + " \"id\": 1,\n" + " \"subnet\": \"2001:db8:1::/64\",\n" + " \"interface\": \"eth0\"\n" + "} ],\n" + "\"reservations\": [ {\n" + " \"duid\": \"01:02:03:04:05:0A:0B:0C:0D:0E\",\n" + " \"ip-addresses\": [ \"2001:db8:1::10\" ]\n" + "} ],\n" + "\"option-data\": [ {\n" + " \"name\": \"dns-servers\",\n" + " \"data\": \"2001:db8:1::45, 2001:db8:1::100\"\n" + "} ],\n" + "\"dhcp-ddns\": { \"enable-updates\": true },\n" + "\"ddns-qualifying-suffix\": \"example.com\",\n" + "\"ddns-update-on-renew\": false\n," + "\"allow-address-registration\" : false\n" + "}\n"; + + ASSERT_NO_THROW(configure(config)); + + IOAddress addr("2001:db8:1::1"); + addr_reg_inf_ = Pkt6Ptr(new Pkt6(DHCPV6_ADDR_REG_INFORM, 1234)); + addr_reg_inf_->setRemoteAddr(addr); + addr_reg_inf_->setIface("eth0"); + addr_reg_inf_->setIndex(ETH0_INDEX); + OptionPtr clientid = generateClientId(); + addr_reg_inf_->addOption(clientid); + addr_reg_inf_->addOption(generateIAAddr(addr, 3000, 4000)); + + // Pass it to the server. + AllocEngine::ClientContext6 ctx; + bool drop = !srv_->earlyGHRLookup(addr_reg_inf_, ctx); + ASSERT_FALSE(drop); + ctx.subnet_ = srv_->selectSubnet(addr_reg_inf_, drop); + ASSERT_FALSE(drop); + srv_->initContext(ctx, drop); + ASSERT_FALSE(drop); + ASSERT_TRUE(ctx.subnet_); + + // Verify no response. + ASSERT_FALSE(srv_->processAddrRegInform(ctx)); + + // Drop stat should have been bumped by one and the log emitted. + ObservationPtr stat; + stat = StatsMgr::instance().getObservation("pkt6-receive-drop"); + ASSERT_TRUE(stat); + EXPECT_EQ(1, stat->getInteger().first); + EXPECT_EQ(1, countFile("DHCP6_ADDR6_REGISTER_DISABLED_DROP ADDR-REG-INFORM")); +} + +// Test the global allow-address-registration = true; +TEST_F(AddrRegTest, allowAddressRegistrationTrue) { + IfaceMgrTestConfig test_config(true); + + /// @brief Basic configuration. + string config = "{\n" + "\"interfaces-config\": { \"interfaces\": [ \"*\" ] },\n" + "\"valid-lifetime\": 4000,\n" + "\"preferred-lifetime\": 3000,\n" + "\"rebind-timer\": 2000,\n" + "\"renew-timer\": 1000,\n" + "\"subnet6\": [ {\n" + " \"id\": 1,\n" + " \"subnet\": \"2001:db8:1::/64\",\n" + " \"interface\": \"eth0\"\n" + "} ],\n" + "\"reservations\": [ {\n" + " \"duid\": \"01:02:03:04:05:0A:0B:0C:0D:0E\",\n" + " \"ip-addresses\": [ \"2001:db8:1::10\" ]\n" + "} ],\n" + "\"option-data\": [ {\n" + " \"name\": \"dns-servers\",\n" + " \"data\": \"2001:db8:1::45, 2001:db8:1::100\"\n" + "} ],\n" + "\"dhcp-ddns\": { \"enable-updates\": true },\n" + "\"ddns-qualifying-suffix\": \"example.com\",\n" + "\"ddns-update-on-renew\": false\n," + "\"allow-address-registration\" : true\n" + "}\n"; + + ASSERT_NO_THROW(configure(config)); + testBasic(); +} + } // end of anonymous namespace diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc index c3dfa1fb32..2bc46be15b 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc +++ b/src/bin/dhcp6/tests/get_config_unittest.cc @@ -2780,6 +2780,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 0 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -2898,6 +2899,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 1 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -3016,6 +3018,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 2 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -3107,6 +3110,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 3 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -3235,6 +3239,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 4 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -3455,6 +3460,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 5 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -3675,6 +3681,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 6 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"compatibility\": {\n" @@ -3802,6 +3809,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 7 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -3930,6 +3938,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 8 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4055,6 +4064,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 9 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4180,6 +4190,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 10 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4344,6 +4355,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 11 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4468,6 +4480,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 12 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4594,6 +4607,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 13 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4722,6 +4736,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 14 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4865,6 +4880,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 15 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -4991,6 +5007,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 16 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5089,6 +5106,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 17 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5187,6 +5205,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 18 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5294,6 +5313,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 19 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5392,6 +5412,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 20 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5490,6 +5511,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 21 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5588,6 +5610,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 22 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5686,6 +5709,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 23 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5829,6 +5853,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 24 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -5972,6 +5997,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 25 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -6125,6 +6151,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 26 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -6254,6 +6281,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 27 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -6434,6 +6462,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 28 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -6587,6 +6616,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 29 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -6763,6 +6793,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 30 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -6906,6 +6937,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 31 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7087,6 +7119,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 32 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7228,6 +7261,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 33 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7372,6 +7406,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 34 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7463,6 +7498,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 35 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7554,6 +7590,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 36 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7678,6 +7715,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 37 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -7802,6 +7840,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 38 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8025,6 +8064,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 39 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8164,6 +8204,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 40 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8311,6 +8352,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 41 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8435,6 +8477,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 42 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8704,6 +8747,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 43 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8852,6 +8896,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 44 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -8943,6 +8988,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 45 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9034,6 +9080,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 46 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9366,6 +9413,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 47 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9525,6 +9573,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 48 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9613,6 +9662,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 49 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9704,6 +9754,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 50 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9792,6 +9843,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 51 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9880,6 +9932,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 52 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -9968,6 +10021,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 53 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -10106,6 +10160,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 54 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -10235,6 +10290,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 55 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -10366,6 +10422,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 56 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -10490,6 +10547,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 57 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -10615,6 +10673,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 58 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -10745,6 +10804,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 59 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -10875,6 +10935,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 60 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -11005,6 +11066,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 61 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -11131,6 +11193,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 62 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -11258,6 +11321,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 63 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -11390,6 +11454,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 64 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -11496,6 +11561,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 65 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -11777,6 +11843,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 66 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12011,6 +12078,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 67 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12213,6 +12281,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 68 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12369,6 +12438,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 69 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12525,6 +12595,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 70 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12616,6 +12687,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 71 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12704,6 +12776,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 72 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -12792,6 +12865,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 73 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -12924,6 +12998,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 74 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -13058,6 +13133,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 75 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"no-check-with-dhcid\",\n" @@ -13298,6 +13374,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 76 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -13545,6 +13622,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 77 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -13646,6 +13724,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 78 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -13798,6 +13877,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 79 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"client-classes\": [\n" @@ -13895,6 +13975,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 80 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -14047,6 +14128,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 81 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -14180,6 +14262,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 82 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -14313,6 +14396,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 83 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -14446,6 +14530,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 84 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" @@ -14579,6 +14664,7 @@ const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 85 "{\n" " \"allocator\": \"iterative\",\n" +" \"allow-address-registration\": true,\n" " \"cache-threshold\": 0.25,\n" " \"calculate-tee-times\": true,\n" " \"ddns-conflict-resolution-mode\": \"check-with-dhcid\",\n" diff --git a/src/bin/dhcp6/tests/http_control_socket_unittest.cc b/src/bin/dhcp6/tests/http_control_socket_unittest.cc index 51494b6281..79222900d4 100644 --- a/src/bin/dhcp6/tests/http_control_socket_unittest.cc +++ b/src/bin/dhcp6/tests/http_control_socket_unittest.cc @@ -1154,7 +1154,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, configSet) { // Send the config-set command std::string response; sendHttpCommand(os.str(), response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"7B1A2256CDB80F66DEBFC9C86D1210717A1F2DB45BEF532C30865FD50ECCDC3D\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"A95D95F0532DF3D85D8651759DDB468108D53B7AB754B0487D0918F7DC1BEEEF\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. @@ -1218,7 +1218,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, configSet) { EXPECT_FALSE(HttpCommandMgr::instance().getHttpListener()); // With no command channel, should still receive the response. - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"05CE8F8C853EFA5C87A4C90E104133FBE534A0B9E08AC047600CC5F34C06A61B\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"BB18A666AD6F3C4D6598F70F53A625A39F65568F3213C7C9940F978055E27042\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was not lost @@ -1324,7 +1324,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, configSetLFCRunning) { // Send the config-set command std::string response; sendHttpCommand(os.str(), response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"7B1A2256CDB80F66DEBFC9C86D1210717A1F2DB45BEF532C30865FD50ECCDC3D\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"A95D95F0532DF3D85D8651759DDB468108D53B7AB754B0487D0918F7DC1BEEEF\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. @@ -1553,7 +1553,7 @@ TEST_F(HttpsCtrlChannelDhcpv6Test, configSet) { EXPECT_FALSE(HttpCommandMgr::instance().getHttpListener()); // With no command channel, should still receive the response. - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"05CE8F8C853EFA5C87A4C90E104133FBE534A0B9E08AC047600CC5F34C06A61B\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"BB18A666AD6F3C4D6598F70F53A625A39F65568F3213C7C9940F978055E27042\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was not lost @@ -1869,7 +1869,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, configTest) { std::string response; sendHttpCommand(os.str(), response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"4DC395744F9024B3ABD67F88835CC0BCD7D772B39B679116B0503006329C6330\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"91F82A4C6EC4ECA81490C383DF4798852F4C2A173989E1DB41AD1B1CDEF600C7\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. @@ -2939,7 +2939,7 @@ BaseCtrlChannelDhcpv6Test::testConfigReloadValid() { // This command should reload test8.json config. sendHttpCommand("{ \"command\": \"config-reload\" }", response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"CBED4A3135FB363DFB30E71D09129BC9341B0A0A71BD3BED5F96D9AE4CF41652\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"AC3B67A5094CD2EE4E8FE46F56317B00492FCC74F6BA9F7287BAD48BF5446878\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. @@ -3018,7 +3018,7 @@ BaseCtrlChannelDhcpv6Test::testConfigReloadDetectInterfaces() { // This command should reload test8.json config. sendHttpCommand("{ \"command\": \"config-reload\" }", response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"FF82DF6BF9126943E5A3CFA7685A06A7E1181382D7AC0C5927916D752F94A54D\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"6351DAADDD872C0B0717A5637B493E395B5C70DD0418F74F7425E69CEAD71AE2\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. @@ -4017,7 +4017,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, noListenerChange) { // Send the config-set command std::string response; sendHttpCommand(os.str(), response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"7B1A2256CDB80F66DEBFC9C86D1210717A1F2DB45BEF532C30865FD50ECCDC3D\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"A95D95F0532DF3D85D8651759DDB468108D53B7AB754B0487D0918F7DC1BEEEF\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. @@ -4041,7 +4041,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, noListenerChange) { EXPECT_EQ(listener, HttpCommandMgr::instance().getHttpListener().get()); ASSERT_FALSE(HttpCommandMgr::instance().getHttpListener()->getTlsContext()); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"7B1A2256CDB80F66DEBFC9C86D1210717A1F2DB45BEF532C30865FD50ECCDC3D\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"A95D95F0532DF3D85D8651759DDB468108D53B7AB754B0487D0918F7DC1BEEEF\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was not lost @@ -4284,7 +4284,7 @@ TEST_F(HttpCtrlChannelDhcpv6Test, handleHttpToHttpsSwitch) { // Send the config-set command std::string response; sendHttpCommand(os.str(), response); - EXPECT_EQ("[ { \"arguments\": { \"hash\": \"7B1A2256CDB80F66DEBFC9C86D1210717A1F2DB45BEF532C30865FD50ECCDC3D\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", + EXPECT_EQ("[ { \"arguments\": { \"hash\": \"A95D95F0532DF3D85D8651759DDB468108D53B7AB754B0487D0918F7DC1BEEEF\" }, \"result\": 0, \"text\": \"Configuration successful.\" } ]", response); // Check that the config was indeed applied. diff --git a/src/lib/dhcpsrv/cfg_globals.cc b/src/lib/dhcpsrv/cfg_globals.cc index c38be5ca8f..a3251281cf 100644 --- a/src/lib/dhcpsrv/cfg_globals.cc +++ b/src/lib/dhcpsrv/cfg_globals.cc @@ -79,7 +79,8 @@ CfgGlobals::nameToIndex = { { "min-preferred-lifetime", MIN_PREFERRED_LIFETIME }, { "max-preferred-lifetime", MAX_PREFERRED_LIFETIME }, { "pd-allocator", PD_ALLOCATOR }, - { "server-id", SERVER_ID } + { "server-id", SERVER_ID }, + { "allow-address-registration", ALLOW_ADDRESS_REGISTRATION }, }; // Load time sanity check. diff --git a/src/lib/dhcpsrv/cfg_globals.h b/src/lib/dhcpsrv/cfg_globals.h index 88d587037f..01f56fc02c 100644 --- a/src/lib/dhcpsrv/cfg_globals.h +++ b/src/lib/dhcpsrv/cfg_globals.h @@ -103,6 +103,7 @@ public: MAX_PREFERRED_LIFETIME, PD_ALLOCATOR, SERVER_ID, + ALLOW_ADDRESS_REGISTRATION, // Size sentinel. SIZE diff --git a/src/lib/dhcpsrv/parsers/simple_parser6.cc b/src/lib/dhcpsrv/parsers/simple_parser6.cc index 02a0ad593f..2c113c8fed 100644 --- a/src/lib/dhcpsrv/parsers/simple_parser6.cc +++ b/src/lib/dhcpsrv/parsers/simple_parser6.cc @@ -104,6 +104,7 @@ const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = { { "ddns-ttl-min", Element::integer }, { "ddns-ttl-max", Element::integer }, { "adaptive-lease-time-threshold", Element::real }, + { "allow-address-registration", Element::boolean }, }; /// @brief This table defines default global values for DHCPv6 @@ -143,6 +144,7 @@ const SimpleDefaults SimpleParser6::GLOBAL6_DEFAULTS = { { "pd-allocator", Element::string, "iterative" }, { "ddns-conflict-resolution-mode", Element::string, "check-with-dhcid" }, { "cache-threshold", Element::real, "0.25" }, + { "allow-address-registration", Element::boolean, "true"}, }; const SimpleKeywords SimpleParser6::GLOBAL6_LIST_PARAMETERS = { diff --git a/src/lib/eval/lexer.cc b/src/lib/eval/lexer.cc index 729662fa63..6fcdd32c59 100644 --- a/src/lib/eval/lexer.cc +++ b/src/lib/eval/lexer.cc @@ -1,6 +1,6 @@ -#line 1 "lexer.cc" +#line 2 "lexer.cc" -#line 3 "lexer.cc" +#line 4 "lexer.cc" #define YY_INT_ALIGNED short int @@ -1055,7 +1055,7 @@ namespace { /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg) -#line 1058 "lexer.cc" +#line 1059 "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 @@ -1080,8 +1080,8 @@ namespace { by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION loc.columns(evalleng); -#line 1083 "lexer.cc" #line 1084 "lexer.cc" +#line 1085 "lexer.cc" #define INITIAL 0 @@ -1380,7 +1380,7 @@ YY_DECL -#line 1383 "lexer.cc" +#line 1384 "lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1889,7 +1889,7 @@ YY_RULE_SETUP #line 251 "lexer.ll" ECHO; YY_BREAK -#line 1892 "lexer.cc" +#line 1893 "lexer.cc" case YY_END_OF_BUFFER: {