diff --git a/ChangeLog b/ChangeLog index 34fcd8e71b..87b067d0bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2046. [func] marcin + New database connection parameters, "read-timeout" and + "write-timeout", control the timeouts in communication with the + MySQL database. The "tcp-user-timeout" controls the timeout in + communication with the PostgreSQL database. Setting these + timeouts can prevent occasional Kea hangs due to issues with + the database connectivity. + (Gitlab #2688) + Kea 2.2.0 (stable) released on July 27, 2022 2045. [build] tmark diff --git a/doc/examples/kea4/all-keys.json b/doc/examples/kea4/all-keys.json index 3b3b722b4e..7946a73e6a 100644 --- a/doc/examples/kea4/all-keys.json +++ b/doc/examples/kea4/all-keys.json @@ -349,7 +349,11 @@ "type": "postgresql", // User name to be used to access the database. - "user": "keatest" + "user": "keatest", + + // TCP user timeout while communicating with the database. + // It is specified in seconds. + "tcp-user-timeout": 100 }, { // Name of the database to connect to. @@ -381,8 +385,14 @@ // serve-retry-continue "on-fail": "stop-retry-exit", - // Connection connect timeout. - "connect-timeout": 100 + // Connection connect timeout in seconds. + "connect-timeout": 100, + + // Data read from the database timeout in seconds. + "read-timeout": 120, + + // Data write to the database timeout in seconds. + "write-timeout": 180 } ], diff --git a/doc/examples/kea6/all-keys.json b/doc/examples/kea6/all-keys.json index c9e251210d..ba3c66f828 100644 --- a/doc/examples/kea6/all-keys.json +++ b/doc/examples/kea6/all-keys.json @@ -308,7 +308,11 @@ "type": "postgresql", // User name to be used to access the database. - "user": "keatest" + "user": "keatest", + + // TCP user timeout while communicating with the database. + // It is specified in seconds. + "tcp-user-timeout": 100 }, { // Name of the database to connect to. @@ -340,8 +344,14 @@ // serve-retry-continue "on-fail": "stop-retry-exit", - // Connection connect timeout. - "connect-timeout": 100 + // Connection connect timeout in seconds. + "connect-timeout": 100, + + // Data read from the database timeout in seconds. + "read-timeout": 120, + + // Data write to the database timeout in seconds. + "write-timeout": 180 } ], diff --git a/doc/sphinx/arm/dhcp4-srv.rst b/doc/sphinx/arm/dhcp4-srv.rst index 534c18e4f7..91c55687b4 100644 --- a/doc/sphinx/arm/dhcp4-srv.rst +++ b/doc/sphinx/arm/dhcp4-srv.rst @@ -548,6 +548,57 @@ access the database should be set: If there is no password to the account, set the password to the empty string ``""``. (This is the default.) +.. _tuning-database-timeouts4: + +Tuning Database Timeouts +~~~~~~~~~~~~~~~~~~~~~~~~ + +In rare cases, reading or writing to the database may hang. It can be +caused by a temporary network issue or misconfiguration of the proxy +server switching the connection between different database instances. +These situations are rare, but we have received reports from the users +that Kea can sometimes hang while performing the database IO operations. +Setting appropriate timeout values can mitigate such issues. + +MySQL exposes two distinct connection options to configure the read and +write timeouts. Kea's corresponding ``read-timeout`` and ``write-timeout`` +configuration parameters specify the timeouts in seconds. For example: + +:: + + "Dhcp4": { "lease-database": { "read-timeout" : 10, "write-timeout": 20, ... }, ... } + + +Setting these parameters to 0 is equivalent to not specifying them and +causes the Kea server to establish a connection to the database with the +MySQL defaults. In this case, Kea waits infinitely for the completion of +the read and write operations. + +MySQL versions earlier than 5.6 do not support setting timeouts for the +read and write operations. Moreover, the ``read-timeout`` and ``write-timeout`` +parameters can only be specified for the MySQL backend. Setting them for +any other backend type causes a configuration error. + +Use the ``tcp-user-timeout`` parameter to set a timeout for PostgreSQL +in seconds. For example: + +:: + + "Dhcp4": { "lease-database": { "tcp-user-timeout" : 10, ... }, ... } + + +Specifying this parameter for other backend types causes a configuration +error. + +.. note:: + + The timeouts described here are only effective for TCP connections. + Please note that the MySQL client library used by the Kea servers + typically connects to the database via a UNIX domain socket when the + ``host`` parameter is ``localhost`` but establishes a TCP connection + for ``127.0.0.1``. + + .. _hosts4-storage: Hosts Storage @@ -763,6 +814,12 @@ the parameter is not specified. The ``readonly`` parameter is only supported for MySQL and PostgreSQL databases. + +Tuning Database Timeouts for Hosts Storage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +See :ref:`tuning-database-timeouts4`. + .. _dhcp4-interface-configuration: Interface Configuration diff --git a/doc/sphinx/arm/dhcp6-srv.rst b/doc/sphinx/arm/dhcp6-srv.rst index 1009a6ee2d..18a3892e0e 100644 --- a/doc/sphinx/arm/dhcp6-srv.rst +++ b/doc/sphinx/arm/dhcp6-srv.rst @@ -505,6 +505,57 @@ access the database should be set: If there is no password to the account, set the password to the empty string ``""``. (This is the default.) +.. _tuning-database-timeouts6: + +Tuning Database Timeouts +~~~~~~~~~~~~~~~~~~~~~~~~ + +In rare cases, reading or writing to the database may hang. It can be +caused by a temporary network issue or misconfiguration of the proxy +server switching the connection between different database instances. +These situations are rare, but we have received reports from the users +that Kea can sometimes hang while performing the database IO operations. +Setting appropriate timeout values can mitigate such issues. + +MySQL exposes two distinct connection options to configure the read and +write timeouts. Kea's corresponding ``read-timeout`` and ``write-timeout`` +configuration parameters specify the timeouts in seconds. For example: + +:: + + "Dhcp6": { "lease-database": { "read-timeout" : 10, "write-timeout": 20, ... }, ... } + + +Setting these parameters to 0 is equivalent to not specifying them and +causes the Kea server to establish a connection to the database with the +MySQL defaults. In this case, Kea waits infinitely for the completion of +the read and write operations. + +MySQL versions earlier than 5.6 do not support setting timeouts for the +read and write operations. Moreover, the ``read-timeout`` and ``write-timeout`` +parameters can only be specified for the MySQL backend. Setting them for +any other backend type causes a configuration error. + +Use the ``tcp-user-timeout`` parameter to set a timeout for PostgreSQL +in seconds. For example: + +:: + + "Dhcp6": { "lease-database": { "tcp-user-timeout" : 10, ... }, ... } + + +Specifying this parameter for other backend types causes a configuration +error. + +.. note:: + + The timeouts described here are only effective for TCP connections. + Please note that the MySQL client library used by the Kea servers + typically connects to the database via a UNIX domain socket when the + ``host`` parameter is ``localhost`` but establishes a TCP connection + for ``127.0.0.1``. + + .. _hosts6-storage: Hosts Storage @@ -720,6 +771,13 @@ the parameter is not specified. The ``readonly`` parameter is only supported for MySQL and PostgreSQL databases. + +Tuning Database Timeouts for Hosts Storage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +See :ref:`tuning-database-timeouts6`. + + .. _dhcp6-interface-configuration: Interface Configuration diff --git a/src/bin/agent/tests/parser_unittests.cc b/src/bin/agent/tests/parser_unittests.cc index 2b35ac62c0..d129291beb 100644 --- a/src/bin/agent/tests/parser_unittests.cc +++ b/src/bin/agent/tests/parser_unittests.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,11 @@ namespace test { void compareJSON(ConstElementPtr a, ConstElementPtr b) { ASSERT_TRUE(a); ASSERT_TRUE(b); - EXPECT_EQ(a->str(), b->str()); + EXPECT_EQ(a->str(), b->str()) +#ifdef HAVE_CREATE_UNIFIED_DIFF + << "\nDiff:\n" << generateDiff(prettyPrint(a), prettyPrint(b)) << "\n" +#endif + ; } /// @brief Tests if the input string can be parsed with specific parser diff --git a/src/bin/d2/tests/parser_unittest.cc b/src/bin/d2/tests/parser_unittest.cc index 910051172a..4635a3bf97 100644 --- a/src/bin/d2/tests/parser_unittest.cc +++ b/src/bin/d2/tests/parser_unittest.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -38,7 +39,11 @@ namespace test { void compareJSON(ConstElementPtr a, ConstElementPtr b) { ASSERT_TRUE(a); ASSERT_TRUE(b); - EXPECT_EQ(a->str(), b->str()); + EXPECT_EQ(a->str(), b->str()) +#ifdef HAVE_CREATE_UNIFIED_DIFF + << "\nDiff:\n" << generateDiff(prettyPrint(a), prettyPrint(b)) << "\n" +#endif + ; } /// @brief Tests if the input string can be parsed with specific parser diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 4190ba2a66..47620c50e5 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 214 -#define YY_END_OF_BUFFER 215 +#define YY_NUM_RULES 217 +#define YY_END_OF_BUFFER 218 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,234 +700,239 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[2061] = +static const flex_int16_t yy_accept[2100] = { 0, - 207, 207, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 213, 10, 11, 213, 1, 207, 204, 207, 207, - 213, 206, 205, 213, 213, 213, 213, 213, 200, 201, - 213, 213, 213, 202, 203, 5, 5, 5, 213, 213, - 213, 10, 11, 0, 0, 195, 0, 0, 0, 0, + 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, + 218, 216, 10, 11, 216, 1, 210, 207, 210, 210, + 216, 209, 208, 216, 216, 216, 216, 216, 203, 204, + 216, 216, 216, 205, 206, 5, 5, 5, 216, 216, + 216, 10, 11, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 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, 207, 207, - 0, 206, 207, 3, 2, 6, 0, 207, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 196, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 210, + 210, 0, 209, 210, 3, 2, 6, 0, 210, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 9, 0, + 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 197, 199, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 200, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 212, 210, - 0, 209, 208, 0, 0, 0, 0, 0, 0, 0, - 173, 0, 172, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 213, 0, 212, 211, 0, 0, + 0, 0, 0, 0, 0, 176, 0, 175, 0, 0, + 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 211, 208, 0, - 0, 0, 0, 0, 0, 174, 0, 176, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 98, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 214, 211, 0, 0, 0, 0, + 0, 0, 177, 0, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 86, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 34, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 12, 178, 177, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, + 0, 0, 34, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 12, 181, 180, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, + 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, + 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 136, 105, 0, 0, 0, 0, 0, - 0, 110, 35, 0, 0, 0, 0, 0, 46, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108, 0, 0, 0, 0, 0, 0, 113, 35, 0, + 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 115, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, - - 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 161, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, + 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 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, 121, 22, 0, 132, 0, 0, 0, + 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, + 0, 130, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 165, 0, 0, 0, 0, 77, 0, 0, 0, - 0, 0, 0, 135, 0, 37, 0, 154, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 81, 0, 0, 0, 0, 0, 55, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 124, 22, + 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, + 0, 80, 0, 0, 0, 0, 0, 0, 138, 0, + 37, 0, 157, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, + 0, 0, 0, 0, 0, 0, 104, 105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 0, 78, 92, + 0, 0, 0, 0, 190, 0, 81, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 59, 0, 0, 0, 0, 0, 0, 162, 0, - 0, 160, 0, 0, 151, 150, 0, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 175, 0, 0, - 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 165, 0, 0, + 163, 0, 0, 154, 153, 0, 0, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 178, 0, + 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 144, 0, 0, 0, 153, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 133, 0, 15, 0, - 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, - 60, 0, 0, 128, 0, 0, 0, 119, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 84, 0, 181, 0, 0, 186, 0, 104, - 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, + 0, 0, 147, 0, 0, 0, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 136, 0, 15, + 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 63, 0, 0, 131, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 55, 0, 87, 0, 0, 184, 0, + 0, 189, 0, 107, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 114, - 30, 0, 0, 0, 149, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 184, 0, 157, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - - 0, 0, 27, 0, 0, 163, 0, 0, 0, 51, - 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + + 0, 0, 192, 0, 0, 117, 30, 0, 0, 0, + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 0, 160, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 27, 0, + 0, 166, 0, 0, 0, 54, 0, 0, 0, 0, + 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 103, 0, 0, 0, 44, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, + 0, 106, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, - 29, 0, 0, 0, 185, 0, 0, 0, 0, 0, - 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, - - 188, 0, 76, 0, 47, 0, 0, 0, 182, 180, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 169, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 0, 0, 0, 0, 0, 48, 0, - 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 170, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 148, 0, 158, 0, 0, + 0, 0, 0, 137, 0, 0, 0, 29, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 0, 191, 0, 79, + 0, 50, 0, 0, 0, 0, 185, 183, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 141, 0, 58, 57, 19, 0, 166, 0, + 0, 16, 0, 0, 0, 0, 172, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, - 0, 0, 0, 0, 50, 0, 63, 0, 45, 168, - 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, - 75, 0, 0, 0, 0, 0, 0, 0, 72, 0, + 92, 0, 0, 0, 0, 0, 51, 0, 0, 0, + 0, 47, 150, 0, 0, 0, 0, 0, 0, 0, + 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 151, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 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, 0, 0, 0, 0, 32, 0, - 0, 71, 0, 0, 0, 0, 146, 0, 0, 0, - 0, 191, 194, 167, 0, 115, 96, 0, 0, 0, - 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, - 0, 143, 0, 69, 0, 61, 0, 0, 0, 0, - - 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 137, 0, 0, 171, 192, 0, 0, 0, 0, 0, + 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 144, 0, 61, 60, 19, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 0, 26, 24, 0, 0, 0, - 73, 0, 0, 99, 0, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 0, 139, 25, 190, 0 + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 53, 0, 66, 0, 48, 171, 0, + 98, 0, 0, 0, 0, 0, 0, 0, 0, 78, + 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, + 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 74, 0, 0, 0, 0, 149, 0, 0, 0, 0, + + 194, 197, 170, 0, 118, 99, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, + 146, 0, 72, 0, 64, 0, 0, 0, 0, 0, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 140, + 0, 0, 174, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 0, 0, 26, 24, 0, 0, 0, 76, + 0, 0, 102, 0, 68, 0, 0, 0, 0, 0, + 0, 0, 0, 67, 0, 142, 25, 193, 0 + } ; static const YY_CHAR yy_ec[256] = @@ -974,486 +979,496 @@ static const YY_CHAR yy_meta[74] = 1, 1, 1 } ; -static const flex_int16_t yy_base[2069] = +static const flex_int16_t yy_base[2108] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2447, 2448, 34, 2443, 145, 0, 207, 2448, 214, 221, - 13, 228, 2448, 2423, 118, 25, 2, 6, 2448, 2448, - 73, 11, 17, 2448, 2448, 2448, 104, 2431, 2384, 0, - 2421, 108, 2438, 24, 262, 2448, 2380, 67, 2386, 84, - 75, 88, 224, 91, 89, 290, 220, 2378, 206, 285, - 236, 204, 197, 60, 232, 2387, 247, 294, 315, 307, - 286, 2370, 212, 325, 354, 328, 2389, 0, 366, 382, - 397, 411, 404, 2448, 0, 2448, 419, 425, 249, 319, - 238, 331, 399, 329, 2448, 2386, 2427, 2448, 404, 2448, - - 438, 2414, 405, 2383, 415, 10, 409, 311, 411, 418, - 428, 2424, 0, 499, 418, 2366, 2363, 2367, 402, 2363, - 80, 2371, 216, 2357, 2358, 2363, 78, 2373, 2356, 2365, - 2355, 2364, 221, 2355, 223, 2356, 2354, 400, 2402, 2406, - 2346, 2399, 2339, 174, 2360, 2360, 2354, 278, 2347, 2345, - 2346, 2338, 2343, 2337, 423, 2348, 346, 2333, 2332, 2346, - 405, 2332, 420, 355, 2326, 495, 407, 428, 2347, 2344, - 2345, 428, 2343, 2378, 2377, 2323, 2323, 433, 2324, 433, - 2316, 2333, 2325, 0, 446, 462, 471, 464, 476, 481, - 2324, 2448, 2369, 486, 2318, 466, 479, 485, 2372, 510, - - 2371, 502, 2370, 2448, 2448, 548, 2369, 521, 2328, 2320, - 2307, 2318, 2322, 2323, 2303, 2314, 2318, 2315, 2314, 478, - 518, 2352, 2316, 2297, 2294, 2302, 2297, 2311, 2307, 2298, - 2294, 2306, 2306, 2297, 2281, 2285, 2298, 2300, 2297, 2289, - 2279, 2297, 2448, 2292, 505, 2330, 2276, 2285, 2327, 2274, - 2284, 2287, 518, 2283, 2322, 2267, 2269, 2280, 2318, 2263, - 2321, 2275, 2255, 2270, 542, 2260, 2266, 524, 2257, 2255, - 2255, 2261, 2252, 2251, 2258, 2248, 2307, 2263, 2262, 2256, - 498, 2263, 2258, 2250, 2240, 2255, 2254, 2249, 2253, 2234, - 2250, 2236, 2242, 2249, 2231, 457, 2236, 2233, 2232, 2227, - - 2241, 551, 2240, 2283, 2242, 529, 2233, 552, 2448, 2448, - 554, 2448, 2448, 2220, 536, 543, 2268, 559, 2278, 553, - 2448, 2277, 2448, 2271, 603, 2448, 552, 2211, 2220, 2268, - 2228, 2211, 2228, 2264, 2224, 2207, 2213, 2265, 2220, 2223, - 2214, 2217, 2203, 2214, 2258, 2252, 2210, 2207, 594, 2213, - 2253, 2188, 2246, 2199, 2194, 2191, 2242, 2199, 2188, 2204, - 2238, 2184, 601, 2198, 2183, 2196, 2194, 2192, 2192, 2191, - 2186, 2193, 2188, 2184, 570, 2182, 2185, 2180, 2166, 2178, - 2174, 2224, 563, 2218, 2448, 2182, 2216, 2166, 2165, 2164, - 2157, 2159, 2171, 2162, 2169, 2150, 2167, 2162, 581, 2209, - - 2162, 2159, 2162, 2448, 2161, 2150, 2150, 2162, 547, 2137, - 2138, 2159, 2150, 2140, 2191, 2136, 2150, 584, 2136, 2148, - 2147, 2146, 2141, 2183, 2143, 2142, 2141, 2140, 2183, 2142, - 2122, 2180, 2448, 2122, 2121, 629, 2134, 2448, 2448, 2133, - 2122, 2114, 572, 2173, 2172, 2448, 2171, 2448, 607, 655, - 610, 2170, 2112, 2123, 2162, 2115, 2117, 2119, 2106, 2114, - 2102, 2448, 2107, 2100, 2112, 2115, 2102, 2101, 2448, 595, - 2103, 2100, 613, 2098, 2100, 2448, 2145, 2107, 2104, 2089, - 2102, 2097, 637, 2104, 2092, 2085, 2136, 2448, 2083, 2099, - 2133, 2094, 2091, 2092, 2076, 2085, 2127, 2078, 2077, 2072, - - 2071, 2122, 2066, 626, 2085, 2059, 2066, 2071, 2081, 2115, - 2119, 2448, 2064, 2060, 2058, 2067, 2066, 2060, 2067, 2051, - 2051, 2061, 2049, 2063, 2063, 2051, 2047, 2045, 2448, 2102, - 2448, 2044, 2055, 2094, 2039, 2044, 2053, 2047, 2041, 2050, - 2092, 2086, 2048, 2032, 2027, 2047, 2022, 2028, 631, 2042, - 2035, 2039, 2022, 2080, 2021, 2021, 2072, 2017, 2018, 2017, - 2448, 2030, 2067, 2448, 2018, 2016, 2448, 2027, 2063, 2023, - 2007, 2024, 2064, 2448, 2448, 2448, 630, 621, 681, 2448, - 2015, 2014, 294, 2021, 2001, 2011, 2053, 1998, 2051, 1996, - 2006, 2048, 1993, 2000, 1993, 2005, 1987, 1987, 2002, 2001, - - 603, 2000, 1999, 1999, 1981, 1986, 2027, 1994, 1991, 1985, - 2030, 1974, 1990, 1989, 2448, 1974, 1971, 2029, 1984, 1976, - 1982, 1973, 1981, 1966, 1982, 1964, 1976, 1968, 640, 1959, - 1958, 1952, 1957, 1972, 1969, 1970, 1949, 1959, 1965, 2008, - 1963, 1955, 1946, 2448, 1947, 1949, 1958, 1950, 1955, 1994, - 1993, 1944, 16, 1953, 1990, 1935, 1988, 1935, 1938, 1931, - 2448, 1945, 1924, 1928, 1942, 1934, 1979, 1931, 1938, 1976, - 2448, 1921, 1935, 1934, 1937, 1918, 1970, 1969, 1916, 1967, - 1927, 1911, 1964, 1963, 2448, 1908, 1922, 1921, 679, 1922, - 1921, 1957, 1921, 1916, 1899, 1904, 1906, 2448, 1912, 1902, - - 2448, 654, 666, 1896, 1894, 1901, 1911, 1903, 1890, 1884, - 1896, 1895, 1940, 659, 1944, 1898, 649, 20, 242, 210, - 437, 541, 577, 564, 585, 646, 649, 641, 698, 651, - 661, 664, 703, 666, 660, 664, 662, 664, 711, 717, - 675, 676, 2448, 679, 675, 666, 681, 686, 683, 686, - 685, 673, 687, 685, 693, 729, 691, 736, 737, 687, - 679, 689, 736, 694, 744, 2448, 745, 698, 700, 696, - 690, 693, 751, 747, 710, 699, 712, 2448, 702, 713, - 702, 715, 705, 718, 762, 763, 706, 717, 702, 725, - 704, 710, 765, 729, 713, 725, 769, 770, 717, 772, - - 736, 731, 736, 734, 778, 720, 732, 735, 739, 731, - 728, 2448, 792, 751, 752, 742, 745, 756, 741, 748, - 754, 746, 760, 800, 776, 763, 768, 765, 747, 754, - 768, 813, 770, 767, 768, 766, 775, 2448, 771, 766, - 781, 778, 764, 766, 785, 782, 770, 777, 778, 787, - 791, 827, 789, 780, 778, 777, 788, 784, 840, 787, - 798, 783, 784, 790, 806, 796, 2448, 806, 806, 799, - 810, 808, 853, 795, 797, 812, 799, 798, 860, 817, - 803, 809, 807, 2448, 2448, 817, 822, 827, 815, 825, - 827, 2448, 2448, 828, 815, 833, 820, 814, 2448, 819, - - 837, 824, 874, 825, 877, 823, 827, 845, 886, 2448, - 2448, 831, 835, 834, 831, 891, 844, 834, 835, 831, - 844, 855, 856, 851, 852, 854, 847, 849, 845, 851, - 851, 853, 868, 851, 910, 867, 872, 849, 872, 858, - 857, 2448, 864, 865, 865, 878, 916, 874, 864, 879, - 880, 867, 899, 907, 876, 871, 926, 927, 889, 929, - 2448, 935, 878, 894, 898, 939, 889, 888, 883, 884, - 896, 891, 887, 890, 891, 901, 910, 947, 894, 913, - 905, 900, 958, 915, 916, 907, 2448, 921, 910, 913, - 921, 923, 908, 924, 918, 965, 931, 915, 916, 2448, - - 932, 935, 918, 977, 920, 939, 2448, 938, 941, 927, - 922, 940, 980, 938, 934, 931, 984, 985, 947, 933, - 951, 950, 951, 937, 952, 944, 951, 941, 959, 958, - 945, 962, 2448, 954, 960, 963, 1008, 2448, 957, 962, - 1006, 958, 970, 964, 965, 963, 965, 975, 1020, 964, - 965, 965, 1024, 968, 980, 973, 2448, 969, 977, 975, - 1026, 968, 989, 975, 977, 983, 991, 982, 987, 997, - 998, 1003, 1044, 1016, 1021, 1003, 1000, 996, 1010, 993, - 993, 2448, 994, 1054, 997, 2448, 1008, 998, 1018, 1017, - 1008, 1019, 1062, 1023, 1016, 1020, 1024, 1007, 1024, 1015, - - 1070, 1017, 2448, 1067, 1016, 1019, 1037, 1019, 1020, 1020, - 1041, 1038, 1043, 1044, 1030, 1038, 1047, 1027, 1042, 1049, - 1091, 2448, 1092, 1093, 1035, 1045, 1055, 1039, 1059, 1047, - 1043, 1050, 1059, 1047, 1054, 1055, 1067, 1108, 1055, 1053, - 1055, 1072, 1113, 1063, 1062, 1068, 1066, 1064, 1059, 1120, - 1071, 1122, 1118, 1124, 2448, 1081, 1074, 1065, 1084, 1072, - 1082, 1083, 1079, 1092, 1092, 2448, 1076, 1072, 1079, 2448, - 1080, 1140, 1099, 1080, 1099, 1100, 1102, 1141, 1094, 1148, - 1149, 1099, 1097, 1108, 1107, 1091, 1096, 1114, 2448, 1136, - 1127, 1159, 1099, 1121, 1116, 1116, 1120, 1165, 2448, 1108, - - 1108, 1111, 1128, 1123, 1127, 1122, 2448, 1114, 1131, 1111, - 1132, 1122, 1173, 1126, 2448, 1140, 1140, 1178, 1125, 1134, - 1182, 1140, 1145, 1131, 1191, 1134, 1145, 1137, 1143, 1139, - 1157, 1158, 1159, 2448, 2448, 1158, 2448, 1143, 1154, 1145, - 1164, 1157, 1155, 1148, 1160, 1204, 1168, 1157, 1164, 1165, - 1171, 2448, 1164, 1216, 1157, 1218, 2448, 1219, 1161, 1167, - 1174, 1218, 1180, 2448, 1181, 2448, 1168, 2448, 1170, 1184, - 1189, 1172, 1231, 1188, 1189, 1229, 1181, 1186, 1237, 1233, - 1186, 1240, 2448, 1191, 1188, 1243, 1244, 1201, 1202, 1204, - 2448, 2448, 1243, 1192, 1208, 1251, 1193, 1205, 1210, 1225, - - 1256, 2448, 1213, 1206, 1215, 1206, 1217, 2448, 1262, 1199, - 1210, 1225, 1261, 1213, 1224, 1225, 1226, 1223, 1267, 1230, - 1220, 1230, 1236, 1223, 1219, 1279, 1275, 1233, 1277, 1284, - 1241, 2448, 1242, 1236, 1245, 1246, 1243, 1233, 1236, 1236, - 1241, 1296, 1243, 1298, 1241, 1246, 1301, 1297, 1238, 1253, - 1246, 1250, 1263, 1264, 1262, 1311, 2448, 1265, 2448, 2448, - 1270, 1262, 1272, 1257, 1313, 1260, 1260, 1321, 1265, 1275, - 1324, 2448, 1272, 1273, 1275, 1328, 1269, 1272, 2448, 1290, - 1291, 2448, 1291, 1279, 2448, 2448, 1292, 1275, 1295, 1282, - 1341, 1291, 2448, 1343, 1292, 1345, 1325, 2448, 1347, 1304, - - 1349, 1300, 1347, 2448, 1295, 1354, 1304, 1298, 1295, 1298, - 1300, 1317, 1356, 1309, 1321, 1324, 1312, 1315, 1308, 1315, - 1306, 2448, 1314, 1329, 1314, 2448, 1316, 1317, 1332, 1332, - 1335, 1335, 1332, 1376, 1338, 1330, 2448, 1331, 2448, 1341, - 1333, 2448, 1339, 1344, 1345, 1342, 1386, 1334, 1349, 1350, - 1342, 2448, 1339, 1340, 1340, 1346, 1345, 1343, 1397, 1358, - 2448, 1399, 1346, 2448, 1347, 1348, 1354, 2448, 1363, 1357, - 1412, 1359, 1352, 1364, 1359, 1369, 1380, 1373, 1379, 1375, - 2448, 1384, 2448, 1381, 2448, 1378, 1401, 2448, 1428, 2448, - 1386, 1371, 1431, 2448, 1432, 1389, 1394, 1376, 1436, 1432, - - 1396, 1393, 1389, 1382, 1437, 1395, 1396, 1386, 1391, 1403, - 1448, 1403, 1451, 1447, 1410, 1407, 1451, 1399, 1404, 1402, - 1461, 1417, 1405, 1464, 1460, 1423, 1467, 1428, 1417, 1411, - 1471, 1413, 1414, 1428, 1431, 1431, 1477, 1419, 1436, 1432, - 1430, 1437, 1421, 1479, 1480, 1481, 1444, 1437, 1436, 1436, - 1431, 1449, 2448, 1440, 1446, 1451, 1438, 1439, 1438, 1440, - 1495, 1436, 1454, 1503, 1461, 1474, 2448, 1506, 1459, 2448, - 2448, 1450, 1461, 1510, 2448, 1456, 1461, 1459, 1509, 1467, - 1472, 1460, 1476, 1466, 1464, 1478, 1465, 2448, 1467, 2448, - 1470, 1521, 1464, 1469, 1529, 1477, 1487, 1488, 2448, 1534, - - 1487, 1531, 2448, 1482, 1538, 2448, 1481, 1496, 1484, 2448, - 1494, 1495, 1544, 1502, 1506, 2448, 1542, 1508, 1484, 1502, - 1503, 1512, 1494, 1501, 1513, 1512, 1503, 1553, 1505, 1501, - 1561, 1503, 1504, 1564, 1560, 1566, 1516, 1568, 1521, 1526, - 1519, 2448, 1572, 1573, 2448, 1522, 1575, 1517, 2448, 1520, - 1530, 1574, 1522, 1537, 1524, 1539, 1525, 1532, 1532, 1587, - 1544, 1545, 1533, 1532, 1592, 1545, 2448, 1589, 1540, 1537, - 2448, 1551, 1538, 1559, 2448, 1556, 1601, 1554, 1551, 1552, - 2448, 1605, 1564, 1547, 1549, 1565, 1558, 1548, 1564, 1565, - 1574, 1564, 1616, 1576, 1560, 1569, 1615, 2448, 1573, 1622, - - 2448, 1571, 2448, 1565, 2448, 1572, 1626, 1622, 2448, 2448, - 1585, 2448, 1625, 1587, 1588, 1573, 1574, 1582, 1636, 1584, - 1633, 1634, 1589, 2448, 1584, 1602, 1589, 1596, 2448, 1593, - 1598, 1596, 1648, 1649, 1597, 1594, 1594, 2448, 1609, 1610, - 1611, 2448, 1612, 1602, 1614, 1659, 1612, 1661, 1603, 1611, - 1612, 1625, 2448, 1626, 1607, 1608, 1615, 1617, 2448, 1631, - 1628, 1668, 1629, 2448, 1633, 1618, 1618, 1633, 1626, 1625, - 1636, 1623, 2448, 1639, 1627, 1630, 1686, 1626, 1645, 1647, - 1638, 1647, 1649, 1653, 2448, 2448, 1646, 1637, 1696, 1639, - 1698, 1699, 1700, 1658, 1702, 2448, 1644, 2448, 1699, 1661, - - 1662, 1649, 1657, 1668, 1655, 1666, 1652, 1650, 1658, 1657, - 1662, 1654, 1719, 1672, 1673, 1663, 1680, 1679, 1720, 1664, - 1683, 1684, 2448, 1689, 1682, 1687, 1688, 1733, 1690, 1693, - 1680, 1689, 2448, 1738, 2448, 2448, 2448, 1699, 2448, 1740, - 1682, 1742, 1743, 1686, 1745, 1693, 1742, 1743, 1705, 1745, - 1691, 1695, 1713, 1754, 1713, 2448, 1704, 1694, 1753, 1719, - 1712, 1708, 1762, 1705, 1707, 1706, 1713, 1709, 1711, 2448, - 1716, 1726, 1711, 1719, 2448, 1714, 2448, 1726, 2448, 2448, - 1731, 2448, 1732, 1732, 1723, 1779, 1723, 1733, 1718, 1731, - 2448, 1733, 1741, 1786, 1727, 1729, 1726, 1750, 2448, 1737, - - 1744, 1745, 1748, 1737, 1791, 1738, 1746, 1755, 1754, 1757, - 1750, 1745, 1745, 1757, 1752, 2448, 1763, 1751, 1804, 1755, - 1767, 1812, 2448, 1758, 1770, 1815, 1764, 1766, 1764, 1765, - 1820, 1773, 1760, 1775, 1780, 1825, 1826, 1827, 1784, 1829, - 1830, 1774, 1778, 1774, 1790, 1773, 1785, 1779, 2448, 1795, - 1839, 2448, 1796, 1781, 1799, 1790, 2448, 1791, 1805, 1801, - 1794, 2448, 2448, 2448, 1848, 2448, 2448, 1791, 1799, 1794, - 1847, 1813, 1810, 1855, 1816, 2448, 1857, 1799, 1859, 1802, - 1815, 1814, 1815, 1805, 2448, 1806, 1866, 1819, 1828, 1821, - 1865, 2448, 1812, 2448, 1824, 2448, 1868, 1874, 1816, 1832, - - 1877, 1878, 2448, 1835, 1829, 1822, 1842, 1839, 1831, 1835, - 2448, 1882, 1831, 2448, 2448, 1831, 1839, 1886, 1846, 1839, - 1894, 1842, 1842, 1838, 1840, 1899, 1900, 1842, 1858, 1843, - 2448, 1904, 1851, 1858, 1907, 2448, 2448, 1860, 1909, 1857, - 2448, 1861, 1860, 2448, 1861, 2448, 1855, 1855, 1872, 1873, - 1918, 1864, 1920, 1921, 2448, 1922, 2448, 2448, 2448, 2448, - 1928, 1931, 1934, 1935, 1937, 1940, 1943, 1946 + 2489, 2490, 34, 2485, 145, 0, 207, 2490, 214, 221, + 13, 228, 2490, 2465, 118, 25, 2, 6, 2490, 2490, + 73, 11, 17, 2490, 2490, 2490, 104, 2473, 2426, 0, + 2463, 108, 2480, 24, 262, 2490, 2422, 67, 2428, 84, + 75, 88, 224, 91, 89, 290, 220, 2420, 206, 285, + 236, 204, 197, 60, 232, 2429, 247, 294, 315, 307, + 286, 2412, 212, 325, 354, 328, 2431, 330, 0, 381, + 398, 412, 420, 425, 2490, 0, 2490, 439, 444, 249, + 319, 238, 331, 349, 334, 2490, 2428, 2469, 2490, 339, + + 2490, 438, 2456, 341, 2425, 363, 10, 366, 323, 380, + 388, 418, 2466, 0, 499, 410, 2408, 2405, 2409, 415, + 2405, 80, 2413, 216, 2399, 2400, 2405, 78, 2415, 2398, + 2407, 2397, 2406, 221, 2397, 223, 2398, 2396, 409, 2444, + 2448, 2388, 2441, 2381, 174, 2402, 2402, 2396, 278, 2389, + 2387, 2388, 2380, 2385, 2379, 425, 2390, 408, 2375, 2374, + 2388, 423, 2374, 419, 434, 2368, 495, 432, 469, 2389, + 2386, 2387, 447, 2385, 2420, 2419, 468, 2365, 2365, 471, + 2366, 474, 2358, 2375, 2367, 2369, 0, 474, 443, 468, + 475, 503, 469, 2365, 2490, 2410, 475, 2359, 476, 499, + + 503, 2413, 517, 2412, 519, 2411, 2490, 2490, 565, 2410, + 538, 2369, 2361, 2348, 2359, 2363, 2364, 2344, 2355, 2359, + 2356, 2355, 504, 504, 2393, 2357, 2338, 2335, 2343, 2338, + 2352, 2348, 2339, 2335, 2347, 2347, 2338, 2322, 2326, 2339, + 2341, 2338, 2330, 2320, 2338, 2490, 2333, 522, 2371, 2317, + 2326, 2368, 2315, 2325, 2328, 509, 2324, 2363, 2308, 2310, + 2321, 2359, 2304, 2362, 2316, 2296, 2311, 559, 2301, 2307, + 355, 2298, 2296, 2296, 2302, 2293, 2292, 2299, 2289, 2348, + 2304, 2303, 2297, 514, 2304, 2299, 2291, 2281, 2296, 2295, + 2290, 2294, 2275, 2291, 2277, 2283, 2290, 2272, 503, 2277, + + 2274, 2273, 566, 2268, 2282, 559, 2281, 2324, 2283, 564, + 2274, 2262, 560, 2490, 2490, 567, 2490, 2490, 2260, 541, + 555, 2308, 571, 2318, 565, 2490, 2317, 2490, 2311, 615, + 2490, 556, 2251, 2260, 2308, 2268, 2251, 2268, 2304, 2264, + 2247, 2253, 2305, 2260, 2263, 2254, 2257, 2243, 2254, 2298, + 2292, 2250, 2247, 590, 2253, 2293, 2228, 2286, 2239, 2234, + 2231, 2282, 2239, 2228, 2244, 2278, 2224, 593, 2238, 2223, + 2236, 2234, 2232, 2232, 2231, 2226, 2233, 2228, 2224, 582, + 2222, 2225, 2220, 2206, 2218, 2214, 2264, 557, 2258, 2490, + 2222, 2256, 2206, 2205, 2204, 2197, 2199, 2211, 2202, 2209, + + 2190, 2207, 2202, 596, 2249, 2202, 2199, 2202, 2490, 2201, + 608, 2191, 2203, 587, 2178, 2179, 2200, 2191, 2181, 2232, + 2177, 2191, 597, 2177, 2189, 2188, 2187, 2182, 2224, 2184, + 2183, 2182, 2181, 2164, 2223, 2182, 2162, 2220, 2490, 2162, + 2161, 642, 2174, 2172, 2490, 2490, 2172, 2161, 2153, 618, + 2212, 2211, 2490, 2210, 2490, 624, 672, 637, 2209, 2151, + 2162, 2201, 2154, 2156, 2158, 2145, 2153, 2141, 2490, 2146, + 2139, 2151, 2154, 2141, 2140, 2490, 615, 2142, 2139, 573, + 2137, 2139, 2490, 2184, 2146, 2143, 2128, 2141, 2136, 663, + 2143, 2131, 2124, 2175, 2490, 2122, 2138, 2172, 2133, 2130, + + 2131, 2115, 2124, 2166, 2117, 2116, 2111, 2110, 2161, 2105, + 574, 2124, 2098, 2105, 2110, 2120, 2154, 2158, 2490, 2103, + 2099, 2097, 2106, 2105, 2099, 2106, 2090, 2090, 2100, 2088, + 2102, 2102, 2090, 2086, 2084, 2490, 2141, 2490, 2083, 2094, + 2133, 2078, 2077, 2082, 2091, 2085, 2079, 2088, 2130, 2124, + 2086, 2070, 2065, 2085, 2060, 2066, 592, 2080, 2073, 2077, + 2060, 2118, 2059, 2059, 2110, 2055, 2056, 2055, 2053, 2490, + 2067, 2104, 2490, 2055, 2053, 2490, 2064, 2100, 2099, 2059, + 2043, 2060, 2100, 2490, 2490, 2490, 643, 645, 696, 2490, + 2051, 2050, 626, 2057, 2037, 2047, 2089, 2034, 2087, 2032, + + 2042, 2084, 2029, 2036, 2029, 2041, 2023, 2023, 2038, 2037, + 645, 2036, 2035, 2035, 2017, 2022, 2063, 2030, 2027, 2021, + 2066, 2010, 2026, 2025, 2490, 2010, 2007, 2065, 2020, 2012, + 2018, 2009, 2017, 2002, 2018, 2000, 2012, 2004, 622, 1995, + 1994, 1988, 1993, 2008, 2005, 2006, 1985, 1995, 2001, 2044, + 1999, 1991, 1982, 2490, 1983, 1985, 1994, 1986, 1991, 2030, + 2029, 1980, 16, 1989, 2026, 1971, 2024, 1971, 1974, 1967, + 2490, 1981, 1960, 1964, 1978, 1973, 1969, 2014, 1966, 1973, + 2011, 2490, 1956, 1970, 1969, 1972, 1953, 2005, 2004, 1951, + 2002, 1962, 1946, 1999, 1998, 2490, 1943, 1957, 1956, 687, + + 1957, 1956, 1953, 1991, 1955, 1950, 1933, 1938, 1940, 1931, + 2490, 1945, 1935, 2490, 668, 609, 1929, 1927, 1930, 207, + 215, 287, 297, 346, 420, 488, 662, 527, 625, 663, + 681, 683, 655, 656, 667, 678, 664, 667, 678, 678, + 662, 719, 672, 682, 686, 724, 687, 680, 684, 681, + 683, 730, 736, 694, 695, 2490, 698, 694, 685, 700, + 705, 702, 705, 704, 692, 706, 704, 712, 748, 710, + 755, 756, 706, 698, 708, 755, 713, 763, 2490, 764, + 717, 719, 715, 709, 712, 770, 766, 729, 718, 731, + 2490, 721, 732, 721, 734, 724, 737, 781, 782, 725, + + 736, 721, 744, 735, 724, 730, 785, 749, 733, 745, + 789, 790, 737, 792, 756, 751, 756, 754, 798, 740, + 752, 755, 759, 751, 748, 2490, 812, 771, 772, 760, + 763, 766, 777, 762, 769, 775, 776, 768, 782, 822, + 798, 785, 790, 787, 769, 776, 790, 835, 792, 789, + 790, 788, 797, 2490, 793, 788, 803, 800, 786, 788, + 807, 804, 792, 799, 800, 809, 813, 849, 811, 802, + 800, 799, 810, 806, 862, 809, 820, 805, 806, 812, + 828, 818, 2490, 828, 828, 821, 832, 830, 875, 817, + 819, 834, 821, 820, 882, 839, 825, 831, 829, 2490, + + 2490, 839, 844, 849, 837, 847, 849, 2490, 2490, 850, + 837, 855, 842, 836, 2490, 841, 859, 846, 896, 847, + 899, 845, 849, 867, 908, 2490, 2490, 853, 857, 856, + 853, 869, 914, 867, 857, 858, 854, 867, 878, 879, + 874, 875, 877, 870, 872, 868, 874, 874, 876, 891, + 874, 933, 890, 895, 872, 895, 881, 880, 2490, 887, + 888, 937, 889, 902, 940, 898, 888, 903, 897, 905, + 892, 924, 932, 901, 896, 951, 952, 914, 954, 2490, + 960, 903, 919, 923, 964, 914, 913, 908, 909, 921, + 916, 912, 915, 916, 926, 935, 972, 919, 938, 930, + + 925, 983, 940, 941, 932, 2490, 946, 935, 938, 946, + 948, 933, 949, 943, 990, 956, 940, 941, 2490, 957, + 960, 943, 1002, 945, 964, 2490, 963, 966, 952, 947, + 965, 1005, 963, 959, 956, 1009, 1010, 972, 958, 976, + 975, 976, 962, 977, 969, 976, 966, 984, 983, 970, + 987, 2490, 979, 985, 988, 1033, 980, 2490, 983, 988, + 1033, 984, 996, 990, 991, 989, 991, 1001, 1046, 990, + 991, 991, 1050, 994, 1006, 999, 2490, 995, 1003, 1001, + 1052, 994, 1015, 1002, 1003, 1004, 1010, 1018, 1009, 1014, + 1024, 1025, 1026, 1031, 1072, 1044, 1049, 1031, 1028, 1024, + + 1038, 1021, 1021, 2490, 1022, 1082, 1025, 2490, 1036, 1026, + 1046, 1045, 1036, 1047, 1090, 1051, 1044, 1048, 1052, 1035, + 1052, 1043, 1098, 1045, 2490, 1095, 1044, 1047, 1065, 1047, + 1048, 1048, 1069, 1066, 1071, 1072, 1058, 1066, 1075, 1055, + 1070, 1077, 1119, 2490, 1120, 1121, 1063, 1073, 1083, 1067, + 1087, 1075, 1071, 1078, 1087, 1075, 1082, 1083, 1095, 1136, + 1083, 1081, 1083, 1100, 1141, 1091, 1090, 1096, 1094, 1092, + 1087, 1148, 1099, 1150, 1146, 1152, 2490, 1093, 1110, 1103, + 1094, 1113, 1101, 1111, 1112, 1108, 1121, 1121, 2490, 1105, + 1102, 1108, 2490, 1109, 1169, 1128, 1109, 1128, 1129, 1131, + + 1170, 1123, 1177, 1178, 1131, 1129, 1127, 1138, 1137, 1121, + 1126, 1132, 1145, 2490, 1167, 1158, 1190, 1130, 1152, 1147, + 1147, 1151, 1196, 2490, 1139, 1139, 1142, 1159, 1154, 1158, + 1153, 2490, 1145, 1162, 1142, 1163, 1153, 1204, 1157, 2490, + 1171, 1171, 1209, 1156, 1165, 1213, 1171, 1176, 1162, 1222, + 1165, 1176, 1168, 1174, 1170, 1188, 1189, 1190, 2490, 2490, + 1189, 2490, 1174, 1185, 1176, 1195, 1188, 1186, 1179, 1191, + 1235, 1199, 1188, 1195, 1196, 1202, 2490, 1195, 1247, 1188, + 1249, 2490, 1250, 1192, 1198, 1205, 1249, 1211, 2490, 1212, + 2490, 1199, 2490, 1199, 1202, 1216, 1221, 1204, 1263, 1220, + + 1221, 1261, 1213, 1218, 1269, 1265, 1218, 1272, 2490, 1223, + 1220, 1275, 1276, 1233, 1234, 1236, 2490, 2490, 1228, 1276, + 1225, 1241, 1284, 1226, 1238, 1227, 1244, 1259, 1290, 2490, + 1247, 1240, 1249, 1240, 1251, 2490, 1296, 1233, 1244, 1259, + 1295, 1247, 1258, 1259, 1260, 1257, 1301, 1264, 1254, 1264, + 1270, 1257, 1253, 1313, 1309, 1267, 1311, 1318, 1276, 2490, + 1277, 1270, 1279, 1280, 1277, 1267, 1270, 1270, 1275, 1330, + 1277, 1332, 1275, 1280, 1335, 1331, 1272, 1287, 1280, 1284, + 1297, 1298, 1296, 1345, 2490, 1299, 2490, 2490, 1304, 1296, + 1306, 1291, 1347, 1294, 1294, 1355, 1356, 1300, 1310, 1359, + + 2490, 1307, 1308, 1310, 1363, 1304, 1307, 2490, 1325, 1326, + 2490, 1326, 1314, 2490, 2490, 1327, 1310, 1330, 1331, 1318, + 1377, 1327, 2490, 1379, 1328, 1322, 1382, 1362, 2490, 1384, + 1341, 1386, 1337, 1384, 2490, 1332, 1391, 1341, 1335, 1332, + 1335, 1337, 1354, 1393, 1346, 1358, 1361, 1349, 1352, 1345, + 1352, 1343, 2490, 1351, 1366, 1351, 2490, 1353, 1354, 1369, + 1369, 1372, 1372, 1369, 1413, 1375, 1367, 2490, 1368, 2490, + 1378, 1370, 2490, 1376, 1381, 1382, 1379, 1423, 1371, 1386, + 1387, 1379, 2490, 1376, 1377, 1377, 1383, 1382, 1380, 1434, + 1395, 2490, 2490, 1436, 1383, 2490, 1384, 1385, 1391, 2490, + + 1400, 1394, 1449, 1396, 1389, 1401, 1396, 1406, 1417, 1410, + 1416, 1406, 1413, 2490, 1422, 2490, 1419, 1464, 2490, 1417, + 1440, 2490, 1467, 2490, 1425, 1410, 1470, 2490, 1471, 1428, + 1433, 1415, 1475, 1471, 1435, 1432, 1428, 1421, 1476, 1434, + 1435, 1425, 1430, 1442, 1487, 1442, 1490, 1486, 1449, 1446, + 1490, 1438, 1443, 1441, 1500, 1456, 1444, 1503, 1499, 1462, + 1506, 1467, 1456, 1450, 1510, 1452, 1453, 1467, 1470, 1470, + 1516, 1458, 1475, 1471, 1469, 1476, 1460, 1518, 1519, 1520, + 1483, 1476, 1475, 1475, 1470, 1488, 2490, 1479, 1485, 1490, + 1477, 1478, 1477, 1479, 1534, 1480, 1476, 1494, 1543, 2490, + + 1501, 1514, 2490, 1546, 1499, 2490, 2490, 1490, 1501, 1550, + 2490, 1496, 1501, 1499, 1549, 1507, 1512, 1500, 1517, 1506, + 1504, 1518, 1505, 2490, 1507, 2490, 1510, 1561, 1504, 1509, + 1569, 1517, 1527, 1528, 2490, 1574, 1527, 1571, 2490, 1522, + 1578, 2490, 1521, 1536, 1524, 2490, 1534, 1535, 1584, 1542, + 1546, 2490, 1582, 1548, 1524, 1542, 1543, 1552, 1534, 1541, + 1553, 1552, 1543, 1593, 1545, 1541, 1601, 1543, 1544, 1604, + 1600, 1606, 1556, 1608, 1561, 1551, 1567, 1560, 2490, 1613, + 1614, 2490, 1563, 1616, 1558, 2490, 1561, 1571, 1615, 1563, + 1578, 1565, 1580, 1566, 1573, 1573, 1628, 1585, 1586, 1574, + + 1573, 1633, 1586, 2490, 1630, 1581, 1578, 2490, 1592, 1579, + 1600, 2490, 1597, 1642, 1595, 1592, 1593, 2490, 1646, 1605, + 1588, 1590, 1606, 1599, 1589, 1605, 1606, 1615, 1605, 1657, + 1617, 1601, 1610, 1656, 2490, 1614, 1663, 2490, 1612, 2490, + 1606, 2490, 1613, 1667, 1668, 1665, 2490, 2490, 1627, 2490, + 1667, 1629, 1630, 1615, 1616, 1624, 1678, 1626, 1675, 1676, + 1631, 2490, 1626, 1644, 1631, 1638, 2490, 1635, 1640, 1638, + 1690, 1691, 1639, 1636, 1636, 2490, 1651, 1652, 1653, 2490, + 1654, 1644, 1656, 1701, 1654, 1703, 1645, 1653, 1654, 1667, + 2490, 1668, 1649, 1650, 1657, 1659, 2490, 1673, 1670, 1710, + + 1671, 2490, 2490, 1675, 1660, 1660, 1675, 1668, 1667, 1678, + 1665, 2490, 1681, 1669, 1672, 1728, 1668, 1687, 1689, 1680, + 1689, 1691, 1695, 2490, 2490, 1688, 1679, 1738, 1681, 1740, + 1741, 1742, 1700, 1744, 2490, 1686, 2490, 1741, 1703, 1704, + 1691, 1699, 1710, 1697, 1708, 1694, 1692, 1700, 1699, 1704, + 1696, 1761, 1714, 1715, 1705, 1722, 1721, 1762, 1706, 1725, + 1726, 2490, 1731, 1724, 1729, 1730, 1775, 1732, 1735, 1722, + 1731, 2490, 1780, 2490, 2490, 2490, 1741, 2490, 1782, 1724, + 1784, 1785, 1728, 1787, 1735, 1784, 1785, 1747, 1787, 1733, + 1737, 1755, 1796, 1755, 2490, 1746, 1736, 1795, 1761, 1754, + + 1750, 1804, 1747, 1749, 1748, 1755, 1751, 1753, 2490, 1758, + 1768, 1753, 1761, 2490, 1756, 2490, 1768, 2490, 2490, 1773, + 2490, 1774, 1774, 1765, 1821, 1765, 1775, 1760, 1773, 2490, + 1775, 1783, 1828, 1769, 1771, 1768, 1792, 2490, 1779, 1786, + 1787, 1790, 1779, 1833, 1780, 1788, 1797, 1796, 1799, 1792, + 1787, 1787, 1799, 1794, 2490, 1805, 1793, 1846, 1797, 1809, + 1854, 2490, 1800, 1812, 1857, 1806, 1808, 1806, 1807, 1862, + 1815, 1802, 1817, 1822, 1867, 1868, 1869, 1826, 1871, 1872, + 1816, 1820, 1816, 1832, 1815, 1827, 1821, 2490, 1837, 1881, + 2490, 1838, 1823, 1841, 1832, 2490, 1833, 1847, 1843, 1836, + + 2490, 2490, 2490, 1890, 2490, 2490, 1833, 1841, 1836, 1889, + 1855, 1852, 1897, 1858, 2490, 1899, 1841, 1901, 1844, 1857, + 1856, 1857, 1847, 2490, 1848, 1908, 1861, 1870, 1863, 1907, + 2490, 1854, 2490, 1866, 2490, 1910, 1916, 1858, 1874, 1919, + 1920, 2490, 1877, 1871, 1864, 1884, 1881, 1873, 1877, 2490, + 1924, 1873, 2490, 2490, 1873, 1881, 1928, 1888, 1881, 1936, + 1884, 1884, 1880, 1882, 1941, 1942, 1884, 1900, 1885, 2490, + 1946, 1893, 1900, 1949, 2490, 2490, 1902, 1951, 1899, 2490, + 1903, 1902, 2490, 1903, 2490, 1897, 1897, 1914, 1915, 1960, + 1906, 1962, 1963, 2490, 1964, 2490, 2490, 2490, 2490, 1970, + + 1973, 1976, 1977, 1979, 1982, 1985, 1988 } ; -static const flex_int16_t yy_def[2069] = +static const flex_int16_t yy_def[2108] = { 0, - 2061, 2061, 2062, 2062, 2061, 2061, 2061, 2061, 2061, 2061, - 2060, 2060, 2060, 2060, 2060, 2063, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2064, - 2060, 2060, 2060, 2065, 15, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2066, 45, 45, 45, 45, + 2100, 2100, 2101, 2101, 2100, 2100, 2100, 2100, 2100, 2100, + 2099, 2099, 2099, 2099, 2099, 2102, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2103, + 2099, 2099, 2099, 2104, 15, 2099, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2105, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2063, 2060, 2060, - 2060, 2060, 2060, 2060, 2067, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2064, 2060, 2065, 2060, + 45, 45, 45, 45, 45, 45, 45, 45, 2102, 2099, + 2099, 2099, 2099, 2099, 2099, 2106, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2103, 2099, 2104, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2068, 45, 2066, 45, 45, 45, 45, 45, 45, + 2099, 2099, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2107, 45, 2105, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2067, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2106, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 45, 45, 45, 45, 45, - 45, 45, 2068, 2060, 2060, 114, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2107, 2099, 2099, 115, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 45, 45, 45, 45, 45, 45, - 2060, 45, 2060, 45, 114, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 45, + 45, 45, 45, 45, 45, 2099, 45, 2099, 45, 115, + 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 2060, 2060, 2060, - 45, 45, 45, 45, 45, 2060, 45, 2060, 45, 114, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 2060, 45, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 45, 45, 2099, 2099, 2099, 45, 45, 45, + 45, 45, 2099, 45, 2099, 45, 115, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, + 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2060, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2099, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 2060, 45, 45, 2060, 45, 45, 2060, - 45, 45, 45, 2060, 2060, 2060, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, + 45, 45, 2099, 45, 45, 2099, 45, 45, 45, 2099, + 45, 45, 45, 2099, 2099, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2099, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2060, 2060, 45, 45, 45, 45, 45, - 45, 2060, 2060, 45, 45, 45, 45, 45, 2060, 45, + 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2060, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2099, 45, 45, 45, 45, 45, 45, 2099, 2099, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2099, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2060, - - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2060, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2060, 45, + 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2060, 2060, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 2060, 45, 45, 45, - 45, 45, 45, 2060, 45, 2060, 45, 2060, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, - 2060, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 2060, 45, 45, 45, 45, 45, 2060, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 2099, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 2099, 45, + 2099, 45, 2099, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 45, 45, 45, 45, 2099, 2099, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 2060, 2060, + 45, 45, 45, 45, 2099, 45, 2099, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 2060, 45, - 45, 2060, 45, 45, 2060, 2060, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 2060, 45, 45, - 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 2060, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 2060, 45, 45, 45, 2060, 45, 45, + 2099, 45, 45, 45, 45, 45, 45, 2099, 45, 45, + 2099, 45, 45, 2099, 2099, 45, 45, 45, 45, 45, + 45, 45, 2099, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 2060, 45, 2060, 45, 45, 2060, 45, 2060, - 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, + 45, 45, 2099, 45, 45, 45, 2099, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2099, 45, 2099, + 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, + 45, 2099, 2099, 45, 45, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 2099, 45, 45, 2099, 45, + 45, 2099, 45, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 2060, - 2060, 45, 45, 45, 2060, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 2060, - 45, 45, 45, 45, 45, 45, 45, 45, 2060, 45, - - 45, 45, 2060, 45, 45, 2060, 45, 45, 45, 2060, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, + + 45, 45, 2099, 45, 45, 2099, 2099, 45, 45, 45, + 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 2099, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 2099, 45, + 45, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2060, 45, 45, 2060, 45, 45, 45, 2060, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2060, 45, 45, 45, - 2060, 45, 45, 45, 2060, 45, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 45, - - 2060, 45, 2060, 45, 2060, 45, 45, 45, 2060, 2060, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2060, 45, 45, 45, 45, 2060, 45, - 45, 45, 45, 45, 45, 45, 45, 2060, 45, 45, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 2060, 45, - 45, 45, 45, 2060, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2060, 45, 2060, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 2099, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 2099, 45, 2099, + 45, 2099, 45, 45, 45, 45, 2099, 2099, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2060, 45, 2060, 2060, 2060, 45, 2060, 45, + 45, 2099, 45, 45, 45, 45, 2099, 45, 45, 45, + 45, 45, 45, 45, 45, 2099, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2060, - 45, 45, 45, 45, 2060, 45, 2060, 45, 2060, 2060, - 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 45, 45, 45, 2060, 45, + 2099, 45, 45, 45, 45, 45, 2099, 45, 45, 45, + 45, 2099, 2099, 45, 45, 45, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 2099, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2060, 45, - 45, 2060, 45, 45, 45, 45, 2060, 45, 45, 45, - 45, 2060, 2060, 2060, 45, 2060, 2060, 45, 45, 45, - 45, 45, 45, 45, 45, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 45, 45, 45, 45, - 45, 2060, 45, 2060, 45, 2060, 45, 45, 45, 45, - - 45, 45, 2060, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 2060, 2060, 45, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2099, 45, 2099, 2099, 2099, 45, 2099, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 2099, 45, + 45, 45, 45, 2099, 45, 2099, 45, 2099, 2099, 45, + 2099, 45, 45, 45, 45, 45, 45, 45, 45, 2099, + 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2060, 45, 45, 45, 45, 2060, 2060, 45, 45, 45, - 2060, 45, 45, 2060, 45, 2060, 45, 45, 45, 45, - 45, 45, 45, 45, 2060, 45, 2060, 2060, 2060, 0, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060 + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2099, 45, 45, + 2099, 45, 45, 45, 45, 2099, 45, 45, 45, 45, + + 2099, 2099, 2099, 45, 2099, 2099, 45, 45, 45, 45, + 45, 45, 45, 45, 2099, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 45, 45, 45, 45, 45, + 2099, 45, 2099, 45, 2099, 45, 45, 45, 45, 45, + 45, 2099, 45, 45, 45, 45, 45, 45, 45, 2099, + 45, 45, 2099, 2099, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2099, + 45, 45, 45, 45, 2099, 2099, 45, 45, 45, 2099, + 45, 45, 2099, 45, 2099, 45, 45, 45, 45, 45, + 45, 45, 45, 2099, 45, 2099, 2099, 2099, 0, 2099, + + 2099, 2099, 2099, 2099, 2099, 2099, 2099 } ; -static const flex_int16_t yy_nxt[2522] = +static const flex_int16_t yy_nxt[2564] = { 0, - 2060, 13, 14, 13, 2060, 15, 16, 2060, 17, 18, + 2099, 13, 14, 13, 2099, 15, 16, 2099, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, - 84, 778, 37, 14, 37, 85, 25, 26, 38, 100, - 843, 27, 37, 14, 37, 42, 28, 42, 38, 90, - 91, 29, 197, 30, 13, 14, 13, 89, 90, 25, - 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, - 779, 13, 14, 13, 33, 40, 101, 90, 91, 197, - 89, 34, 35, 13, 14, 13, 93, 15, 16, 94, + 85, 791, 37, 14, 37, 86, 25, 26, 38, 101, + 2099, 27, 37, 14, 37, 42, 28, 42, 38, 91, + 92, 29, 200, 30, 13, 14, 13, 90, 91, 25, + 31, 92, 13, 14, 13, 13, 14, 13, 32, 40, + 792, 13, 14, 13, 33, 40, 102, 91, 92, 200, + 90, 34, 35, 13, 14, 13, 94, 15, 16, 95, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, - 23, 24, 13, 14, 13, 89, 39, 103, 25, 26, + 23, 24, 13, 14, 13, 90, 39, 104, 25, 26, - 13, 14, 13, 27, 39, 42, 105, 42, 28, 42, - 106, 42, 41, 29, 107, 30, 110, 111, 92, 138, - 41, 25, 31, 103, 225, 226, 87, 139, 87, 105, - 32, 88, 88, 88, 88, 88, 33, 107, 106, 110, - 216, 111, 217, 34, 35, 44, 44, 44, 45, 45, + 13, 14, 13, 27, 39, 42, 106, 42, 28, 42, + 107, 42, 41, 29, 108, 30, 111, 112, 93, 139, + 41, 25, 31, 104, 228, 229, 88, 140, 88, 106, + 32, 89, 89, 89, 89, 89, 33, 108, 107, 111, + 219, 112, 220, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 45, 45, 45, 45, 45, 48, 45, 45, 49, 45, 50, 45, 51, 45, 52, 45, 45, 45, @@ -1461,281 +1476,285 @@ static const flex_int16_t yy_nxt[2522] = 57, 58, 59, 60, 61, 62, 63, 64, 65, 51, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 55, 45, 45, 45, 45, 45, 79, 247, - 80, 80, 80, 80, 80, 79, 105, 82, 82, 82, - 82, 82, 248, 81, 83, 83, 83, 83, 83, 79, - 81, 82, 82, 82, 82, 82, 136, 81, 108, 105, - 103, 119, 844, 137, 81, 120, 81, 165, 109, 121, - 135, 166, 122, 81, 219, 123, 232, 845, 233, 124, - 81, 108, 235, 220, 221, 187, 115, 81, 45, 185, - 140, 131, 116, 132, 45, 117, 109, 45, 236, 45, - 141, 45, 142, 45, 133, 113, 144, 145, 45, 45, - - 146, 45, 45, 187, 134, 185, 147, 45, 45, 45, + 76, 77, 78, 45, 45, 45, 45, 45, 80, 250, + 81, 81, 81, 81, 81, 80, 106, 83, 83, 83, + 83, 83, 251, 82, 84, 84, 84, 84, 84, 80, + 82, 83, 83, 83, 83, 83, 137, 82, 109, 106, + 104, 120, 845, 138, 82, 121, 82, 166, 110, 122, + 136, 167, 123, 82, 222, 124, 235, 846, 236, 125, + 82, 109, 238, 223, 224, 190, 116, 82, 45, 188, + 141, 132, 117, 133, 45, 118, 110, 45, 239, 45, + 142, 45, 143, 45, 134, 114, 145, 146, 45, 45, + + 147, 45, 45, 190, 135, 188, 148, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 125, 161, 45, 126, 127, 162, 45, 128, 129, 148, - 45, 107, 252, 149, 199, 163, 253, 150, 45, 186, - 130, 707, 45, 110, 45, 114, 262, 156, 708, 151, - 153, 185, 154, 152, 155, 157, 187, 158, 174, 175, - 167, 199, 159, 160, 168, 186, 180, 169, 108, 83, - 83, 83, 83, 83, 170, 171, 181, 188, 109, 172, - 173, 182, 81, 79, 190, 80, 80, 80, 80, 80, - - 275, 108, 263, 176, 276, 87, 177, 87, 81, 100, - 88, 88, 88, 88, 88, 81, 178, 83, 83, 83, - 83, 83, 79, 179, 82, 82, 82, 82, 82, 186, - 81, 81, 88, 88, 88, 88, 88, 81, 88, 88, - 88, 88, 88, 99, 194, 196, 101, 198, 200, 212, - 99, 201, 267, 81, 202, 189, 239, 194, 213, 240, - 81, 198, 214, 241, 287, 288, 201, 268, 269, 270, - 200, 196, 194, 295, 207, 198, 200, 202, 201, 272, - 99, 308, 273, 274, 99, 208, 289, 296, 99, 198, - 290, 260, 309, 304, 291, 846, 99, 310, 302, 308, - - 99, 318, 99, 99, 205, 278, 309, 310, 316, 308, - 319, 320, 206, 206, 206, 206, 206, 424, 309, 425, - 310, 206, 206, 206, 206, 206, 206, 311, 375, 318, - 313, 316, 312, 324, 320, 339, 322, 319, 340, 435, - 279, 280, 281, 316, 206, 206, 206, 206, 206, 206, - 366, 282, 389, 283, 408, 284, 285, 409, 286, 322, - 324, 325, 325, 325, 325, 325, 327, 367, 341, 394, - 325, 325, 325, 325, 325, 325, 342, 322, 438, 395, - 438, 376, 343, 443, 377, 445, 529, 447, 390, 441, - 847, 436, 443, 325, 325, 325, 325, 325, 325, 442, - - 322, 438, 391, 439, 473, 539, 488, 573, 445, 540, - 474, 489, 443, 513, 431, 447, 450, 450, 450, 450, - 450, 451, 848, 514, 849, 450, 450, 450, 450, 450, - 450, 503, 504, 549, 567, 573, 505, 550, 577, 568, - 578, 679, 615, 850, 530, 573, 596, 616, 450, 450, - 450, 450, 450, 450, 597, 703, 598, 599, 600, 490, - 601, 604, 702, 726, 491, 577, 727, 578, 45, 45, - 45, 45, 45, 579, 605, 636, 606, 45, 45, 45, - 45, 45, 45, 703, 812, 637, 701, 754, 755, 702, - 824, 704, 825, 680, 851, 813, 840, 841, 852, 842, - - 45, 45, 45, 45, 45, 45, 836, 853, 854, 855, - 856, 857, 837, 858, 859, 825, 860, 861, 824, 862, - 865, 866, 867, 863, 868, 869, 870, 864, 871, 872, - 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885, 886, 887, 888, 890, 891, 889, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 927, 929, 930, 931, 934, 935, - 936, 928, 939, 937, 932, 940, 941, 942, 933, 938, - - 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, - 973, 974, 975, 976, 977, 978, 979, 980, 981, 954, - 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1002, - 1003, 1004, 1005, 1001, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, - 1022, 1023, 1024, 1026, 1027, 1028, 1025, 1029, 1030, 1031, - 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, - 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, - 1062, 1063, 1064, 1065, 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, 1091, - 1092, 1093, 1094, 1095, 1096, 1097, 1075, 1098, 1099, 1074, - 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, - 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, - 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128, 1129, 1130, - 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, - - 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1149, 1150, 1151, - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1148, 1159, 1160, - 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, - 1123, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, - 1190, 1192, 1191, 1193, 1194, 1195, 1196, 1197, 1198, 1199, - 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, - 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1190, 1191, - 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, - 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1237, 1239, - - 1240, 1241, 1236, 1242, 1243, 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, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, - 1279, 1280, 1238, 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, 1311, 1312, 1313, 1314, 1315, 1316, 1317, - 1318, 1319, 1320, 1321, 1322, 1300, 1323, 1324, 1325, 1326, - 1327, 1301, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, - - 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, - 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, - 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, - 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, - 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, - 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, - 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1406, 1407, - 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, - 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1397, 1426, - 1427, 1428, 1376, 1429, 1430, 1431, 1432, 1433, 1434, 1435, - - 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, - 1447, 1405, 1448, 1449, 1450, 1451, 1452, 1446, 1453, 1454, - 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, - 1465, 1466, 1467, 1468, 1470, 1471, 1474, 1472, 1469, 1473, - 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, - 1485, 1487, 1488, 1489, 1490, 1486, 1491, 1492, 1493, 1494, - 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, - 1505, 1506, 1507, 1508, 1487, 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, 1552, 1549, 1553, 1554, 1550, - 1555, 1556, 1551, 1557, 1558, 1559, 1560, 1561, 1562, 1563, - 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, - 1574, 1575, 1576, 1577, 1579, 1580, 1581, 1582, 1583, 1584, - 1585, 1586, 1587, 1588, 1578, 1589, 1590, 1591, 1592, 1566, - 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1601, 1602, 1603, - 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, - 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, - 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, - - 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, - 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, - 1654, 1655, 1656, 1657, 1600, 1658, 1659, 1660, 1661, 1662, - 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1644, 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, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, - - 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, - 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, - 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1762, - 1763, 1764, 1765, 1761, 1766, 1767, 1768, 1769, 1770, 1771, - 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, - 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, - 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, - 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, - 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, - 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, - - 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, - 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, - 1853, 1854, 1852, 1855, 1856, 1857, 1858, 1859, 1860, 1861, - 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, - 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, - 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, 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, 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, 1988, 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, 2021, 2020, - 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, - - 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, - 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, - 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 12, 12, - 12, 36, 36, 36, 78, 97, 78, 99, 99, 99, - 112, 112, 112, 184, 839, 184, 203, 203, 203, 838, - 835, 834, 833, 832, 831, 830, 829, 828, 827, 826, - 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, - 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, - 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, - 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, - - 781, 780, 777, 776, 775, 774, 773, 772, 771, 770, - 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, - 759, 758, 757, 756, 753, 752, 751, 750, 749, 748, - 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, - 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, - 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, - 715, 714, 713, 712, 711, 710, 709, 706, 705, 701, - 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, - 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, - 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, - - 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, - 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, - 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, - 638, 635, 634, 633, 632, 631, 630, 629, 628, 627, - 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, - 614, 613, 612, 611, 610, 609, 608, 607, 603, 602, - 595, 594, 593, 592, 591, 590, 589, 588, 587, 586, - 585, 584, 583, 582, 581, 580, 576, 575, 574, 572, - 571, 570, 569, 566, 565, 564, 563, 562, 561, 560, - 559, 558, 557, 556, 555, 554, 553, 552, 551, 548, - - 547, 546, 545, 544, 543, 542, 541, 538, 537, 536, - 535, 534, 533, 532, 531, 528, 527, 526, 525, 524, - 523, 522, 521, 520, 519, 518, 517, 516, 515, 512, - 511, 510, 509, 508, 507, 506, 502, 501, 500, 499, - 498, 497, 496, 495, 494, 493, 492, 487, 486, 485, - 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, - 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, - 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, - 452, 449, 448, 446, 444, 440, 437, 434, 433, 432, - 430, 429, 428, 427, 426, 423, 422, 421, 420, 419, - - 418, 417, 416, 415, 414, 413, 412, 411, 410, 407, - 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, - 396, 393, 392, 388, 387, 386, 385, 384, 383, 382, - 381, 380, 379, 378, 374, 373, 372, 371, 370, 369, - 368, 365, 364, 363, 362, 361, 360, 359, 358, 357, - 356, 355, 354, 353, 352, 351, 350, 349, 348, 347, - 346, 345, 344, 338, 337, 336, 335, 334, 333, 332, - 331, 330, 329, 328, 326, 204, 323, 321, 317, 315, - 314, 307, 306, 305, 303, 301, 300, 299, 298, 297, - 294, 293, 292, 277, 271, 266, 265, 264, 261, 259, - - 258, 257, 256, 255, 254, 251, 250, 249, 246, 245, - 244, 243, 242, 238, 237, 234, 231, 230, 229, 228, - 227, 224, 223, 222, 218, 215, 211, 210, 209, 204, - 195, 193, 192, 191, 183, 164, 143, 118, 104, 102, - 43, 98, 96, 95, 86, 43, 2060, 11, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060 + 126, 162, 45, 127, 128, 163, 45, 129, 130, 149, + 45, 108, 255, 150, 101, 164, 256, 151, 45, 189, + 131, 847, 45, 111, 45, 115, 202, 157, 112, 152, + 154, 188, 155, 153, 156, 158, 848, 159, 175, 176, + 168, 190, 160, 161, 169, 189, 182, 170, 109, 189, + 197, 102, 112, 202, 171, 172, 183, 191, 110, 173, + 174, 184, 186, 199, 84, 84, 84, 84, 84, 193, + + 399, 177, 849, 178, 201, 192, 179, 82, 197, 80, + 400, 81, 81, 81, 81, 81, 180, 203, 265, 199, + 88, 204, 88, 181, 82, 89, 89, 89, 89, 89, + 82, 80, 201, 83, 83, 83, 83, 83, 84, 84, + 84, 84, 84, 100, 205, 203, 82, 82, 204, 197, + 100, 82, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 215, 201, 266, 242, 210, 205, 243, 82, + 270, 216, 244, 314, 82, 217, 850, 211, 275, 278, + 100, 276, 277, 279, 100, 271, 272, 273, 100, 290, + 291, 201, 298, 263, 315, 315, 100, 321, 851, 314, + + 100, 202, 100, 100, 208, 281, 299, 204, 203, 313, + 313, 323, 209, 209, 209, 209, 209, 315, 318, 380, + 321, 209, 209, 209, 209, 209, 209, 292, 303, 325, + 324, 293, 854, 314, 308, 294, 306, 313, 316, 323, + 282, 283, 284, 327, 209, 209, 209, 209, 209, 209, + 329, 285, 325, 286, 346, 287, 288, 324, 289, 317, + 321, 344, 347, 429, 345, 430, 327, 371, 348, 394, + 413, 326, 381, 414, 441, 382, 434, 329, 330, 330, + 330, 330, 330, 332, 372, 327, 445, 330, 330, 330, + 330, 330, 330, 445, 448, 450, 450, 452, 495, 454, + + 480, 536, 690, 496, 449, 395, 481, 520, 327, 445, + 330, 330, 330, 330, 330, 330, 446, 521, 543, 396, + 452, 614, 437, 646, 450, 458, 442, 454, 457, 457, + 457, 457, 457, 647, 615, 841, 616, 457, 457, 457, + 457, 457, 457, 510, 511, 547, 557, 576, 512, 548, + 558, 497, 577, 583, 691, 587, 498, 588, 841, 537, + 457, 457, 457, 457, 457, 457, 606, 544, 625, 767, + 768, 855, 583, 626, 607, 715, 608, 609, 610, 716, + 611, 583, 587, 720, 588, 45, 45, 45, 45, 45, + 721, 859, 826, 860, 45, 45, 45, 45, 45, 45, + + 589, 714, 715, 827, 840, 739, 717, 716, 740, 852, + 856, 857, 861, 858, 862, 853, 863, 45, 45, 45, + 45, 45, 45, 864, 865, 866, 867, 868, 869, 870, + 871, 872, 840, 873, 874, 875, 876, 877, 878, 881, + 882, 883, 879, 884, 885, 886, 880, 887, 888, 889, + 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, + 900, 901, 902, 903, 904, 906, 907, 905, 908, 909, + 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, + 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, + 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, + + 940, 941, 942, 943, 944, 946, 947, 948, 951, 952, + 953, 945, 956, 954, 949, 957, 958, 959, 950, 955, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, + 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 973, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, + 1019, 1021, 1022, 1023, 1024, 1020, 1025, 1026, 1027, 1028, + 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + + 1039, 1040, 1041, 1042, 1043, 1045, 1046, 1047, 1044, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, + 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, + 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, + 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, + 1119, 1097, 1120, 1121, 1096, 1122, 1123, 1124, 1125, 1126, + 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, + + 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1146, 1147, + 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, + 1168, 1169, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, + 1179, 1180, 1170, 1181, 1182, 1183, 1184, 1185, 1186, 1187, + 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, + 1198, 1199, 1200, 1201, 1202, 1145, 1203, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, + 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, + 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, + + 1237, 1238, 1239, 1240, 1241, 1242, 1215, 1216, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, + 1255, 1256, 1257, 1258, 1259, 1260, 1262, 1264, 1265, 1266, + 1261, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, + 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, + 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, + 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, + 1263, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, + 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, + + 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1345, 1346, 1347, 1348, 1349, 1350, 1328, 1351, 1352, 1353, + 1354, 1355, 1329, 1356, 1357, 1358, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, + 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, + 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, + 1403, 1404, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, + 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, + 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, + + 1434, 1435, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, + 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, + 1455, 1456, 1428, 1457, 1405, 1458, 1459, 1460, 1461, 1462, + 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, + 1473, 1474, 1475, 1476, 1478, 1436, 1479, 1480, 1481, 1482, + 1483, 1477, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, + 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1502, + 1503, 1506, 1504, 1501, 1505, 1507, 1508, 1509, 1510, 1511, + 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, + 1523, 1524, 1520, 1525, 1526, 1527, 1528, 1529, 1530, 1531, + + 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, + 1542, 1521, 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, 1586, 1583, 1587, 1588, 1584, 1589, 1590, 1585, + 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, + 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, + 1611, 1612, 1613, 1615, 1616, 1617, 1618, 1619, 1620, 1621, + 1622, 1623, 1624, 1614, 1625, 1626, 1627, 1628, 1602, 1629, + + 1630, 1631, 1632, 1633, 1634, 1635, 1637, 1638, 1639, 1640, + 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, + 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, + 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, + 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, + 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, + 1691, 1692, 1693, 1636, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1681, 1708, + 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, + 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, + + 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, + 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, + 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, + 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, + 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, + 1800, 1801, 1802, 1803, 1799, 1804, 1805, 1806, 1807, 1808, + 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, + 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, + + 1829, 1830, 1831, 1832, 1833, 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, 1862, 1863, 1864, 1865, 1866, 1867, 1868, + 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, + 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, + 1889, 1890, 1892, 1893, 1891, 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, 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, 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, 1988, + 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, 2023, 2024, 2025, 2026, 2027, 2028, + + 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, + 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, + 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, + 2060, 2059, 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, + 12, 12, 12, 36, 36, 36, 79, 98, 79, 100, + 100, 100, 113, 113, 113, 187, 844, 187, 206, 206, + 206, 843, 842, 839, 838, 837, 836, 835, 834, 833, + + 832, 831, 830, 829, 828, 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, + 800, 799, 798, 797, 796, 795, 794, 793, 790, 789, + 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, + 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, + 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, + 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, + 746, 745, 744, 743, 742, 741, 738, 737, 736, 735, + 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, + + 724, 723, 722, 719, 718, 714, 713, 712, 711, 710, + 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, + 699, 698, 697, 696, 695, 694, 693, 692, 689, 688, + 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, + 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, + 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, + 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, + 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, + 635, 634, 633, 632, 631, 630, 629, 628, 627, 624, + 623, 622, 621, 620, 619, 618, 617, 613, 612, 605, + + 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, + 594, 593, 592, 591, 590, 586, 585, 584, 582, 581, + 580, 579, 578, 575, 574, 573, 572, 571, 570, 569, + 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, + 556, 555, 554, 553, 552, 551, 550, 549, 546, 545, + 542, 541, 540, 539, 538, 535, 534, 533, 532, 531, + 530, 529, 528, 527, 526, 525, 524, 523, 522, 519, + 518, 517, 516, 515, 514, 513, 509, 508, 507, 506, + 505, 504, 503, 502, 501, 500, 499, 494, 493, 492, + 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, + + 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, + 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, + 459, 456, 455, 453, 451, 447, 444, 443, 440, 439, + 438, 436, 435, 433, 432, 431, 428, 427, 426, 425, + 424, 423, 422, 421, 420, 419, 418, 417, 416, 415, + 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, + 402, 401, 398, 397, 393, 392, 391, 390, 389, 388, + 387, 386, 385, 384, 383, 379, 378, 377, 376, 375, + 374, 373, 370, 369, 368, 367, 366, 365, 364, 363, + 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, + + 352, 351, 350, 349, 343, 342, 341, 340, 339, 338, + 337, 336, 335, 334, 333, 331, 207, 328, 326, 322, + 320, 319, 312, 311, 310, 309, 307, 305, 304, 302, + 301, 300, 297, 296, 295, 280, 274, 269, 268, 267, + 264, 262, 261, 260, 259, 258, 257, 254, 253, 252, + 249, 248, 247, 246, 245, 241, 240, 237, 234, 233, + 232, 231, 230, 227, 226, 225, 221, 218, 214, 213, + 212, 207, 198, 196, 195, 194, 185, 165, 144, 119, + 105, 103, 43, 99, 97, 96, 87, 43, 2099, 11, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099 } ; -static const flex_int16_t yy_chk[2522] = +static const flex_int16_t yy_chk[2564] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 21, 653, 3, 3, 3, 21, 1, 1, 3, 44, - 718, 1, 4, 4, 4, 13, 1, 13, 4, 27, - 28, 1, 106, 1, 5, 5, 5, 26, 32, 1, + 21, 663, 3, 3, 3, 21, 1, 1, 3, 44, + 0, 1, 4, 4, 4, 13, 1, 13, 4, 27, + 28, 1, 107, 1, 5, 5, 5, 26, 32, 1, 1, 33, 6, 6, 6, 7, 7, 7, 1, 7, - 653, 8, 8, 8, 1, 8, 44, 27, 28, 106, + 663, 8, 8, 8, 1, 8, 44, 27, 28, 107, 26, 1, 1, 2, 2, 2, 32, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, 9, 31, 5, 48, 2, 2, 10, 10, 10, 2, 6, 37, 50, 37, 2, 42, 51, 42, 9, 2, 52, 2, 54, 55, 31, 64, - 10, 2, 2, 48, 127, 127, 25, 64, 25, 50, + 10, 2, 2, 48, 128, 128, 25, 64, 25, 50, 2, 25, 25, 25, 25, 25, 2, 52, 51, 54, - 121, 55, 121, 2, 2, 15, 15, 15, 15, 15, + 122, 55, 122, 2, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1743,261 +1762,265 @@ static const flex_int16_t yy_chk[2522] = 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 17, 144, + 15, 15, 15, 15, 15, 15, 15, 15, 17, 145, 17, 17, 17, 17, 17, 19, 62, 19, 19, 19, - 19, 19, 144, 17, 20, 20, 20, 20, 20, 22, + 19, 19, 145, 17, 20, 20, 20, 20, 20, 22, 19, 22, 22, 22, 22, 22, 63, 20, 53, 62, - 57, 59, 719, 63, 22, 59, 17, 73, 53, 59, - 62, 73, 59, 19, 123, 59, 133, 720, 133, 59, - 20, 53, 135, 123, 123, 91, 57, 22, 45, 89, - 65, 61, 57, 61, 45, 57, 53, 45, 135, 45, + 57, 59, 720, 63, 22, 59, 17, 73, 53, 59, + 62, 73, 59, 19, 124, 59, 134, 721, 134, 59, + 20, 53, 136, 124, 124, 92, 57, 22, 45, 90, + 65, 61, 57, 61, 45, 57, 53, 45, 136, 45, 65, 45, 65, 45, 61, 56, 67, 67, 45, 45, - 67, 45, 56, 91, 61, 89, 67, 45, 45, 45, + 67, 45, 56, 92, 61, 90, 67, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 60, 71, 56, 60, 60, 71, 56, 60, 60, 68, - 56, 69, 148, 68, 108, 71, 148, 68, 56, 90, - 60, 583, 56, 76, 56, 56, 157, 70, 583, 68, - 69, 92, 69, 68, 69, 70, 94, 70, 75, 75, - 74, 108, 70, 70, 74, 90, 76, 74, 75, 79, - 79, 79, 79, 79, 74, 74, 76, 92, 75, 74, - 74, 76, 79, 80, 94, 80, 80, 80, 80, 80, - - 164, 75, 157, 75, 164, 81, 75, 81, 80, 99, - 81, 81, 81, 81, 81, 79, 75, 83, 83, 83, - 83, 83, 82, 75, 82, 82, 82, 82, 82, 93, - 83, 80, 87, 87, 87, 87, 87, 82, 88, 88, - 88, 88, 88, 101, 103, 105, 99, 107, 109, 119, - 101, 110, 161, 83, 111, 93, 138, 115, 119, 138, - 82, 155, 119, 138, 167, 167, 180, 161, 161, 161, - 178, 105, 103, 172, 115, 107, 109, 111, 110, 163, - 101, 185, 163, 163, 101, 115, 168, 172, 101, 155, - 168, 155, 186, 180, 168, 721, 101, 187, 178, 188, - - 101, 196, 101, 101, 114, 166, 189, 190, 194, 185, - 197, 198, 114, 114, 114, 114, 114, 296, 186, 296, - 187, 114, 114, 114, 114, 114, 114, 188, 253, 196, - 190, 194, 189, 202, 198, 220, 200, 197, 220, 306, - 166, 166, 166, 208, 114, 114, 114, 114, 114, 114, - 245, 166, 265, 166, 281, 166, 166, 281, 166, 200, - 202, 206, 206, 206, 206, 206, 208, 245, 221, 268, - 206, 206, 206, 206, 206, 206, 221, 302, 308, 268, - 311, 253, 221, 316, 253, 318, 399, 320, 265, 315, - 722, 306, 327, 206, 206, 206, 206, 206, 206, 315, - - 302, 308, 265, 311, 349, 409, 363, 443, 318, 409, - 349, 363, 316, 383, 302, 320, 325, 325, 325, 325, - 325, 327, 723, 383, 724, 325, 325, 325, 325, 325, - 325, 375, 375, 418, 436, 443, 375, 418, 449, 436, - 449, 549, 483, 725, 399, 451, 470, 483, 325, 325, - 325, 325, 325, 325, 470, 578, 470, 470, 470, 363, - 470, 473, 577, 601, 363, 449, 601, 449, 450, 450, - 450, 450, 450, 451, 473, 504, 473, 450, 450, 450, - 450, 450, 450, 578, 689, 504, 579, 629, 629, 577, - 702, 579, 703, 549, 726, 689, 717, 717, 727, 717, - - 450, 450, 450, 450, 450, 450, 714, 728, 729, 730, - 731, 732, 714, 733, 734, 703, 735, 736, 702, 737, - 738, 739, 740, 737, 741, 742, 744, 737, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 762, 765, - 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 779, 780, 781, 782, 783, 784, 785, 786, 787, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 803, 804, 804, 805, 806, - 807, 802, 809, 808, 804, 810, 811, 813, 804, 808, - - 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, - 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, - 834, 835, 836, 837, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 825, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, - 864, 865, 866, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 873, 878, 879, 880, 881, 882, 883, - 886, 887, 888, 889, 890, 891, 894, 895, 896, 897, - 898, 900, 901, 902, 903, 904, 901, 905, 906, 907, - 908, 909, 912, 913, 914, 915, 916, 917, 918, 919, + 56, 69, 149, 68, 100, 71, 149, 68, 56, 91, + 60, 722, 56, 76, 56, 56, 109, 70, 78, 68, + 69, 93, 69, 68, 69, 70, 723, 70, 75, 75, + 74, 95, 70, 70, 74, 91, 76, 74, 75, 94, + 104, 100, 78, 109, 74, 74, 76, 93, 75, 74, + 74, 76, 78, 106, 80, 80, 80, 80, 80, 95, + + 271, 75, 724, 75, 108, 94, 75, 80, 104, 81, + 271, 81, 81, 81, 81, 81, 75, 110, 158, 106, + 82, 111, 82, 75, 81, 82, 82, 82, 82, 82, + 80, 83, 108, 83, 83, 83, 83, 83, 84, 84, + 84, 84, 84, 102, 112, 110, 83, 81, 111, 116, + 102, 84, 88, 88, 88, 88, 88, 89, 89, 89, + 89, 89, 120, 156, 158, 139, 116, 112, 139, 83, + 162, 120, 139, 189, 84, 120, 725, 116, 164, 165, + 102, 164, 164, 165, 102, 162, 162, 162, 102, 168, + 168, 156, 173, 156, 190, 193, 102, 197, 726, 189, + + 102, 177, 102, 102, 115, 167, 173, 182, 180, 188, + 191, 199, 115, 115, 115, 115, 115, 190, 193, 256, + 197, 115, 115, 115, 115, 115, 115, 169, 177, 201, + 200, 169, 728, 192, 182, 169, 180, 188, 191, 199, + 167, 167, 167, 203, 115, 115, 115, 115, 115, 115, + 205, 167, 201, 167, 224, 167, 167, 200, 167, 192, + 211, 223, 224, 299, 223, 299, 203, 248, 224, 268, + 284, 303, 256, 284, 310, 256, 303, 205, 209, 209, + 209, 209, 209, 211, 248, 306, 313, 209, 209, 209, + 209, 209, 209, 316, 320, 321, 332, 323, 368, 325, + + 354, 404, 557, 368, 320, 268, 354, 388, 306, 313, + 209, 209, 209, 209, 209, 209, 316, 388, 411, 268, + 323, 480, 306, 511, 321, 332, 310, 325, 330, 330, + 330, 330, 330, 511, 480, 716, 480, 330, 330, 330, + 330, 330, 330, 380, 380, 414, 423, 442, 380, 414, + 423, 368, 442, 450, 557, 456, 368, 456, 716, 404, + 330, 330, 330, 330, 330, 330, 477, 411, 490, 639, + 639, 729, 458, 490, 477, 587, 477, 477, 477, 588, + 477, 450, 456, 593, 456, 457, 457, 457, 457, 457, + 593, 731, 700, 732, 457, 457, 457, 457, 457, 457, + + 458, 589, 587, 700, 715, 611, 589, 588, 611, 727, + 730, 730, 733, 730, 734, 727, 735, 457, 457, 457, + 457, 457, 457, 736, 737, 738, 739, 740, 741, 742, + 743, 744, 715, 745, 746, 747, 748, 749, 750, 751, + 752, 753, 750, 754, 755, 757, 750, 758, 759, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 771, 772, 773, 774, 775, 776, 777, 775, 778, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, + 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, + + 812, 813, 814, 815, 816, 817, 818, 818, 819, 820, + 821, 816, 823, 822, 818, 824, 825, 827, 818, 822, + 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, + 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, + 848, 849, 850, 851, 852, 853, 855, 856, 857, 858, + 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, + 869, 841, 870, 871, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 884, 885, 886, 887, 888, + 889, 890, 891, 892, 893, 889, 894, 895, 896, 897, + 898, 899, 902, 903, 904, 905, 906, 907, 910, 911, + + 912, 913, 914, 916, 917, 918, 919, 920, 917, 921, + 922, 923, 924, 925, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, + 954, 955, 956, 957, 958, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 996, 973, 997, 998, 972, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, + + 1015, 1016, 1017, 1018, 1020, 1021, 1022, 1023, 1024, 1025, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, + 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, + 1047, 1048, 1049, 1050, 1051, 1053, 1054, 1055, 1056, 1057, + 1059, 1060, 1048, 1061, 1062, 1063, 1064, 1065, 1066, 1067, + 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1078, + 1079, 1080, 1081, 1082, 1083, 1023, 1084, 1085, 1086, 1087, + 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1098, + 1097, 1099, 1100, 1101, 1102, 1103, 1105, 1106, 1107, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, - 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, - 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, - 940, 941, 943, 944, 945, 946, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, - 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, - 972, 973, 974, 975, 976, 977, 954, 978, 979, 953, - 980, 981, 982, 983, 984, 985, 986, 988, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1001, - 1002, 1003, 1004, 1005, 1006, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - - 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, - 1034, 1035, 1036, 1037, 1039, 1040, 1041, 1029, 1042, 1043, - 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, - 1054, 1055, 1056, 1058, 1059, 1060, 1061, 1062, 1063, 1064, - 1004, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, - 1074, 1076, 1075, 1077, 1078, 1079, 1080, 1081, 1083, 1084, - 1085, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, - 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1104, 1074, 1075, - 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, - 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1123, 1124, 1125, - - 1126, 1127, 1123, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, - 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, - 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, - 1167, 1168, 1124, 1169, 1171, 1172, 1173, 1174, 1175, 1176, - 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, - 1187, 1188, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1208, 1209, - 1210, 1211, 1212, 1213, 1214, 1190, 1216, 1217, 1218, 1219, - 1220, 1191, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, - - 1229, 1230, 1231, 1232, 1233, 1236, 1238, 1239, 1240, 1241, - 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, - 1253, 1254, 1255, 1256, 1258, 1259, 1260, 1261, 1262, 1263, - 1265, 1267, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1280, 1281, 1282, 1284, 1285, 1286, 1287, - 1288, 1289, 1290, 1293, 1294, 1295, 1296, 1297, 1298, 1299, - 1300, 1301, 1303, 1304, 1305, 1306, 1307, 1309, 1310, 1311, - 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1300, 1330, - 1331, 1333, 1276, 1334, 1335, 1336, 1337, 1338, 1339, 1340, - - 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, - 1351, 1309, 1352, 1353, 1354, 1355, 1356, 1350, 1358, 1361, - 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, - 1373, 1374, 1375, 1376, 1377, 1378, 1381, 1380, 1376, 1380, - 1383, 1384, 1387, 1388, 1389, 1390, 1391, 1392, 1394, 1395, - 1396, 1397, 1399, 1400, 1401, 1396, 1402, 1403, 1405, 1406, - 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, - 1417, 1418, 1419, 1420, 1397, 1421, 1423, 1424, 1425, 1427, - 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1438, - 1440, 1441, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, - - 1451, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1462, - 1463, 1465, 1466, 1467, 1469, 1470, 1469, 1471, 1472, 1469, - 1473, 1474, 1469, 1475, 1476, 1477, 1478, 1479, 1480, 1482, - 1484, 1486, 1487, 1489, 1491, 1492, 1493, 1495, 1496, 1497, - 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, - 1508, 1509, 1510, 1511, 1501, 1512, 1513, 1514, 1515, 1487, - 1516, 1517, 1518, 1519, 1520, 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, 1554, 1555, - - 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, - 1566, 1568, 1569, 1572, 1573, 1574, 1576, 1577, 1578, 1579, - 1580, 1581, 1582, 1583, 1521, 1584, 1585, 1586, 1587, 1589, - 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1566, 1600, - 1601, 1602, 1604, 1605, 1607, 1608, 1609, 1611, 1612, 1613, - 1614, 1615, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, - 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, - 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1643, 1644, 1646, - 1647, 1648, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1668, - - 1669, 1670, 1672, 1673, 1674, 1676, 1677, 1678, 1679, 1680, - 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, - 1692, 1693, 1694, 1695, 1696, 1697, 1699, 1700, 1702, 1704, - 1706, 1707, 1708, 1702, 1711, 1713, 1714, 1715, 1716, 1717, - 1718, 1719, 1720, 1721, 1722, 1723, 1725, 1726, 1727, 1728, - 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1739, 1740, - 1741, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, - 1752, 1754, 1755, 1756, 1757, 1758, 1760, 1761, 1762, 1763, - 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1774, 1775, - 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1787, - - 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1797, 1799, - 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, - 1810, 1811, 1809, 1812, 1813, 1814, 1815, 1816, 1817, 1818, - 1819, 1820, 1821, 1822, 1824, 1825, 1826, 1827, 1828, 1829, - 1830, 1831, 1832, 1834, 1838, 1840, 1841, 1842, 1843, 1844, - 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, - 1855, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, - 1866, 1867, 1868, 1869, 1871, 1872, 1873, 1874, 1876, 1878, - 1881, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1892, - 1893, 1894, 1895, 1896, 1897, 1898, 1900, 1901, 1902, 1903, - - 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, - 1914, 1915, 1917, 1918, 1919, 1920, 1921, 1922, 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, 1950, 1951, 1953, 1954, 1955, 1956, 1958, - 1959, 1960, 1961, 1965, 1968, 1969, 1970, 1971, 1972, 1973, - 1974, 1975, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, - 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1995, 1997, 1998, - 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2007, - 2009, 2010, 2012, 2013, 2016, 2017, 2018, 2019, 2020, 2021, - - 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2032, - 2033, 2034, 2035, 2038, 2039, 2040, 2042, 2043, 2045, 2047, - 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2056, 2061, 2061, - 2061, 2062, 2062, 2062, 2063, 2064, 2063, 2065, 2065, 2065, - 2066, 2066, 2066, 2067, 716, 2067, 2068, 2068, 2068, 715, - 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, - 700, 699, 697, 696, 695, 694, 693, 692, 691, 690, - 688, 687, 686, 684, 683, 682, 681, 680, 679, 678, - 677, 676, 675, 674, 673, 672, 670, 669, 668, 667, - 666, 665, 664, 663, 662, 660, 659, 658, 657, 656, - - 655, 654, 652, 651, 650, 649, 648, 647, 646, 645, - 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, - 633, 632, 631, 630, 628, 627, 626, 625, 624, 623, - 622, 621, 620, 619, 618, 617, 616, 614, 613, 612, - 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, - 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, - 590, 589, 588, 587, 586, 585, 584, 582, 581, 573, - 572, 571, 570, 569, 568, 566, 565, 563, 562, 560, - 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, - 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, - - 538, 537, 536, 535, 534, 533, 532, 530, 528, 527, - 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, - 516, 515, 514, 513, 511, 510, 509, 508, 507, 506, - 505, 503, 502, 501, 500, 499, 498, 497, 496, 495, - 494, 493, 492, 491, 490, 489, 487, 486, 485, 484, - 482, 481, 480, 479, 478, 477, 475, 474, 472, 471, - 468, 467, 466, 465, 464, 463, 461, 460, 459, 458, - 457, 456, 455, 454, 453, 452, 447, 445, 444, 442, - 441, 440, 437, 435, 434, 432, 431, 430, 429, 428, - 427, 426, 425, 424, 423, 422, 421, 420, 419, 417, - - 416, 415, 414, 413, 412, 411, 410, 408, 407, 406, - 405, 403, 402, 401, 400, 398, 397, 396, 395, 394, - 393, 392, 391, 390, 389, 388, 387, 386, 384, 382, - 381, 380, 379, 378, 377, 376, 374, 373, 372, 371, - 370, 369, 368, 367, 366, 365, 364, 362, 361, 360, - 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, - 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, - 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, - 328, 324, 322, 319, 317, 314, 307, 305, 304, 303, - 301, 300, 299, 298, 297, 295, 294, 293, 292, 291, - - 290, 289, 288, 287, 286, 285, 284, 283, 282, 280, - 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, - 269, 267, 266, 264, 263, 262, 261, 260, 259, 258, - 257, 256, 255, 254, 252, 251, 250, 249, 248, 247, - 246, 244, 242, 241, 240, 239, 238, 237, 236, 235, - 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, - 224, 223, 222, 219, 218, 217, 216, 215, 214, 213, - 212, 211, 210, 209, 207, 203, 201, 199, 195, 193, - 191, 183, 182, 181, 179, 177, 176, 175, 174, 173, - 171, 170, 169, 165, 162, 160, 159, 158, 156, 154, - - 153, 152, 151, 150, 149, 147, 146, 145, 143, 142, - 141, 140, 139, 137, 136, 134, 132, 131, 130, 129, - 128, 126, 125, 124, 122, 120, 118, 117, 116, 112, - 104, 102, 97, 96, 77, 72, 66, 58, 49, 47, - 43, 41, 39, 38, 24, 14, 11, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060 + 1120, 1121, 1122, 1123, 1124, 1126, 1096, 1097, 1127, 1128, + 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, + 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, 1148, 1149, + 1145, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, + 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, + 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1178, 1179, + 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1190, + 1146, 1191, 1192, 1194, 1195, 1196, 1197, 1198, 1199, 1200, + 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, + 1211, 1212, 1213, 1215, 1216, 1217, 1218, 1219, 1220, 1221, + + 1222, 1223, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1215, 1241, 1242, 1243, + 1244, 1245, 1216, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1253, 1254, 1255, 1256, 1257, 1258, 1261, 1263, 1264, 1265, + 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, + 1276, 1278, 1279, 1280, 1281, 1283, 1284, 1285, 1286, 1287, + 1288, 1290, 1292, 1294, 1295, 1296, 1297, 1298, 1299, 1300, + 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1310, 1311, + 1312, 1313, 1314, 1315, 1316, 1319, 1320, 1321, 1322, 1323, + 1324, 1325, 1326, 1327, 1328, 1329, 1331, 1332, 1333, 1334, + + 1335, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, + 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, + 1356, 1357, 1328, 1358, 1302, 1359, 1361, 1362, 1363, 1364, + 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, + 1375, 1376, 1377, 1378, 1379, 1337, 1380, 1381, 1382, 1383, + 1384, 1378, 1386, 1389, 1390, 1391, 1392, 1393, 1394, 1395, + 1396, 1397, 1398, 1399, 1400, 1402, 1403, 1404, 1405, 1406, + 1407, 1410, 1409, 1405, 1409, 1412, 1413, 1416, 1417, 1418, + 1419, 1420, 1421, 1422, 1424, 1425, 1426, 1427, 1428, 1430, + 1431, 1432, 1427, 1433, 1434, 1436, 1437, 1438, 1439, 1440, + + 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, + 1451, 1428, 1452, 1454, 1455, 1456, 1458, 1459, 1460, 1461, + 1462, 1463, 1464, 1465, 1466, 1467, 1469, 1471, 1472, 1474, + 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1484, 1485, + 1486, 1487, 1488, 1489, 1490, 1491, 1494, 1495, 1497, 1498, + 1499, 1501, 1502, 1501, 1503, 1504, 1501, 1505, 1506, 1501, + 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1515, 1517, 1518, + 1520, 1521, 1523, 1525, 1526, 1527, 1529, 1530, 1531, 1532, + 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, + 1543, 1544, 1545, 1535, 1546, 1547, 1548, 1549, 1521, 1550, + + 1551, 1552, 1553, 1554, 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, 1588, 1589, 1590, + 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1601, + 1602, 1604, 1605, 1608, 1609, 1610, 1612, 1613, 1614, 1615, + 1616, 1617, 1618, 1555, 1619, 1620, 1621, 1622, 1623, 1625, + 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1602, 1636, + 1637, 1638, 1640, 1641, 1643, 1644, 1645, 1647, 1648, 1649, + 1650, 1651, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, + + 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, + 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1680, 1681, + 1683, 1684, 1685, 1687, 1688, 1689, 1690, 1691, 1692, 1693, + 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, + 1705, 1706, 1707, 1709, 1710, 1711, 1713, 1714, 1715, 1716, + 1717, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, + 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1736, 1737, 1739, + 1741, 1743, 1744, 1745, 1739, 1746, 1749, 1751, 1752, 1753, + 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1763, 1764, + 1765, 1766, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, + + 1777, 1778, 1779, 1781, 1782, 1783, 1784, 1785, 1786, 1787, + 1788, 1789, 1790, 1792, 1793, 1794, 1795, 1796, 1798, 1799, + 1800, 1801, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, + 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, + 1823, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, + 1836, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, + 1847, 1848, 1849, 1850, 1848, 1851, 1852, 1853, 1854, 1855, + 1856, 1857, 1858, 1859, 1860, 1861, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1873, 1877, 1879, 1880, 1881, + 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, + + 1892, 1893, 1894, 1896, 1897, 1898, 1899, 1900, 1901, 1902, + 1903, 1904, 1905, 1906, 1907, 1908, 1910, 1911, 1912, 1913, + 1915, 1917, 1920, 1922, 1923, 1924, 1925, 1926, 1927, 1928, + 1929, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1939, 1940, + 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, + 1951, 1952, 1953, 1954, 1956, 1957, 1958, 1959, 1960, 1961, + 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, 1989, 1990, 1992, 1993, 1994, + 1995, 1997, 1998, 1999, 2000, 2004, 2007, 2008, 2009, 2010, + + 2011, 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021, + 2022, 2023, 2025, 2026, 2027, 2028, 2029, 2030, 2032, 2034, + 2036, 2037, 2038, 2039, 2040, 2041, 2043, 2044, 2045, 2046, + 2047, 2046, 2048, 2049, 2051, 2052, 2055, 2056, 2057, 2058, + 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, + 2069, 2071, 2072, 2073, 2074, 2077, 2078, 2079, 2081, 2082, + 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2095, + 2100, 2100, 2100, 2101, 2101, 2101, 2102, 2103, 2102, 2104, + 2104, 2104, 2105, 2105, 2105, 2106, 719, 2106, 2107, 2107, + 2107, 718, 717, 713, 712, 710, 709, 708, 707, 706, + + 705, 704, 703, 702, 701, 699, 698, 697, 695, 694, + 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, + 683, 681, 680, 679, 678, 677, 676, 675, 674, 673, + 672, 670, 669, 668, 667, 666, 665, 664, 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, 633, 632, 631, 630, 629, + 628, 627, 626, 624, 623, 622, 621, 620, 619, 618, + 617, 616, 615, 614, 613, 612, 610, 609, 608, 607, + 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, + + 596, 595, 594, 592, 591, 583, 582, 581, 580, 579, + 578, 577, 575, 574, 572, 571, 569, 568, 567, 566, + 565, 564, 563, 562, 561, 560, 559, 558, 556, 555, + 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, + 544, 543, 542, 541, 540, 539, 537, 535, 534, 533, + 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, + 522, 521, 520, 518, 517, 516, 515, 514, 513, 512, + 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, + 500, 499, 498, 497, 496, 494, 493, 492, 491, 489, + 488, 487, 486, 485, 484, 482, 481, 479, 478, 475, + + 474, 473, 472, 471, 470, 468, 467, 466, 465, 464, + 463, 462, 461, 460, 459, 454, 452, 451, 449, 448, + 447, 444, 443, 441, 440, 438, 437, 436, 435, 434, + 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, + 422, 421, 420, 419, 418, 417, 416, 415, 413, 412, + 410, 408, 407, 406, 405, 403, 402, 401, 400, 399, + 398, 397, 396, 395, 394, 393, 392, 391, 389, 387, + 386, 385, 384, 383, 382, 381, 379, 378, 377, 376, + 375, 374, 373, 372, 371, 370, 369, 367, 366, 365, + 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, + + 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, + 343, 342, 341, 340, 339, 338, 337, 336, 335, 334, + 333, 329, 327, 324, 322, 319, 312, 311, 309, 308, + 307, 305, 304, 302, 301, 300, 298, 297, 296, 295, + 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, + 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, + 273, 272, 270, 269, 267, 266, 265, 264, 263, 262, + 261, 260, 259, 258, 257, 255, 254, 253, 252, 251, + 250, 249, 247, 245, 244, 243, 242, 241, 240, 239, + 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, + + 228, 227, 226, 225, 222, 221, 220, 219, 218, 217, + 216, 215, 214, 213, 212, 210, 206, 204, 202, 198, + 196, 194, 186, 185, 184, 183, 181, 179, 178, 176, + 175, 174, 172, 171, 170, 166, 163, 161, 160, 159, + 157, 155, 154, 153, 152, 151, 150, 148, 147, 146, + 144, 143, 142, 141, 140, 138, 137, 135, 133, 132, + 131, 130, 129, 127, 126, 125, 123, 121, 119, 118, + 117, 113, 105, 103, 98, 97, 77, 72, 66, 58, + 49, 47, 43, 41, 39, 38, 24, 14, 11, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099 } ; static yy_state_type yy_last_accepting_state; @@ -2006,32 +2029,32 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[214] = +static const flex_int16_t yy_rule_linenum[217] = { 0, 146, 148, 150, 155, 156, 161, 162, 163, 175, 178, 183, 190, 199, 208, 217, 226, 235, 244, 254, 263, 272, 281, 290, 299, 308, 317, 326, 335, 344, 353, 362, 371, 380, 389, 401, 410, 419, 428, 439, 450, - 461, 472, 483, 494, 505, 516, 527, 536, 545, 554, - 565, 574, 585, 596, 607, 618, 630, 642, 654, 665, - 676, 685, 694, 703, 712, 721, 732, 743, 754, 765, - 776, 787, 798, 809, 819, 830, 839, 849, 863, 879, - 888, 897, 906, 915, 937, 959, 968, 978, 987, 998, - 1007, 1016, 1025, 1034, 1043, 1054, 1065, 1076, 1086, 1095, - - 1106, 1117, 1128, 1139, 1151, 1160, 1169, 1178, 1187, 1196, - 1205, 1214, 1223, 1232, 1242, 1253, 1265, 1274, 1283, 1293, - 1303, 1313, 1323, 1333, 1343, 1352, 1362, 1371, 1380, 1389, - 1398, 1408, 1418, 1427, 1437, 1446, 1455, 1464, 1473, 1482, - 1491, 1500, 1509, 1518, 1527, 1536, 1545, 1554, 1563, 1572, - 1581, 1590, 1599, 1608, 1617, 1626, 1635, 1644, 1653, 1662, - 1671, 1680, 1689, 1698, 1707, 1716, 1725, 1734, 1743, 1752, - 1764, 1776, 1786, 1796, 1806, 1816, 1826, 1836, 1846, 1856, - 1866, 1875, 1884, 1893, 1902, 1913, 1924, 1937, 1950, 1963, - 1972, 1981, 1990, 1999, 2008, 2109, 2125, 2174, 2182, 2197, - - 2198, 2199, 2200, 2201, 2202, 2204, 2222, 2235, 2240, 2244, - 2246, 2248, 2250 + 461, 472, 483, 494, 505, 516, 527, 538, 549, 560, + 569, 578, 587, 598, 607, 618, 629, 640, 651, 663, + 675, 687, 698, 709, 718, 727, 736, 745, 754, 765, + 776, 787, 798, 809, 820, 831, 842, 852, 863, 872, + 882, 896, 912, 921, 930, 939, 948, 970, 992, 1001, + 1011, 1020, 1031, 1040, 1049, 1058, 1067, 1076, 1087, 1098, + + 1109, 1119, 1128, 1139, 1150, 1161, 1172, 1184, 1193, 1202, + 1211, 1220, 1229, 1238, 1247, 1256, 1265, 1275, 1286, 1298, + 1307, 1316, 1326, 1336, 1346, 1356, 1366, 1376, 1385, 1395, + 1404, 1413, 1422, 1431, 1441, 1451, 1460, 1470, 1479, 1488, + 1497, 1506, 1515, 1524, 1533, 1542, 1551, 1560, 1569, 1578, + 1587, 1596, 1605, 1614, 1623, 1632, 1641, 1650, 1659, 1668, + 1677, 1686, 1695, 1704, 1713, 1722, 1731, 1740, 1749, 1758, + 1767, 1776, 1785, 1797, 1809, 1819, 1829, 1839, 1849, 1859, + 1869, 1879, 1889, 1899, 1908, 1917, 1926, 1935, 1946, 1957, + 1970, 1983, 1996, 2005, 2014, 2023, 2032, 2041, 2142, 2158, + + 2207, 2215, 2230, 2231, 2232, 2233, 2234, 2235, 2237, 2255, + 2268, 2273, 2277, 2279, 2281, 2283 } ; /* The intent behind this definition is that it'll catch @@ -2085,7 +2108,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 2088 "dhcp4_lexer.cc" +#line 2111 "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 @@ -2111,8 +2134,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 2114 "dhcp4_lexer.cc" -#line 2115 "dhcp4_lexer.cc" +#line 2137 "dhcp4_lexer.cc" +#line 2138 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2440,7 +2463,7 @@ YY_DECL } -#line 2443 "dhcp4_lexer.cc" +#line 2466 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2469,13 +2492,13 @@ YY_DECL 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 >= 2061 ) + if ( yy_current_state >= 2100 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 2060 ); + while ( yy_current_state != 2099 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2494,13 +2517,13 @@ YY_DECL { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 214 ) + else if ( yy_act < 217 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 214 ) + else if ( yy_act == 217 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 215 ) + else if ( yy_act == 218 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -3026,9 +3049,9 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::LEASE_DATABASE: case isc::dhcp::Parser4Context::HOSTS_DATABASE: case isc::dhcp::Parser4Context::CONFIG_DATABASE: - return isc::dhcp::Dhcp4Parser::make_RECONNECT_WAIT_TIME(driver.loc_); + return isc::dhcp::Dhcp4Parser::make_READ_TIMEOUT(driver.loc_); default: - return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_); + return isc::dhcp::Dhcp4Parser::make_STRING("read-timeout", driver.loc_); } } YY_BREAK @@ -3040,15 +3063,57 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::LEASE_DATABASE: case isc::dhcp::Parser4Context::HOSTS_DATABASE: case isc::dhcp::Parser4Context::CONFIG_DATABASE: - return isc::dhcp::Dhcp4Parser::make_ON_FAIL(driver.loc_); + return isc::dhcp::Dhcp4Parser::make_WRITE_TIMEOUT(driver.loc_); default: - return isc::dhcp::Dhcp4Parser::make_STRING("on-fail", driver.loc_); + return isc::dhcp::Dhcp4Parser::make_STRING("write-timeout", driver.loc_); } } YY_BREAK case 47: YY_RULE_SETUP #line 527 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::LEASE_DATABASE: + case isc::dhcp::Parser4Context::HOSTS_DATABASE: + case isc::dhcp::Parser4Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp4Parser::make_TCP_USER_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("tcp-user-timeout", driver.loc_); + } +} + YY_BREAK +case 48: +YY_RULE_SETUP +#line 538 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::LEASE_DATABASE: + case isc::dhcp::Parser4Context::HOSTS_DATABASE: + case isc::dhcp::Parser4Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp4Parser::make_RECONNECT_WAIT_TIME(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_); + } +} + YY_BREAK +case 49: +YY_RULE_SETUP +#line 549 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::LEASE_DATABASE: + case isc::dhcp::Parser4Context::HOSTS_DATABASE: + case isc::dhcp::Parser4Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp4Parser::make_ON_FAIL(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("on-fail", driver.loc_); + } +} + YY_BREAK +case 50: +YY_RULE_SETUP +#line 560 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_ON_FAIL: @@ -3058,9 +3123,9 @@ YY_RULE_SETUP } } YY_BREAK -case 48: +case 51: YY_RULE_SETUP -#line 536 "dhcp4_lexer.ll" +#line 569 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_ON_FAIL: @@ -3070,9 +3135,9 @@ YY_RULE_SETUP } } YY_BREAK -case 49: +case 52: YY_RULE_SETUP -#line 545 "dhcp4_lexer.ll" +#line 578 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_ON_FAIL: @@ -3082,9 +3147,9 @@ YY_RULE_SETUP } } YY_BREAK -case 50: +case 53: YY_RULE_SETUP -#line 554 "dhcp4_lexer.ll" +#line 587 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3096,9 +3161,9 @@ YY_RULE_SETUP } } YY_BREAK -case 51: +case 54: YY_RULE_SETUP -#line 565 "dhcp4_lexer.ll" +#line 598 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3108,9 +3173,9 @@ YY_RULE_SETUP } } YY_BREAK -case 52: +case 55: YY_RULE_SETUP -#line 574 "dhcp4_lexer.ll" +#line 607 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3122,9 +3187,9 @@ YY_RULE_SETUP } } YY_BREAK -case 53: +case 56: YY_RULE_SETUP -#line 585 "dhcp4_lexer.ll" +#line 618 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3136,9 +3201,9 @@ YY_RULE_SETUP } } YY_BREAK -case 54: +case 57: YY_RULE_SETUP -#line 596 "dhcp4_lexer.ll" +#line 629 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3150,9 +3215,9 @@ YY_RULE_SETUP } } YY_BREAK -case 55: +case 58: YY_RULE_SETUP -#line 607 "dhcp4_lexer.ll" +#line 640 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3164,9 +3229,9 @@ YY_RULE_SETUP } } YY_BREAK -case 56: +case 59: YY_RULE_SETUP -#line 618 "dhcp4_lexer.ll" +#line 651 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3179,9 +3244,9 @@ YY_RULE_SETUP } } YY_BREAK -case 57: +case 60: YY_RULE_SETUP -#line 630 "dhcp4_lexer.ll" +#line 663 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3194,9 +3259,9 @@ YY_RULE_SETUP } } YY_BREAK -case 58: +case 61: YY_RULE_SETUP -#line 642 "dhcp4_lexer.ll" +#line 675 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3209,9 +3274,9 @@ YY_RULE_SETUP } } YY_BREAK -case 59: +case 62: YY_RULE_SETUP -#line 654 "dhcp4_lexer.ll" +#line 687 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3223,9 +3288,9 @@ YY_RULE_SETUP } } YY_BREAK -case 60: +case 63: YY_RULE_SETUP -#line 665 "dhcp4_lexer.ll" +#line 698 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3237,9 +3302,9 @@ YY_RULE_SETUP } } YY_BREAK -case 61: +case 64: YY_RULE_SETUP -#line 676 "dhcp4_lexer.ll" +#line 709 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3249,9 +3314,9 @@ YY_RULE_SETUP } } YY_BREAK -case 62: +case 65: YY_RULE_SETUP -#line 685 "dhcp4_lexer.ll" +#line 718 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3261,9 +3326,9 @@ YY_RULE_SETUP } } YY_BREAK -case 63: +case 66: YY_RULE_SETUP -#line 694 "dhcp4_lexer.ll" +#line 727 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3273,9 +3338,9 @@ YY_RULE_SETUP } } YY_BREAK -case 64: +case 67: YY_RULE_SETUP -#line 703 "dhcp4_lexer.ll" +#line 736 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3285,9 +3350,9 @@ YY_RULE_SETUP } } YY_BREAK -case 65: +case 68: YY_RULE_SETUP -#line 712 "dhcp4_lexer.ll" +#line 745 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3297,9 +3362,9 @@ YY_RULE_SETUP } } YY_BREAK -case 66: +case 69: YY_RULE_SETUP -#line 721 "dhcp4_lexer.ll" +#line 754 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3311,9 +3376,9 @@ YY_RULE_SETUP } } YY_BREAK -case 67: +case 70: YY_RULE_SETUP -#line 732 "dhcp4_lexer.ll" +#line 765 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3325,9 +3390,9 @@ YY_RULE_SETUP } } YY_BREAK -case 68: +case 71: YY_RULE_SETUP -#line 743 "dhcp4_lexer.ll" +#line 776 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3339,9 +3404,9 @@ YY_RULE_SETUP } } YY_BREAK -case 69: +case 72: YY_RULE_SETUP -#line 754 "dhcp4_lexer.ll" +#line 787 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3353,9 +3418,9 @@ YY_RULE_SETUP } } YY_BREAK -case 70: +case 73: YY_RULE_SETUP -#line 765 "dhcp4_lexer.ll" +#line 798 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3367,9 +3432,9 @@ YY_RULE_SETUP } } YY_BREAK -case 71: +case 74: YY_RULE_SETUP -#line 776 "dhcp4_lexer.ll" +#line 809 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3381,9 +3446,9 @@ YY_RULE_SETUP } } YY_BREAK -case 72: +case 75: YY_RULE_SETUP -#line 787 "dhcp4_lexer.ll" +#line 820 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3395,9 +3460,9 @@ YY_RULE_SETUP } } YY_BREAK -case 73: +case 76: YY_RULE_SETUP -#line 798 "dhcp4_lexer.ll" +#line 831 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3409,9 +3474,9 @@ YY_RULE_SETUP } } YY_BREAK -case 74: +case 77: YY_RULE_SETUP -#line 809 "dhcp4_lexer.ll" +#line 842 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3422,9 +3487,9 @@ YY_RULE_SETUP } } YY_BREAK -case 75: +case 78: YY_RULE_SETUP -#line 819 "dhcp4_lexer.ll" +#line 852 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3436,9 +3501,9 @@ YY_RULE_SETUP } } YY_BREAK -case 76: +case 79: YY_RULE_SETUP -#line 830 "dhcp4_lexer.ll" +#line 863 "dhcp4_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3448,9 +3513,9 @@ YY_RULE_SETUP } } YY_BREAK -case 77: +case 80: YY_RULE_SETUP -#line 839 "dhcp4_lexer.ll" +#line 872 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3461,9 +3526,9 @@ YY_RULE_SETUP } } YY_BREAK -case 78: +case 81: YY_RULE_SETUP -#line 849 "dhcp4_lexer.ll" +#line 882 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3478,9 +3543,9 @@ YY_RULE_SETUP } } YY_BREAK -case 79: +case 82: YY_RULE_SETUP -#line 863 "dhcp4_lexer.ll" +#line 896 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3497,9 +3562,9 @@ YY_RULE_SETUP } } YY_BREAK -case 80: +case 83: YY_RULE_SETUP -#line 879 "dhcp4_lexer.ll" +#line 912 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3509,9 +3574,9 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 84: YY_RULE_SETUP -#line 888 "dhcp4_lexer.ll" +#line 921 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3521,9 +3586,9 @@ YY_RULE_SETUP } } YY_BREAK -case 82: +case 85: YY_RULE_SETUP -#line 897 "dhcp4_lexer.ll" +#line 930 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3533,9 +3598,9 @@ YY_RULE_SETUP } } YY_BREAK -case 83: +case 86: YY_RULE_SETUP -#line 906 "dhcp4_lexer.ll" +#line 939 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::POOLS: @@ -3545,9 +3610,9 @@ YY_RULE_SETUP } } YY_BREAK -case 84: +case 87: YY_RULE_SETUP -#line 915 "dhcp4_lexer.ll" +#line 948 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3570,9 +3635,9 @@ YY_RULE_SETUP } } YY_BREAK -case 85: +case 88: YY_RULE_SETUP -#line 937 "dhcp4_lexer.ll" +#line 970 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3595,9 +3660,9 @@ YY_RULE_SETUP } } YY_BREAK -case 86: +case 89: YY_RULE_SETUP -#line 959 "dhcp4_lexer.ll" +#line 992 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3607,9 +3672,9 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 90: YY_RULE_SETUP -#line 968 "dhcp4_lexer.ll" +#line 1001 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3620,9 +3685,9 @@ YY_RULE_SETUP } } YY_BREAK -case 88: +case 91: YY_RULE_SETUP -#line 978 "dhcp4_lexer.ll" +#line 1011 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3632,9 +3697,9 @@ YY_RULE_SETUP } } YY_BREAK -case 89: +case 92: YY_RULE_SETUP -#line 987 "dhcp4_lexer.ll" +#line 1020 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3646,9 +3711,9 @@ YY_RULE_SETUP } } YY_BREAK -case 90: +case 93: YY_RULE_SETUP -#line 998 "dhcp4_lexer.ll" +#line 1031 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3658,9 +3723,9 @@ YY_RULE_SETUP } } YY_BREAK -case 91: +case 94: YY_RULE_SETUP -#line 1007 "dhcp4_lexer.ll" +#line 1040 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3670,9 +3735,9 @@ YY_RULE_SETUP } } YY_BREAK -case 92: +case 95: YY_RULE_SETUP -#line 1016 "dhcp4_lexer.ll" +#line 1049 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3682,9 +3747,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 96: YY_RULE_SETUP -#line 1025 "dhcp4_lexer.ll" +#line 1058 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3694,9 +3759,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 97: YY_RULE_SETUP -#line 1034 "dhcp4_lexer.ll" +#line 1067 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3706,9 +3771,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 98: YY_RULE_SETUP -#line 1043 "dhcp4_lexer.ll" +#line 1076 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3720,9 +3785,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 99: YY_RULE_SETUP -#line 1054 "dhcp4_lexer.ll" +#line 1087 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3734,9 +3799,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 100: YY_RULE_SETUP -#line 1065 "dhcp4_lexer.ll" +#line 1098 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3748,9 +3813,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 101: YY_RULE_SETUP -#line 1076 "dhcp4_lexer.ll" +#line 1109 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3761,9 +3826,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 102: YY_RULE_SETUP -#line 1086 "dhcp4_lexer.ll" +#line 1119 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3773,9 +3838,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 103: YY_RULE_SETUP -#line 1095 "dhcp4_lexer.ll" +#line 1128 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3787,9 +3852,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 104: YY_RULE_SETUP -#line 1106 "dhcp4_lexer.ll" +#line 1139 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3801,9 +3866,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 105: YY_RULE_SETUP -#line 1117 "dhcp4_lexer.ll" +#line 1150 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3815,9 +3880,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 106: YY_RULE_SETUP -#line 1128 "dhcp4_lexer.ll" +#line 1161 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3829,9 +3894,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 107: YY_RULE_SETUP -#line 1139 "dhcp4_lexer.ll" +#line 1172 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3843,9 +3908,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 108: YY_RULE_SETUP -#line 1151 "dhcp4_lexer.ll" +#line 1184 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3855,9 +3920,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 109: YY_RULE_SETUP -#line 1160 "dhcp4_lexer.ll" +#line 1193 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3867,9 +3932,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 110: YY_RULE_SETUP -#line 1169 "dhcp4_lexer.ll" +#line 1202 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3879,9 +3944,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 111: YY_RULE_SETUP -#line 1178 "dhcp4_lexer.ll" +#line 1211 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3891,9 +3956,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 112: YY_RULE_SETUP -#line 1187 "dhcp4_lexer.ll" +#line 1220 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3903,9 +3968,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 113: YY_RULE_SETUP -#line 1196 "dhcp4_lexer.ll" +#line 1229 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3915,9 +3980,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 114: YY_RULE_SETUP -#line 1205 "dhcp4_lexer.ll" +#line 1238 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3927,9 +3992,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 115: YY_RULE_SETUP -#line 1214 "dhcp4_lexer.ll" +#line 1247 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3939,9 +4004,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 116: YY_RULE_SETUP -#line 1223 "dhcp4_lexer.ll" +#line 1256 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3951,9 +4016,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 117: YY_RULE_SETUP -#line 1232 "dhcp4_lexer.ll" +#line 1265 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3964,9 +4029,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 118: YY_RULE_SETUP -#line 1242 "dhcp4_lexer.ll" +#line 1275 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3978,9 +4043,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 119: YY_RULE_SETUP -#line 1253 "dhcp4_lexer.ll" +#line 1286 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3993,9 +4058,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 120: YY_RULE_SETUP -#line 1265 "dhcp4_lexer.ll" +#line 1298 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4005,9 +4070,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 121: YY_RULE_SETUP -#line 1274 "dhcp4_lexer.ll" +#line 1307 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4017,9 +4082,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 122: YY_RULE_SETUP -#line 1283 "dhcp4_lexer.ll" +#line 1316 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4030,9 +4095,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 123: YY_RULE_SETUP -#line 1293 "dhcp4_lexer.ll" +#line 1326 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4043,9 +4108,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 124: YY_RULE_SETUP -#line 1303 "dhcp4_lexer.ll" +#line 1336 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4056,9 +4121,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 125: YY_RULE_SETUP -#line 1313 "dhcp4_lexer.ll" +#line 1346 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4069,9 +4134,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 126: YY_RULE_SETUP -#line 1323 "dhcp4_lexer.ll" +#line 1356 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4082,9 +4147,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 127: YY_RULE_SETUP -#line 1333 "dhcp4_lexer.ll" +#line 1366 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4095,9 +4160,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 128: YY_RULE_SETUP -#line 1343 "dhcp4_lexer.ll" +#line 1376 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATIONS: @@ -4107,9 +4172,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 129: YY_RULE_SETUP -#line 1352 "dhcp4_lexer.ll" +#line 1385 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4120,9 +4185,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 130: YY_RULE_SETUP -#line 1362 "dhcp4_lexer.ll" +#line 1395 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -4132,9 +4197,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 131: YY_RULE_SETUP -#line 1371 "dhcp4_lexer.ll" +#line 1404 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4144,9 +4209,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 132: YY_RULE_SETUP -#line 1380 "dhcp4_lexer.ll" +#line 1413 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4156,9 +4221,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 133: YY_RULE_SETUP -#line 1389 "dhcp4_lexer.ll" +#line 1422 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4168,9 +4233,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 134: YY_RULE_SETUP -#line 1398 "dhcp4_lexer.ll" +#line 1431 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4181,9 +4246,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 135: YY_RULE_SETUP -#line 1408 "dhcp4_lexer.ll" +#line 1441 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -4194,9 +4259,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 136: YY_RULE_SETUP -#line 1418 "dhcp4_lexer.ll" +#line 1451 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -4206,9 +4271,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 137: YY_RULE_SETUP -#line 1427 "dhcp4_lexer.ll" +#line 1460 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4218,9 +4283,9 @@ YY_RULE_SETUP } } YY_BREAK -case 135: +case 138: YY_RULE_SETUP -#line 1437 "dhcp4_lexer.ll" +#line 1470 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4230,9 +4295,9 @@ YY_RULE_SETUP } } YY_BREAK -case 136: +case 139: YY_RULE_SETUP -#line 1446 "dhcp4_lexer.ll" +#line 1479 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4242,9 +4307,9 @@ YY_RULE_SETUP } } YY_BREAK -case 137: +case 140: YY_RULE_SETUP -#line 1455 "dhcp4_lexer.ll" +#line 1488 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4254,9 +4319,9 @@ YY_RULE_SETUP } } YY_BREAK -case 138: +case 141: YY_RULE_SETUP -#line 1464 "dhcp4_lexer.ll" +#line 1497 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4266,9 +4331,9 @@ YY_RULE_SETUP } } YY_BREAK -case 139: +case 142: YY_RULE_SETUP -#line 1473 "dhcp4_lexer.ll" +#line 1506 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4278,9 +4343,9 @@ YY_RULE_SETUP } } YY_BREAK -case 140: +case 143: YY_RULE_SETUP -#line 1482 "dhcp4_lexer.ll" +#line 1515 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4290,9 +4355,9 @@ YY_RULE_SETUP } } YY_BREAK -case 141: +case 144: YY_RULE_SETUP -#line 1491 "dhcp4_lexer.ll" +#line 1524 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4302,9 +4367,9 @@ YY_RULE_SETUP } } YY_BREAK -case 142: +case 145: YY_RULE_SETUP -#line 1500 "dhcp4_lexer.ll" +#line 1533 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4314,9 +4379,9 @@ YY_RULE_SETUP } } YY_BREAK -case 143: +case 146: YY_RULE_SETUP -#line 1509 "dhcp4_lexer.ll" +#line 1542 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4326,9 +4391,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 147: YY_RULE_SETUP -#line 1518 "dhcp4_lexer.ll" +#line 1551 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4338,9 +4403,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 148: YY_RULE_SETUP -#line 1527 "dhcp4_lexer.ll" +#line 1560 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4350,9 +4415,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 149: YY_RULE_SETUP -#line 1536 "dhcp4_lexer.ll" +#line 1569 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4362,9 +4427,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 150: YY_RULE_SETUP -#line 1545 "dhcp4_lexer.ll" +#line 1578 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4374,9 +4439,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 151: YY_RULE_SETUP -#line 1554 "dhcp4_lexer.ll" +#line 1587 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4386,9 +4451,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 152: YY_RULE_SETUP -#line 1563 "dhcp4_lexer.ll" +#line 1596 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4398,9 +4463,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 153: YY_RULE_SETUP -#line 1572 "dhcp4_lexer.ll" +#line 1605 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4410,9 +4475,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 154: YY_RULE_SETUP -#line 1581 "dhcp4_lexer.ll" +#line 1614 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4422,9 +4487,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 155: YY_RULE_SETUP -#line 1590 "dhcp4_lexer.ll" +#line 1623 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4434,9 +4499,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 156: YY_RULE_SETUP -#line 1599 "dhcp4_lexer.ll" +#line 1632 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4446,9 +4511,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 157: YY_RULE_SETUP -#line 1608 "dhcp4_lexer.ll" +#line 1641 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4458,9 +4523,9 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 158: YY_RULE_SETUP -#line 1617 "dhcp4_lexer.ll" +#line 1650 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4470,9 +4535,9 @@ YY_RULE_SETUP } } YY_BREAK -case 156: +case 159: YY_RULE_SETUP -#line 1626 "dhcp4_lexer.ll" +#line 1659 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4482,9 +4547,9 @@ YY_RULE_SETUP } } YY_BREAK -case 157: +case 160: YY_RULE_SETUP -#line 1635 "dhcp4_lexer.ll" +#line 1668 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4494,9 +4559,9 @@ YY_RULE_SETUP } } YY_BREAK -case 158: +case 161: YY_RULE_SETUP -#line 1644 "dhcp4_lexer.ll" +#line 1677 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4506,9 +4571,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 162: YY_RULE_SETUP -#line 1653 "dhcp4_lexer.ll" +#line 1686 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4518,9 +4583,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 163: YY_RULE_SETUP -#line 1662 "dhcp4_lexer.ll" +#line 1695 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4530,9 +4595,9 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 164: YY_RULE_SETUP -#line 1671 "dhcp4_lexer.ll" +#line 1704 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4542,9 +4607,9 @@ YY_RULE_SETUP } } YY_BREAK -case 162: +case 165: YY_RULE_SETUP -#line 1680 "dhcp4_lexer.ll" +#line 1713 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4554,9 +4619,9 @@ YY_RULE_SETUP } } YY_BREAK -case 163: +case 166: YY_RULE_SETUP -#line 1689 "dhcp4_lexer.ll" +#line 1722 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4566,9 +4631,9 @@ YY_RULE_SETUP } } YY_BREAK -case 164: +case 167: YY_RULE_SETUP -#line 1698 "dhcp4_lexer.ll" +#line 1731 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4578,9 +4643,9 @@ YY_RULE_SETUP } } YY_BREAK -case 165: +case 168: YY_RULE_SETUP -#line 1707 "dhcp4_lexer.ll" +#line 1740 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4590,9 +4655,9 @@ YY_RULE_SETUP } } YY_BREAK -case 166: +case 169: YY_RULE_SETUP -#line 1716 "dhcp4_lexer.ll" +#line 1749 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4602,9 +4667,9 @@ YY_RULE_SETUP } } YY_BREAK -case 167: +case 170: YY_RULE_SETUP -#line 1725 "dhcp4_lexer.ll" +#line 1758 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4614,9 +4679,9 @@ YY_RULE_SETUP } } YY_BREAK -case 168: +case 171: YY_RULE_SETUP -#line 1734 "dhcp4_lexer.ll" +#line 1767 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4626,9 +4691,9 @@ YY_RULE_SETUP } } YY_BREAK -case 169: +case 172: YY_RULE_SETUP -#line 1743 "dhcp4_lexer.ll" +#line 1776 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4638,9 +4703,9 @@ YY_RULE_SETUP } } YY_BREAK -case 170: +case 173: YY_RULE_SETUP -#line 1752 "dhcp4_lexer.ll" +#line 1785 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4653,9 +4718,9 @@ YY_RULE_SETUP } } YY_BREAK -case 171: +case 174: YY_RULE_SETUP -#line 1764 "dhcp4_lexer.ll" +#line 1797 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4668,9 +4733,9 @@ YY_RULE_SETUP } } YY_BREAK -case 172: +case 175: YY_RULE_SETUP -#line 1776 "dhcp4_lexer.ll" +#line 1809 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -4681,9 +4746,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 173: +case 176: YY_RULE_SETUP -#line 1786 "dhcp4_lexer.ll" +#line 1819 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -4694,9 +4759,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 174: +case 177: YY_RULE_SETUP -#line 1796 "dhcp4_lexer.ll" +#line 1829 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) { @@ -4707,9 +4772,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 175: +case 178: YY_RULE_SETUP -#line 1806 "dhcp4_lexer.ll" +#line 1839 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4720,9 +4785,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 176: +case 179: YY_RULE_SETUP -#line 1816 "dhcp4_lexer.ll" +#line 1849 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4733,9 +4798,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 177: +case 180: YY_RULE_SETUP -#line 1826 "dhcp4_lexer.ll" +#line 1859 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4746,9 +4811,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 178: +case 181: YY_RULE_SETUP -#line 1836 "dhcp4_lexer.ll" +#line 1869 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4759,9 +4824,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 179: +case 182: YY_RULE_SETUP -#line 1846 "dhcp4_lexer.ll" +#line 1879 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4772,9 +4837,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 180: +case 183: YY_RULE_SETUP -#line 1856 "dhcp4_lexer.ll" +#line 1889 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4785,9 +4850,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 181: +case 184: YY_RULE_SETUP -#line 1866 "dhcp4_lexer.ll" +#line 1899 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4797,9 +4862,9 @@ YY_RULE_SETUP } } YY_BREAK -case 182: +case 185: YY_RULE_SETUP -#line 1875 "dhcp4_lexer.ll" +#line 1908 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4809,9 +4874,9 @@ YY_RULE_SETUP } } YY_BREAK -case 183: +case 186: YY_RULE_SETUP -#line 1884 "dhcp4_lexer.ll" +#line 1917 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4821,9 +4886,9 @@ YY_RULE_SETUP } } YY_BREAK -case 184: +case 187: YY_RULE_SETUP -#line 1893 "dhcp4_lexer.ll" +#line 1926 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4833,9 +4898,9 @@ YY_RULE_SETUP } } YY_BREAK -case 185: +case 188: YY_RULE_SETUP -#line 1902 "dhcp4_lexer.ll" +#line 1935 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4847,9 +4912,9 @@ YY_RULE_SETUP } } YY_BREAK -case 186: +case 189: YY_RULE_SETUP -#line 1913 "dhcp4_lexer.ll" +#line 1946 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4861,9 +4926,9 @@ YY_RULE_SETUP } } YY_BREAK -case 187: +case 190: YY_RULE_SETUP -#line 1924 "dhcp4_lexer.ll" +#line 1957 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4877,9 +4942,9 @@ YY_RULE_SETUP } } YY_BREAK -case 188: +case 191: YY_RULE_SETUP -#line 1937 "dhcp4_lexer.ll" +#line 1970 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4893,9 +4958,9 @@ YY_RULE_SETUP } } YY_BREAK -case 189: +case 192: YY_RULE_SETUP -#line 1950 "dhcp4_lexer.ll" +#line 1983 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4909,9 +4974,9 @@ YY_RULE_SETUP } } YY_BREAK -case 190: +case 193: YY_RULE_SETUP -#line 1963 "dhcp4_lexer.ll" +#line 1996 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4921,9 +4986,9 @@ YY_RULE_SETUP } } YY_BREAK -case 191: +case 194: YY_RULE_SETUP -#line 1972 "dhcp4_lexer.ll" +#line 2005 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4933,9 +4998,9 @@ YY_RULE_SETUP } } YY_BREAK -case 192: +case 195: YY_RULE_SETUP -#line 1981 "dhcp4_lexer.ll" +#line 2014 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4945,9 +5010,9 @@ YY_RULE_SETUP } } YY_BREAK -case 193: +case 196: YY_RULE_SETUP -#line 1990 "dhcp4_lexer.ll" +#line 2023 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4957,9 +5022,9 @@ YY_RULE_SETUP } } YY_BREAK -case 194: +case 197: YY_RULE_SETUP -#line 1999 "dhcp4_lexer.ll" +#line 2032 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -4969,9 +5034,9 @@ YY_RULE_SETUP } } YY_BREAK -case 195: +case 198: YY_RULE_SETUP -#line 2008 "dhcp4_lexer.ll" +#line 2041 "dhcp4_lexer.ll" { /* A string has been matched. It contains the actual string and single quotes. We need to get those quotes out of the way and just use its content, e.g. @@ -5073,10 +5138,10 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 196: -/* rule 196 can match eol */ +case 199: +/* rule 199 can match eol */ YY_RULE_SETUP -#line 2109 "dhcp4_lexer.ll" +#line 2142 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5093,10 +5158,10 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 197: -/* rule 197 can match eol */ +case 200: +/* rule 200 can match eol */ YY_RULE_SETUP -#line 2125 "dhcp4_lexer.ll" +#line 2158 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5146,9 +5211,9 @@ YY_RULE_SETUP pos); } YY_BREAK -case 198: +case 201: YY_RULE_SETUP -#line 2174 "dhcp4_lexer.ll" +#line 2207 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5157,9 +5222,9 @@ YY_RULE_SETUP raw.size() + 1); } YY_BREAK -case 199: +case 202: YY_RULE_SETUP -#line 2182 "dhcp4_lexer.ll" +#line 2215 "dhcp4_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5175,39 +5240,39 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 200: +case 203: YY_RULE_SETUP -#line 2197 "dhcp4_lexer.ll" +#line 2230 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 201: +case 204: YY_RULE_SETUP -#line 2198 "dhcp4_lexer.ll" +#line 2231 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 202: +case 205: YY_RULE_SETUP -#line 2199 "dhcp4_lexer.ll" +#line 2232 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 203: +case 206: YY_RULE_SETUP -#line 2200 "dhcp4_lexer.ll" +#line 2233 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 204: +case 207: YY_RULE_SETUP -#line 2201 "dhcp4_lexer.ll" +#line 2234 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); } YY_BREAK -case 205: +case 208: YY_RULE_SETUP -#line 2202 "dhcp4_lexer.ll" +#line 2235 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } YY_BREAK -case 206: +case 209: YY_RULE_SETUP -#line 2204 "dhcp4_lexer.ll" +#line 2237 "dhcp4_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5226,9 +5291,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 207: +case 210: YY_RULE_SETUP -#line 2222 "dhcp4_lexer.ll" +#line 2255 "dhcp4_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5242,43 +5307,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 208: +case 211: YY_RULE_SETUP -#line 2235 "dhcp4_lexer.ll" +#line 2268 "dhcp4_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 209: +case 212: YY_RULE_SETUP -#line 2240 "dhcp4_lexer.ll" +#line 2273 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 210: +case 213: YY_RULE_SETUP -#line 2244 "dhcp4_lexer.ll" +#line 2277 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 211: +case 214: YY_RULE_SETUP -#line 2246 "dhcp4_lexer.ll" +#line 2279 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 212: +case 215: YY_RULE_SETUP -#line 2248 "dhcp4_lexer.ll" +#line 2281 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 213: +case 216: YY_RULE_SETUP -#line 2250 "dhcp4_lexer.ll" +#line 2283 "dhcp4_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2252 "dhcp4_lexer.ll" +#line 2285 "dhcp4_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp4Parser::make_END(driver.loc_); @@ -5302,12 +5367,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 214: +case 217: YY_RULE_SETUP -#line 2275 "dhcp4_lexer.ll" +#line 2308 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 5310 "dhcp4_lexer.cc" +#line 5375 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -5626,7 +5691,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 >= 2061 ) + if ( yy_current_state >= 2100 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5659,11 +5724,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 >= 2061 ) + if ( yy_current_state >= 2100 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 2060); + yy_is_jam = (yy_current_state == 2099); return yy_is_jam ? 0 : yy_current_state; } @@ -6412,7 +6477,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2275 "dhcp4_lexer.ll" +#line 2308 "dhcp4_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index a2d9da3547..7ac81e3f61 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -501,6 +501,39 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"read-timeout\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::LEASE_DATABASE: + case isc::dhcp::Parser4Context::HOSTS_DATABASE: + case isc::dhcp::Parser4Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp4Parser::make_READ_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("read-timeout", driver.loc_); + } +} + +\"write-timeout\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::LEASE_DATABASE: + case isc::dhcp::Parser4Context::HOSTS_DATABASE: + case isc::dhcp::Parser4Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp4Parser::make_WRITE_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("write-timeout", driver.loc_); + } +} + +\"tcp-user-timeout\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::LEASE_DATABASE: + case isc::dhcp::Parser4Context::HOSTS_DATABASE: + case isc::dhcp::Parser4Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp4Parser::make_TCP_USER_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("tcp-user-timeout", driver.loc_); + } +} + \"reconnect-wait-time\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index 3255eb117f..8ce1501b0e 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -402,79 +402,79 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } #line 408 "dhcp4_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } #line 414 "dhcp4_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < double > (); } #line 420 "dhcp4_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < bool > (); } #line 426 "dhcp4_parser.cc" break; case symbol_kind::S_value: // value -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 432 "dhcp4_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 438 "dhcp4_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 444 "dhcp4_parser.cc" break; case symbol_kind::S_socket_type: // socket_type -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 450 "dhcp4_parser.cc" break; case symbol_kind::S_outbound_interface_value: // outbound_interface_value -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 456 "dhcp4_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 462 "dhcp4_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 468 "dhcp4_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 474 "dhcp4_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 286 "dhcp4_parser.yy" +#line 289 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 480 "dhcp4_parser.cc" break; @@ -755,127 +755,127 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 295 "dhcp4_parser.yy" +#line 298 "dhcp4_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } #line 761 "dhcp4_parser.cc" break; case 4: // $@2: %empty -#line 296 "dhcp4_parser.yy" +#line 299 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG; } #line 767 "dhcp4_parser.cc" break; case 6: // $@3: %empty -#line 297 "dhcp4_parser.yy" +#line 300 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } #line 773 "dhcp4_parser.cc" break; case 8: // $@4: %empty -#line 298 "dhcp4_parser.yy" +#line 301 "dhcp4_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 779 "dhcp4_parser.cc" break; case 10: // $@5: %empty -#line 299 "dhcp4_parser.yy" +#line 302 "dhcp4_parser.yy" { ctx.ctx_ = ctx.SUBNET4; } #line 785 "dhcp4_parser.cc" break; case 12: // $@6: %empty -#line 300 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { ctx.ctx_ = ctx.POOLS; } #line 791 "dhcp4_parser.cc" break; case 14: // $@7: %empty -#line 301 "dhcp4_parser.yy" +#line 304 "dhcp4_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } #line 797 "dhcp4_parser.cc" break; case 16: // $@8: %empty -#line 302 "dhcp4_parser.yy" +#line 305 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } #line 803 "dhcp4_parser.cc" break; case 18: // $@9: %empty -#line 303 "dhcp4_parser.yy" +#line 306 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } #line 809 "dhcp4_parser.cc" break; case 20: // $@10: %empty -#line 304 "dhcp4_parser.yy" +#line 307 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } #line 815 "dhcp4_parser.cc" break; case 22: // $@11: %empty -#line 305 "dhcp4_parser.yy" +#line 308 "dhcp4_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 821 "dhcp4_parser.cc" break; case 24: // $@12: %empty -#line 306 "dhcp4_parser.yy" +#line 309 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } #line 827 "dhcp4_parser.cc" break; case 26: // $@13: %empty -#line 307 "dhcp4_parser.yy" +#line 310 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } #line 833 "dhcp4_parser.cc" break; case 28: // value: "integer" -#line 315 "dhcp4_parser.yy" +#line 318 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 839 "dhcp4_parser.cc" break; case 29: // value: "floating point" -#line 316 "dhcp4_parser.yy" +#line 319 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } #line 845 "dhcp4_parser.cc" break; case 30: // value: "boolean" -#line 317 "dhcp4_parser.yy" +#line 320 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } #line 851 "dhcp4_parser.cc" break; case 31: // value: "constant string" -#line 318 "dhcp4_parser.yy" +#line 321 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 857 "dhcp4_parser.cc" break; case 32: // value: "null" -#line 319 "dhcp4_parser.yy" +#line 322 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 863 "dhcp4_parser.cc" break; case 33: // value: map2 -#line 320 "dhcp4_parser.yy" +#line 323 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 869 "dhcp4_parser.cc" break; case 34: // value: list_generic -#line 321 "dhcp4_parser.yy" +#line 324 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 875 "dhcp4_parser.cc" break; case 35: // sub_json: value -#line 324 "dhcp4_parser.yy" +#line 327 "dhcp4_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); @@ -884,7 +884,7 @@ namespace isc { namespace dhcp { break; case 36: // $@14: %empty -#line 329 "dhcp4_parser.yy" +#line 332 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -895,7 +895,7 @@ namespace isc { namespace dhcp { break; case 37: // map2: "{" $@14 map_content "}" -#line 334 "dhcp4_parser.yy" +#line 337 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -905,13 +905,13 @@ namespace isc { namespace dhcp { break; case 38: // map_value: map2 -#line 340 "dhcp4_parser.yy" +#line 343 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 911 "dhcp4_parser.cc" break; case 41: // not_empty_map: "constant string" ":" value -#line 347 "dhcp4_parser.yy" +#line 350 "dhcp4_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); @@ -921,7 +921,7 @@ namespace isc { namespace dhcp { break; case 42: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 352 "dhcp4_parser.yy" +#line 355 "dhcp4_parser.yy" { // map consisting of a shorter map followed by // comma and string:value @@ -932,7 +932,7 @@ namespace isc { namespace dhcp { break; case 43: // not_empty_map: not_empty_map "," -#line 358 "dhcp4_parser.yy" +#line 361 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -940,7 +940,7 @@ namespace isc { namespace dhcp { break; case 44: // $@15: %empty -#line 363 "dhcp4_parser.yy" +#line 366 "dhcp4_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -949,7 +949,7 @@ namespace isc { namespace dhcp { break; case 45: // list_generic: "[" $@15 list_content "]" -#line 366 "dhcp4_parser.yy" +#line 369 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here } @@ -957,7 +957,7 @@ namespace isc { namespace dhcp { break; case 48: // not_empty_list: value -#line 374 "dhcp4_parser.yy" +#line 377 "dhcp4_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -966,7 +966,7 @@ namespace isc { namespace dhcp { break; case 49: // not_empty_list: not_empty_list "," value -#line 378 "dhcp4_parser.yy" +#line 381 "dhcp4_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -975,7 +975,7 @@ namespace isc { namespace dhcp { break; case 50: // not_empty_list: not_empty_list "," -#line 382 "dhcp4_parser.yy" +#line 385 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -983,7 +983,7 @@ namespace isc { namespace dhcp { break; case 51: // $@16: %empty -#line 388 "dhcp4_parser.yy" +#line 391 "dhcp4_parser.yy" { // List parsing about to start } @@ -991,7 +991,7 @@ namespace isc { namespace dhcp { break; case 52: // list_strings: "[" $@16 list_strings_content "]" -#line 390 "dhcp4_parser.yy" +#line 393 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -1000,7 +1000,7 @@ namespace isc { namespace dhcp { break; case 55: // not_empty_list_strings: "constant string" -#line 399 "dhcp4_parser.yy" +#line 402 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1009,7 +1009,7 @@ namespace isc { namespace dhcp { break; case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 403 "dhcp4_parser.yy" +#line 406 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1018,7 +1018,7 @@ namespace isc { namespace dhcp { break; case 57: // not_empty_list_strings: not_empty_list_strings "," -#line 407 "dhcp4_parser.yy" +#line 410 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp { break; case 58: // unknown_map_entry: "constant string" ":" -#line 417 "dhcp4_parser.yy" +#line 420 "dhcp4_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); @@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp { break; case 59: // $@17: %empty -#line 426 "dhcp4_parser.yy" +#line 429 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp { break; case 60: // syntax_map: "{" $@17 global_object "}" -#line 431 "dhcp4_parser.yy" +#line 434 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp { break; case 61: // $@18: %empty -#line 441 "dhcp4_parser.yy" +#line 444 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1076,7 +1076,7 @@ namespace isc { namespace dhcp { break; case 62: // global_object: "Dhcp4" $@18 ":" "{" global_params "}" -#line 450 "dhcp4_parser.yy" +#line 453 "dhcp4_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); @@ -1086,7 +1086,7 @@ namespace isc { namespace dhcp { break; case 64: // global_object_comma: global_object "," -#line 458 "dhcp4_parser.yy" +#line 461 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp { break; case 65: // $@19: %empty -#line 464 "dhcp4_parser.yy" +#line 467 "dhcp4_parser.yy" { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1104,7 +1104,7 @@ namespace isc { namespace dhcp { break; case 66: // sub_dhcp4: "{" $@19 global_params "}" -#line 468 "dhcp4_parser.yy" +#line 471 "dhcp4_parser.yy" { // No global parameter is required // parsing completed @@ -1113,7 +1113,7 @@ namespace isc { namespace dhcp { break; case 69: // global_params: global_params "," -#line 475 "dhcp4_parser.yy" +#line 478 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1121,7 +1121,7 @@ namespace isc { namespace dhcp { break; case 134: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 548 "dhcp4_parser.yy" +#line 551 "dhcp4_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))); @@ -1131,7 +1131,7 @@ namespace isc { namespace dhcp { break; case 135: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 554 "dhcp4_parser.yy" +#line 557 "dhcp4_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))); @@ -1141,7 +1141,7 @@ namespace isc { namespace dhcp { break; case 136: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 560 "dhcp4_parser.yy" +#line 563 "dhcp4_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))); @@ -1151,7 +1151,7 @@ namespace isc { namespace dhcp { break; case 137: // renew_timer: "renew-timer" ":" "integer" -#line 566 "dhcp4_parser.yy" +#line 569 "dhcp4_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))); @@ -1161,7 +1161,7 @@ namespace isc { namespace dhcp { break; case 138: // rebind_timer: "rebind-timer" ":" "integer" -#line 572 "dhcp4_parser.yy" +#line 575 "dhcp4_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))); @@ -1171,7 +1171,7 @@ namespace isc { namespace dhcp { break; case 139: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 578 "dhcp4_parser.yy" +#line 581 "dhcp4_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))); @@ -1181,7 +1181,7 @@ namespace isc { namespace dhcp { break; case 140: // t1_percent: "t1-percent" ":" "floating point" -#line 584 "dhcp4_parser.yy" +#line 587 "dhcp4_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))); @@ -1191,7 +1191,7 @@ namespace isc { namespace dhcp { break; case 141: // t2_percent: "t2-percent" ":" "floating point" -#line 590 "dhcp4_parser.yy" +#line 593 "dhcp4_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))); @@ -1201,7 +1201,7 @@ namespace isc { namespace dhcp { break; case 142: // cache_threshold: "cache-threshold" ":" "floating point" -#line 596 "dhcp4_parser.yy" +#line 599 "dhcp4_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))); @@ -1211,7 +1211,7 @@ namespace isc { namespace dhcp { break; case 143: // cache_max_age: "cache-max-age" ":" "integer" -#line 602 "dhcp4_parser.yy" +#line 605 "dhcp4_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))); @@ -1221,7 +1221,7 @@ namespace isc { namespace dhcp { break; case 144: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 608 "dhcp4_parser.yy" +#line 611 "dhcp4_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))); @@ -1231,7 +1231,7 @@ namespace isc { namespace dhcp { break; case 145: // $@20: %empty -#line 614 "dhcp4_parser.yy" +#line 617 "dhcp4_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1240,7 +1240,7 @@ namespace isc { namespace dhcp { break; case 146: // server_tag: "server-tag" $@20 ":" "constant string" -#line 617 "dhcp4_parser.yy" +#line 620 "dhcp4_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); @@ -1250,7 +1250,7 @@ namespace isc { namespace dhcp { break; case 147: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 623 "dhcp4_parser.yy" +#line 626 "dhcp4_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))); @@ -1260,7 +1260,7 @@ namespace isc { namespace dhcp { break; case 148: // echo_client_id: "echo-client-id" ":" "boolean" -#line 629 "dhcp4_parser.yy" +#line 632 "dhcp4_parser.yy" { ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1270,7 +1270,7 @@ namespace isc { namespace dhcp { break; case 149: // match_client_id: "match-client-id" ":" "boolean" -#line 635 "dhcp4_parser.yy" +#line 638 "dhcp4_parser.yy" { ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1280,7 +1280,7 @@ namespace isc { namespace dhcp { break; case 150: // authoritative: "authoritative" ":" "boolean" -#line 641 "dhcp4_parser.yy" +#line 644 "dhcp4_parser.yy" { ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1290,7 +1290,7 @@ namespace isc { namespace dhcp { break; case 151: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 647 "dhcp4_parser.yy" +#line 650 "dhcp4_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))); @@ -1300,7 +1300,7 @@ namespace isc { namespace dhcp { break; case 152: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 653 "dhcp4_parser.yy" +#line 656 "dhcp4_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))); @@ -1310,7 +1310,7 @@ namespace isc { namespace dhcp { break; case 153: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 659 "dhcp4_parser.yy" +#line 662 "dhcp4_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))); @@ -1320,7 +1320,7 @@ namespace isc { namespace dhcp { break; case 154: // $@21: %empty -#line 665 "dhcp4_parser.yy" +#line 668 "dhcp4_parser.yy" { ctx.enter(ctx.REPLACE_CLIENT_NAME); ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); @@ -1329,7 +1329,7 @@ namespace isc { namespace dhcp { break; case 155: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value -#line 668 "dhcp4_parser.yy" +#line 671 "dhcp4_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1338,7 +1338,7 @@ namespace isc { namespace dhcp { break; case 156: // ddns_replace_client_name_value: "when-present" -#line 674 "dhcp4_parser.yy" +#line 677 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } @@ -1346,7 +1346,7 @@ namespace isc { namespace dhcp { break; case 157: // ddns_replace_client_name_value: "never" -#line 677 "dhcp4_parser.yy" +#line 680 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } @@ -1354,7 +1354,7 @@ namespace isc { namespace dhcp { break; case 158: // ddns_replace_client_name_value: "always" -#line 680 "dhcp4_parser.yy" +#line 683 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } @@ -1362,7 +1362,7 @@ namespace isc { namespace dhcp { break; case 159: // ddns_replace_client_name_value: "when-not-present" -#line 683 "dhcp4_parser.yy" +#line 686 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } @@ -1370,7 +1370,7 @@ namespace isc { namespace dhcp { break; case 160: // ddns_replace_client_name_value: "boolean" -#line 686 "dhcp4_parser.yy" +#line 689 "dhcp4_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -1379,7 +1379,7 @@ namespace isc { namespace dhcp { break; case 161: // $@22: %empty -#line 692 "dhcp4_parser.yy" +#line 695 "dhcp4_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1388,7 +1388,7 @@ namespace isc { namespace dhcp { break; case 162: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string" -#line 695 "dhcp4_parser.yy" +#line 698 "dhcp4_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); @@ -1398,7 +1398,7 @@ namespace isc { namespace dhcp { break; case 163: // $@23: %empty -#line 701 "dhcp4_parser.yy" +#line 704 "dhcp4_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1407,7 +1407,7 @@ namespace isc { namespace dhcp { break; case 164: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string" -#line 704 "dhcp4_parser.yy" +#line 707 "dhcp4_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); @@ -1417,7 +1417,7 @@ namespace isc { namespace dhcp { break; case 165: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 710 "dhcp4_parser.yy" +#line 713 "dhcp4_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))); @@ -1427,7 +1427,7 @@ namespace isc { namespace dhcp { break; case 166: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 716 "dhcp4_parser.yy" +#line 719 "dhcp4_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))); @@ -1437,7 +1437,7 @@ namespace isc { namespace dhcp { break; case 167: // $@24: %empty -#line 722 "dhcp4_parser.yy" +#line 725 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1446,7 +1446,7 @@ namespace isc { namespace dhcp { break; case 168: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string" -#line 725 "dhcp4_parser.yy" +#line 728 "dhcp4_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); @@ -1456,7 +1456,7 @@ namespace isc { namespace dhcp { break; case 169: // $@25: %empty -#line 731 "dhcp4_parser.yy" +#line 734 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1465,7 +1465,7 @@ namespace isc { namespace dhcp { break; case 170: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string" -#line 734 "dhcp4_parser.yy" +#line 737 "dhcp4_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); @@ -1475,7 +1475,7 @@ namespace isc { namespace dhcp { break; case 171: // store_extended_info: "store-extended-info" ":" "boolean" -#line 740 "dhcp4_parser.yy" +#line 743 "dhcp4_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))); @@ -1485,7 +1485,7 @@ namespace isc { namespace dhcp { break; case 172: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 746 "dhcp4_parser.yy" +#line 749 "dhcp4_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))); @@ -1495,7 +1495,7 @@ namespace isc { namespace dhcp { break; case 173: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 752 "dhcp4_parser.yy" +#line 755 "dhcp4_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))); @@ -1505,7 +1505,7 @@ namespace isc { namespace dhcp { break; case 174: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" -#line 758 "dhcp4_parser.yy" +#line 761 "dhcp4_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))); @@ -1515,7 +1515,7 @@ namespace isc { namespace dhcp { break; case 175: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 764 "dhcp4_parser.yy" +#line 767 "dhcp4_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))); @@ -1525,7 +1525,7 @@ namespace isc { namespace dhcp { break; case 176: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" -#line 770 "dhcp4_parser.yy" +#line 773 "dhcp4_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))); @@ -1535,7 +1535,7 @@ namespace isc { namespace dhcp { break; case 177: // $@26: %empty -#line 776 "dhcp4_parser.yy" +#line 779 "dhcp4_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1547,7 +1547,7 @@ namespace isc { namespace dhcp { break; case 178: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}" -#line 782 "dhcp4_parser.yy" +#line 785 "dhcp4_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); @@ -1557,7 +1557,7 @@ namespace isc { namespace dhcp { break; case 181: // interfaces_config_params: interfaces_config_params "," -#line 790 "dhcp4_parser.yy" +#line 793 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1565,7 +1565,7 @@ namespace isc { namespace dhcp { break; case 192: // $@27: %empty -#line 807 "dhcp4_parser.yy" +#line 810 "dhcp4_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1575,7 +1575,7 @@ namespace isc { namespace dhcp { break; case 193: // sub_interfaces4: "{" $@27 interfaces_config_params "}" -#line 811 "dhcp4_parser.yy" +#line 814 "dhcp4_parser.yy" { // No interfaces config param is required // parsing completed @@ -1584,7 +1584,7 @@ namespace isc { namespace dhcp { break; case 194: // $@28: %empty -#line 816 "dhcp4_parser.yy" +#line 819 "dhcp4_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1596,7 +1596,7 @@ namespace isc { namespace dhcp { break; case 195: // interfaces_list: "interfaces" $@28 ":" list_strings -#line 822 "dhcp4_parser.yy" +#line 825 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); @@ -1605,7 +1605,7 @@ namespace isc { namespace dhcp { break; case 196: // $@29: %empty -#line 827 "dhcp4_parser.yy" +#line 830 "dhcp4_parser.yy" { ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DHCP_SOCKET_TYPE); @@ -1614,7 +1614,7 @@ namespace isc { namespace dhcp { break; case 197: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type -#line 830 "dhcp4_parser.yy" +#line 833 "dhcp4_parser.yy" { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1623,19 +1623,19 @@ namespace isc { namespace dhcp { break; case 198: // socket_type: "raw" -#line 835 "dhcp4_parser.yy" +#line 838 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } #line 1629 "dhcp4_parser.cc" break; case 199: // socket_type: "udp" -#line 836 "dhcp4_parser.yy" +#line 839 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } #line 1635 "dhcp4_parser.cc" break; case 200: // $@30: %empty -#line 839 "dhcp4_parser.yy" +#line 842 "dhcp4_parser.yy" { ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.OUTBOUND_INTERFACE); @@ -1644,7 +1644,7 @@ namespace isc { namespace dhcp { break; case 201: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value -#line 842 "dhcp4_parser.yy" +#line 845 "dhcp4_parser.yy" { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1653,7 +1653,7 @@ namespace isc { namespace dhcp { break; case 202: // outbound_interface_value: "same-as-inbound" -#line 847 "dhcp4_parser.yy" +#line 850 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } @@ -1661,7 +1661,7 @@ namespace isc { namespace dhcp { break; case 203: // outbound_interface_value: "use-routing" -#line 849 "dhcp4_parser.yy" +#line 852 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } @@ -1669,7 +1669,7 @@ namespace isc { namespace dhcp { break; case 204: // re_detect: "re-detect" ":" "boolean" -#line 853 "dhcp4_parser.yy" +#line 856 "dhcp4_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))); @@ -1679,7 +1679,7 @@ namespace isc { namespace dhcp { break; case 205: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" -#line 859 "dhcp4_parser.yy" +#line 862 "dhcp4_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))); @@ -1689,7 +1689,7 @@ namespace isc { namespace dhcp { break; case 206: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" -#line 865 "dhcp4_parser.yy" +#line 868 "dhcp4_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))); @@ -1699,7 +1699,7 @@ namespace isc { namespace dhcp { break; case 207: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" -#line 871 "dhcp4_parser.yy" +#line 874 "dhcp4_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))); @@ -1709,7 +1709,7 @@ namespace isc { namespace dhcp { break; case 208: // $@31: %empty -#line 877 "dhcp4_parser.yy" +#line 880 "dhcp4_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1721,7 +1721,7 @@ namespace isc { namespace dhcp { break; case 209: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 883 "dhcp4_parser.yy" +#line 886 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1732,7 +1732,7 @@ namespace isc { namespace dhcp { break; case 210: // $@32: %empty -#line 890 "dhcp4_parser.yy" +#line 893 "dhcp4_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1744,7 +1744,7 @@ namespace isc { namespace dhcp { break; case 211: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}" -#line 896 "dhcp4_parser.yy" +#line 899 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); @@ -1753,7 +1753,7 @@ namespace isc { namespace dhcp { break; case 214: // sanity_checks_params: sanity_checks_params "," -#line 903 "dhcp4_parser.yy" +#line 906 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1761,7 +1761,7 @@ namespace isc { namespace dhcp { break; case 216: // $@33: %empty -#line 910 "dhcp4_parser.yy" +#line 913 "dhcp4_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1770,7 +1770,7 @@ namespace isc { namespace dhcp { break; case 217: // lease_checks: "lease-checks" $@33 ":" "constant string" -#line 913 "dhcp4_parser.yy" +#line 916 "dhcp4_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -1790,7 +1790,7 @@ namespace isc { namespace dhcp { break; case 218: // $@34: %empty -#line 929 "dhcp4_parser.yy" +#line 932 "dhcp4_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1802,7 +1802,7 @@ namespace isc { namespace dhcp { break; case 219: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}" -#line 935 "dhcp4_parser.yy" +#line 938 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1813,7 +1813,7 @@ namespace isc { namespace dhcp { break; case 220: // $@35: %empty -#line 942 "dhcp4_parser.yy" +#line 945 "dhcp4_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1825,7 +1825,7 @@ namespace isc { namespace dhcp { break; case 221: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]" -#line 948 "dhcp4_parser.yy" +#line 951 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); @@ -1834,7 +1834,7 @@ namespace isc { namespace dhcp { break; case 226: // not_empty_database_list: not_empty_database_list "," -#line 959 "dhcp4_parser.yy" +#line 962 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1842,7 +1842,7 @@ namespace isc { namespace dhcp { break; case 227: // $@36: %empty -#line 964 "dhcp4_parser.yy" +#line 967 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1852,7 +1852,7 @@ namespace isc { namespace dhcp { break; case 228: // database: "{" $@36 database_map_params "}" -#line 968 "dhcp4_parser.yy" +#line 971 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1862,15 +1862,15 @@ namespace isc { namespace dhcp { break; case 231: // database_map_params: database_map_params "," -#line 976 "dhcp4_parser.yy" +#line 979 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } #line 1870 "dhcp4_parser.cc" break; - case 251: // $@37: %empty -#line 1002 "dhcp4_parser.yy" + case 254: // $@37: %empty +#line 1008 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); @@ -1878,8 +1878,8 @@ namespace isc { namespace dhcp { #line 1879 "dhcp4_parser.cc" break; - case 252: // database_type: "type" $@37 ":" db_type -#line 1005 "dhcp4_parser.yy" + case 255: // database_type: "type" $@37 ":" db_type +#line 1011 "dhcp4_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1887,26 +1887,26 @@ namespace isc { namespace dhcp { #line 1888 "dhcp4_parser.cc" break; - case 253: // db_type: "memfile" -#line 1010 "dhcp4_parser.yy" + case 256: // db_type: "memfile" +#line 1016 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } #line 1894 "dhcp4_parser.cc" break; - case 254: // db_type: "mysql" -#line 1011 "dhcp4_parser.yy" + case 257: // db_type: "mysql" +#line 1017 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } #line 1900 "dhcp4_parser.cc" break; - case 255: // db_type: "postgresql" -#line 1012 "dhcp4_parser.yy" + case 258: // db_type: "postgresql" +#line 1018 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } #line 1906 "dhcp4_parser.cc" break; - case 256: // $@38: %empty -#line 1015 "dhcp4_parser.yy" + case 259: // $@38: %empty +#line 1021 "dhcp4_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1914,8 +1914,8 @@ namespace isc { namespace dhcp { #line 1915 "dhcp4_parser.cc" break; - case 257: // user: "user" $@38 ":" "constant string" -#line 1018 "dhcp4_parser.yy" + case 260: // user: "user" $@38 ":" "constant string" +#line 1024 "dhcp4_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); @@ -1924,8 +1924,8 @@ namespace isc { namespace dhcp { #line 1925 "dhcp4_parser.cc" break; - case 258: // $@39: %empty -#line 1024 "dhcp4_parser.yy" + case 261: // $@39: %empty +#line 1030 "dhcp4_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1933,8 +1933,8 @@ namespace isc { namespace dhcp { #line 1934 "dhcp4_parser.cc" break; - case 259: // password: "password" $@39 ":" "constant string" -#line 1027 "dhcp4_parser.yy" + case 262: // password: "password" $@39 ":" "constant string" +#line 1033 "dhcp4_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); @@ -1943,8 +1943,8 @@ namespace isc { namespace dhcp { #line 1944 "dhcp4_parser.cc" break; - case 260: // $@40: %empty -#line 1033 "dhcp4_parser.yy" + case 263: // $@40: %empty +#line 1039 "dhcp4_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1952,8 +1952,8 @@ namespace isc { namespace dhcp { #line 1953 "dhcp4_parser.cc" break; - case 261: // host: "host" $@40 ":" "constant string" -#line 1036 "dhcp4_parser.yy" + case 264: // host: "host" $@40 ":" "constant string" +#line 1042 "dhcp4_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); @@ -1962,8 +1962,8 @@ namespace isc { namespace dhcp { #line 1963 "dhcp4_parser.cc" break; - case 262: // port: "port" ":" "integer" -#line 1042 "dhcp4_parser.yy" + case 265: // port: "port" ":" "integer" +#line 1048 "dhcp4_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))); @@ -1972,8 +1972,8 @@ namespace isc { namespace dhcp { #line 1973 "dhcp4_parser.cc" break; - case 263: // $@41: %empty -#line 1048 "dhcp4_parser.yy" + case 266: // $@41: %empty +#line 1054 "dhcp4_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1981,8 +1981,8 @@ namespace isc { namespace dhcp { #line 1982 "dhcp4_parser.cc" break; - case 264: // name: "name" $@41 ":" "constant string" -#line 1051 "dhcp4_parser.yy" + case 267: // name: "name" $@41 ":" "constant string" +#line 1057 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); @@ -1991,8 +1991,8 @@ namespace isc { namespace dhcp { #line 1992 "dhcp4_parser.cc" break; - case 265: // persist: "persist" ":" "boolean" -#line 1057 "dhcp4_parser.yy" + case 268: // persist: "persist" ":" "boolean" +#line 1063 "dhcp4_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -2001,8 +2001,8 @@ namespace isc { namespace dhcp { #line 2002 "dhcp4_parser.cc" break; - case 266: // lfc_interval: "lfc-interval" ":" "integer" -#line 1063 "dhcp4_parser.yy" + case 269: // lfc_interval: "lfc-interval" ":" "integer" +#line 1069 "dhcp4_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))); @@ -2011,8 +2011,8 @@ namespace isc { namespace dhcp { #line 2012 "dhcp4_parser.cc" break; - case 267: // readonly: "readonly" ":" "boolean" -#line 1069 "dhcp4_parser.yy" + case 270: // readonly: "readonly" ":" "boolean" +#line 1075 "dhcp4_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -2021,8 +2021,8 @@ namespace isc { namespace dhcp { #line 2022 "dhcp4_parser.cc" break; - case 268: // connect_timeout: "connect-timeout" ":" "integer" -#line 1075 "dhcp4_parser.yy" + case 271: // connect_timeout: "connect-timeout" ":" "integer" +#line 1081 "dhcp4_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))); @@ -2031,150 +2031,180 @@ namespace isc { namespace dhcp { #line 2032 "dhcp4_parser.cc" break; - case 269: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1081 "dhcp4_parser.yy" + case 272: // read_timeout: "read-timeout" ":" "integer" +#line 1087 "dhcp4_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 2042 "dhcp4_parser.cc" + break; + + case 273: // write_timeout: "write-timeout" ":" "integer" +#line 1093 "dhcp4_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 2052 "dhcp4_parser.cc" + break; + + case 274: // tcp_user_timeout: "tcp-user-timeout" ":" "integer" +#line 1099 "dhcp4_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 2062 "dhcp4_parser.cc" + break; + + case 275: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" +#line 1105 "dhcp4_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 2042 "dhcp4_parser.cc" +#line 2072 "dhcp4_parser.cc" break; - case 270: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1087 "dhcp4_parser.yy" + case 276: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" +#line 1111 "dhcp4_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 2052 "dhcp4_parser.cc" +#line 2082 "dhcp4_parser.cc" break; - case 271: // $@42: %empty -#line 1093 "dhcp4_parser.yy" + case 277: // $@42: %empty +#line 1117 "dhcp4_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 2061 "dhcp4_parser.cc" +#line 2091 "dhcp4_parser.cc" break; - case 272: // on_fail: "on-fail" $@42 ":" on_fail_mode -#line 1096 "dhcp4_parser.yy" + case 278: // on_fail: "on-fail" $@42 ":" on_fail_mode +#line 1120 "dhcp4_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2070 "dhcp4_parser.cc" +#line 2100 "dhcp4_parser.cc" break; - case 273: // on_fail_mode: "stop-retry-exit" -#line 1101 "dhcp4_parser.yy" + case 279: // on_fail_mode: "stop-retry-exit" +#line 1125 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2076 "dhcp4_parser.cc" +#line 2106 "dhcp4_parser.cc" break; - case 274: // on_fail_mode: "serve-retry-exit" -#line 1102 "dhcp4_parser.yy" + case 280: // on_fail_mode: "serve-retry-exit" +#line 1126 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2082 "dhcp4_parser.cc" +#line 2112 "dhcp4_parser.cc" break; - case 275: // on_fail_mode: "serve-retry-continue" -#line 1103 "dhcp4_parser.yy" + case 281: // on_fail_mode: "serve-retry-continue" +#line 1127 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 2088 "dhcp4_parser.cc" +#line 2118 "dhcp4_parser.cc" break; - case 276: // max_row_errors: "max-row-errors" ":" "integer" -#line 1106 "dhcp4_parser.yy" + case 282: // max_row_errors: "max-row-errors" ":" "integer" +#line 1130 "dhcp4_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 2098 "dhcp4_parser.cc" +#line 2128 "dhcp4_parser.cc" break; - case 277: // $@43: %empty -#line 1112 "dhcp4_parser.yy" + case 283: // $@43: %empty +#line 1136 "dhcp4_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2107 "dhcp4_parser.cc" +#line 2137 "dhcp4_parser.cc" break; - case 278: // trust_anchor: "trust-anchor" $@43 ":" "constant string" -#line 1115 "dhcp4_parser.yy" + case 284: // trust_anchor: "trust-anchor" $@43 ":" "constant string" +#line 1139 "dhcp4_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 2117 "dhcp4_parser.cc" +#line 2147 "dhcp4_parser.cc" break; - case 279: // $@44: %empty -#line 1121 "dhcp4_parser.yy" + case 285: // $@44: %empty +#line 1145 "dhcp4_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2126 "dhcp4_parser.cc" +#line 2156 "dhcp4_parser.cc" break; - case 280: // cert_file: "cert-file" $@44 ":" "constant string" -#line 1124 "dhcp4_parser.yy" + case 286: // cert_file: "cert-file" $@44 ":" "constant string" +#line 1148 "dhcp4_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 2136 "dhcp4_parser.cc" +#line 2166 "dhcp4_parser.cc" break; - case 281: // $@45: %empty -#line 1130 "dhcp4_parser.yy" + case 287: // $@45: %empty +#line 1154 "dhcp4_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2145 "dhcp4_parser.cc" +#line 2175 "dhcp4_parser.cc" break; - case 282: // key_file: "key-file" $@45 ":" "constant string" -#line 1133 "dhcp4_parser.yy" + case 288: // key_file: "key-file" $@45 ":" "constant string" +#line 1157 "dhcp4_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 2155 "dhcp4_parser.cc" +#line 2185 "dhcp4_parser.cc" break; - case 283: // $@46: %empty -#line 1139 "dhcp4_parser.yy" + case 289: // $@46: %empty +#line 1163 "dhcp4_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2164 "dhcp4_parser.cc" +#line 2194 "dhcp4_parser.cc" break; - case 284: // cipher_list: "cipher-list" $@46 ":" "constant string" -#line 1142 "dhcp4_parser.yy" + case 290: // cipher_list: "cipher-list" $@46 ":" "constant string" +#line 1166 "dhcp4_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 2174 "dhcp4_parser.cc" +#line 2204 "dhcp4_parser.cc" break; - case 285: // $@47: %empty -#line 1148 "dhcp4_parser.yy" + case 291: // $@47: %empty +#line 1172 "dhcp4_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2182,73 +2212,73 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2186 "dhcp4_parser.cc" +#line 2216 "dhcp4_parser.cc" break; - case 286: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]" -#line 1154 "dhcp4_parser.yy" + case 292: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]" +#line 1178 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2195 "dhcp4_parser.cc" +#line 2225 "dhcp4_parser.cc" break; - case 289: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1161 "dhcp4_parser.yy" + case 295: // host_reservation_identifiers_list: host_reservation_identifiers_list "," +#line 1185 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2203 "dhcp4_parser.cc" +#line 2233 "dhcp4_parser.cc" break; - case 295: // duid_id: "duid" -#line 1173 "dhcp4_parser.yy" + case 301: // duid_id: "duid" +#line 1197 "dhcp4_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2212 "dhcp4_parser.cc" +#line 2242 "dhcp4_parser.cc" break; - case 296: // hw_address_id: "hw-address" -#line 1178 "dhcp4_parser.yy" + case 302: // hw_address_id: "hw-address" +#line 1202 "dhcp4_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2221 "dhcp4_parser.cc" +#line 2251 "dhcp4_parser.cc" break; - case 297: // circuit_id: "circuit-id" -#line 1183 "dhcp4_parser.yy" + case 303: // circuit_id: "circuit-id" +#line 1207 "dhcp4_parser.yy" { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 2230 "dhcp4_parser.cc" +#line 2260 "dhcp4_parser.cc" break; - case 298: // client_id: "client-id" -#line 1188 "dhcp4_parser.yy" + case 304: // client_id: "client-id" +#line 1212 "dhcp4_parser.yy" { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 2239 "dhcp4_parser.cc" +#line 2269 "dhcp4_parser.cc" break; - case 299: // flex_id: "flex-id" -#line 1193 "dhcp4_parser.yy" + case 305: // flex_id: "flex-id" +#line 1217 "dhcp4_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2248 "dhcp4_parser.cc" +#line 2278 "dhcp4_parser.cc" break; - case 300: // $@48: %empty -#line 1200 "dhcp4_parser.yy" + case 306: // $@48: %empty +#line 1224 "dhcp4_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2256,60 +2286,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2260 "dhcp4_parser.cc" +#line 2290 "dhcp4_parser.cc" break; - case 301: // dhcp_multi_threading: "multi-threading" $@48 ":" "{" multi_threading_params "}" -#line 1206 "dhcp4_parser.yy" + case 307: // dhcp_multi_threading: "multi-threading" $@48 ":" "{" multi_threading_params "}" +#line 1230 "dhcp4_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 2271 "dhcp4_parser.cc" +#line 2301 "dhcp4_parser.cc" break; - case 304: // multi_threading_params: multi_threading_params "," -#line 1215 "dhcp4_parser.yy" + case 310: // multi_threading_params: multi_threading_params "," +#line 1239 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2279 "dhcp4_parser.cc" +#line 2309 "dhcp4_parser.cc" break; - case 311: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1228 "dhcp4_parser.yy" + case 317: // enable_multi_threading: "enable-multi-threading" ":" "boolean" +#line 1252 "dhcp4_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 2289 "dhcp4_parser.cc" +#line 2319 "dhcp4_parser.cc" break; - case 312: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1234 "dhcp4_parser.yy" + case 318: // thread_pool_size: "thread-pool-size" ":" "integer" +#line 1258 "dhcp4_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 2299 "dhcp4_parser.cc" +#line 2329 "dhcp4_parser.cc" break; - case 313: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1240 "dhcp4_parser.yy" + case 319: // packet_queue_size: "packet-queue-size" ":" "integer" +#line 1264 "dhcp4_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 2309 "dhcp4_parser.cc" +#line 2339 "dhcp4_parser.cc" break; - case 314: // $@49: %empty -#line 1246 "dhcp4_parser.yy" + case 320: // $@49: %empty +#line 1270 "dhcp4_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2317,113 +2347,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2321 "dhcp4_parser.cc" +#line 2351 "dhcp4_parser.cc" break; - case 315: // hooks_libraries: "hooks-libraries" $@49 ":" "[" hooks_libraries_list "]" -#line 1252 "dhcp4_parser.yy" + case 321: // hooks_libraries: "hooks-libraries" $@49 ":" "[" hooks_libraries_list "]" +#line 1276 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2330 "dhcp4_parser.cc" +#line 2360 "dhcp4_parser.cc" break; - case 320: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1263 "dhcp4_parser.yy" + case 326: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," +#line 1287 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2338 "dhcp4_parser.cc" +#line 2368 "dhcp4_parser.cc" break; - case 321: // $@50: %empty -#line 1268 "dhcp4_parser.yy" + case 327: // $@50: %empty +#line 1292 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2348 "dhcp4_parser.cc" +#line 2378 "dhcp4_parser.cc" break; - case 322: // hooks_library: "{" $@50 hooks_params "}" -#line 1272 "dhcp4_parser.yy" + case 328: // hooks_library: "{" $@50 hooks_params "}" +#line 1296 "dhcp4_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 2358 "dhcp4_parser.cc" +#line 2388 "dhcp4_parser.cc" break; - case 323: // $@51: %empty -#line 1278 "dhcp4_parser.yy" + case 329: // $@51: %empty +#line 1302 "dhcp4_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2368 "dhcp4_parser.cc" +#line 2398 "dhcp4_parser.cc" break; - case 324: // sub_hooks_library: "{" $@51 hooks_params "}" -#line 1282 "dhcp4_parser.yy" + case 330: // sub_hooks_library: "{" $@51 hooks_params "}" +#line 1306 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2378 "dhcp4_parser.cc" +#line 2408 "dhcp4_parser.cc" break; - case 327: // hooks_params: hooks_params "," -#line 1290 "dhcp4_parser.yy" + case 333: // hooks_params: hooks_params "," +#line 1314 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2386 "dhcp4_parser.cc" +#line 2416 "dhcp4_parser.cc" break; - case 331: // $@52: %empty -#line 1300 "dhcp4_parser.yy" + case 337: // $@52: %empty +#line 1324 "dhcp4_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2395 "dhcp4_parser.cc" +#line 2425 "dhcp4_parser.cc" break; - case 332: // library: "library" $@52 ":" "constant string" -#line 1303 "dhcp4_parser.yy" + case 338: // library: "library" $@52 ":" "constant string" +#line 1327 "dhcp4_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 2405 "dhcp4_parser.cc" +#line 2435 "dhcp4_parser.cc" break; - case 333: // $@53: %empty -#line 1309 "dhcp4_parser.yy" + case 339: // $@53: %empty +#line 1333 "dhcp4_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2414 "dhcp4_parser.cc" +#line 2444 "dhcp4_parser.cc" break; - case 334: // parameters: "parameters" $@53 ":" map_value -#line 1312 "dhcp4_parser.yy" + case 340: // parameters: "parameters" $@53 ":" map_value +#line 1336 "dhcp4_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2423 "dhcp4_parser.cc" +#line 2453 "dhcp4_parser.cc" break; - case 335: // $@54: %empty -#line 1318 "dhcp4_parser.yy" + case 341: // $@54: %empty +#line 1342 "dhcp4_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2431,89 +2461,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2435 "dhcp4_parser.cc" +#line 2465 "dhcp4_parser.cc" break; - case 336: // expired_leases_processing: "expired-leases-processing" $@54 ":" "{" expired_leases_params "}" -#line 1324 "dhcp4_parser.yy" + case 342: // expired_leases_processing: "expired-leases-processing" $@54 ":" "{" expired_leases_params "}" +#line 1348 "dhcp4_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2445 "dhcp4_parser.cc" +#line 2475 "dhcp4_parser.cc" break; - case 339: // expired_leases_params: expired_leases_params "," -#line 1332 "dhcp4_parser.yy" + case 345: // expired_leases_params: expired_leases_params "," +#line 1356 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2453 "dhcp4_parser.cc" +#line 2483 "dhcp4_parser.cc" break; - case 346: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1345 "dhcp4_parser.yy" + case 352: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" +#line 1369 "dhcp4_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 2463 "dhcp4_parser.cc" +#line 2493 "dhcp4_parser.cc" break; - case 347: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1351 "dhcp4_parser.yy" + case 353: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" +#line 1375 "dhcp4_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 2473 "dhcp4_parser.cc" +#line 2503 "dhcp4_parser.cc" break; - case 348: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1357 "dhcp4_parser.yy" + case 354: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" +#line 1381 "dhcp4_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 2483 "dhcp4_parser.cc" +#line 2513 "dhcp4_parser.cc" break; - case 349: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1363 "dhcp4_parser.yy" + case 355: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" +#line 1387 "dhcp4_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 2493 "dhcp4_parser.cc" +#line 2523 "dhcp4_parser.cc" break; - case 350: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1369 "dhcp4_parser.yy" + case 356: // max_reclaim_time: "max-reclaim-time" ":" "integer" +#line 1393 "dhcp4_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 2503 "dhcp4_parser.cc" +#line 2533 "dhcp4_parser.cc" break; - case 351: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1375 "dhcp4_parser.yy" + case 357: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" +#line 1399 "dhcp4_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 2513 "dhcp4_parser.cc" +#line 2543 "dhcp4_parser.cc" break; - case 352: // $@55: %empty -#line 1384 "dhcp4_parser.yy" + case 358: // $@55: %empty +#line 1408 "dhcp4_parser.yy" { ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2521,38 +2551,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET4); } -#line 2525 "dhcp4_parser.cc" +#line 2555 "dhcp4_parser.cc" break; - case 353: // subnet4_list: "subnet4" $@55 ":" "[" subnet4_list_content "]" -#line 1390 "dhcp4_parser.yy" + case 359: // subnet4_list: "subnet4" $@55 ":" "[" subnet4_list_content "]" +#line 1414 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2534 "dhcp4_parser.cc" +#line 2564 "dhcp4_parser.cc" break; - case 358: // not_empty_subnet4_list: not_empty_subnet4_list "," -#line 1404 "dhcp4_parser.yy" + case 364: // not_empty_subnet4_list: not_empty_subnet4_list "," +#line 1428 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2542 "dhcp4_parser.cc" +#line 2572 "dhcp4_parser.cc" break; - case 359: // $@56: %empty -#line 1413 "dhcp4_parser.yy" + case 365: // $@56: %empty +#line 1437 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2552 "dhcp4_parser.cc" +#line 2582 "dhcp4_parser.cc" break; - case 360: // subnet4: "{" $@56 subnet4_params "}" -#line 1417 "dhcp4_parser.yy" + case 366: // subnet4: "{" $@56 subnet4_params "}" +#line 1441 "dhcp4_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2574,153 +2604,153 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2578 "dhcp4_parser.cc" +#line 2608 "dhcp4_parser.cc" break; - case 361: // $@57: %empty -#line 1439 "dhcp4_parser.yy" + case 367: // $@57: %empty +#line 1463 "dhcp4_parser.yy" { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2588 "dhcp4_parser.cc" +#line 2618 "dhcp4_parser.cc" break; - case 362: // sub_subnet4: "{" $@57 subnet4_params "}" -#line 1443 "dhcp4_parser.yy" + case 368: // sub_subnet4: "{" $@57 subnet4_params "}" +#line 1467 "dhcp4_parser.yy" { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2598 "dhcp4_parser.cc" +#line 2628 "dhcp4_parser.cc" break; - case 365: // subnet4_params: subnet4_params "," -#line 1452 "dhcp4_parser.yy" + case 371: // subnet4_params: subnet4_params "," +#line 1476 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2606 "dhcp4_parser.cc" +#line 2636 "dhcp4_parser.cc" break; - case 411: // $@58: %empty -#line 1505 "dhcp4_parser.yy" + case 417: // $@58: %empty +#line 1529 "dhcp4_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2615 "dhcp4_parser.cc" +#line 2645 "dhcp4_parser.cc" break; - case 412: // subnet: "subnet" $@58 ":" "constant string" -#line 1508 "dhcp4_parser.yy" + case 418: // subnet: "subnet" $@58 ":" "constant string" +#line 1532 "dhcp4_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 2625 "dhcp4_parser.cc" +#line 2655 "dhcp4_parser.cc" break; - case 413: // $@59: %empty -#line 1514 "dhcp4_parser.yy" + case 419: // $@59: %empty +#line 1538 "dhcp4_parser.yy" { ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2634 "dhcp4_parser.cc" +#line 2664 "dhcp4_parser.cc" break; - case 414: // subnet_4o6_interface: "4o6-interface" $@59 ":" "constant string" -#line 1517 "dhcp4_parser.yy" + case 420: // subnet_4o6_interface: "4o6-interface" $@59 ":" "constant string" +#line 1541 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface", iface); ctx.leave(); } -#line 2644 "dhcp4_parser.cc" +#line 2674 "dhcp4_parser.cc" break; - case 415: // $@60: %empty -#line 1523 "dhcp4_parser.yy" + case 421: // $@60: %empty +#line 1547 "dhcp4_parser.yy" { ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2653 "dhcp4_parser.cc" +#line 2683 "dhcp4_parser.cc" break; - case 416: // subnet_4o6_interface_id: "4o6-interface-id" $@60 ":" "constant string" -#line 1526 "dhcp4_parser.yy" + case 422: // subnet_4o6_interface_id: "4o6-interface-id" $@60 ":" "constant string" +#line 1550 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface-id", iface); ctx.leave(); } -#line 2663 "dhcp4_parser.cc" +#line 2693 "dhcp4_parser.cc" break; - case 417: // $@61: %empty -#line 1532 "dhcp4_parser.yy" + case 423: // $@61: %empty +#line 1556 "dhcp4_parser.yy" { ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2672 "dhcp4_parser.cc" +#line 2702 "dhcp4_parser.cc" break; - case 418: // subnet_4o6_subnet: "4o6-subnet" $@61 ":" "constant string" -#line 1535 "dhcp4_parser.yy" + case 424: // subnet_4o6_subnet: "4o6-subnet" $@61 ":" "constant string" +#line 1559 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-subnet", iface); ctx.leave(); } -#line 2682 "dhcp4_parser.cc" +#line 2712 "dhcp4_parser.cc" break; - case 419: // $@62: %empty -#line 1541 "dhcp4_parser.yy" + case 425: // $@62: %empty +#line 1565 "dhcp4_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2691 "dhcp4_parser.cc" +#line 2721 "dhcp4_parser.cc" break; - case 420: // interface: "interface" $@62 ":" "constant string" -#line 1544 "dhcp4_parser.yy" + case 426: // interface: "interface" $@62 ":" "constant string" +#line 1568 "dhcp4_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 2701 "dhcp4_parser.cc" +#line 2731 "dhcp4_parser.cc" break; - case 421: // $@63: %empty -#line 1550 "dhcp4_parser.yy" + case 427: // $@63: %empty +#line 1574 "dhcp4_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2710 "dhcp4_parser.cc" +#line 2740 "dhcp4_parser.cc" break; - case 422: // client_class: "client-class" $@63 ":" "constant string" -#line 1553 "dhcp4_parser.yy" + case 428: // client_class: "client-class" $@63 ":" "constant string" +#line 1577 "dhcp4_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 2720 "dhcp4_parser.cc" +#line 2750 "dhcp4_parser.cc" break; - case 423: // $@64: %empty -#line 1559 "dhcp4_parser.yy" + case 429: // $@64: %empty +#line 1583 "dhcp4_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2728,102 +2758,102 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2732 "dhcp4_parser.cc" +#line 2762 "dhcp4_parser.cc" break; - case 424: // require_client_classes: "require-client-classes" $@64 ":" list_strings -#line 1565 "dhcp4_parser.yy" + case 430: // require_client_classes: "require-client-classes" $@64 ":" list_strings +#line 1589 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2741 "dhcp4_parser.cc" +#line 2771 "dhcp4_parser.cc" break; - case 425: // reservations_global: "reservations-global" ":" "boolean" -#line 1570 "dhcp4_parser.yy" + case 431: // reservations_global: "reservations-global" ":" "boolean" +#line 1594 "dhcp4_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 2751 "dhcp4_parser.cc" +#line 2781 "dhcp4_parser.cc" break; - case 426: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1576 "dhcp4_parser.yy" + case 432: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" +#line 1600 "dhcp4_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 2761 "dhcp4_parser.cc" +#line 2791 "dhcp4_parser.cc" break; - case 427: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1582 "dhcp4_parser.yy" + case 433: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" +#line 1606 "dhcp4_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 2771 "dhcp4_parser.cc" +#line 2801 "dhcp4_parser.cc" break; - case 428: // $@65: %empty -#line 1588 "dhcp4_parser.yy" + case 434: // $@65: %empty +#line 1612 "dhcp4_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2780 "dhcp4_parser.cc" +#line 2810 "dhcp4_parser.cc" break; - case 429: // reservation_mode: "reservation-mode" $@65 ":" hr_mode -#line 1591 "dhcp4_parser.yy" + case 435: // reservation_mode: "reservation-mode" $@65 ":" hr_mode +#line 1615 "dhcp4_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2789 "dhcp4_parser.cc" +#line 2819 "dhcp4_parser.cc" break; - case 430: // hr_mode: "disabled" -#line 1596 "dhcp4_parser.yy" + case 436: // hr_mode: "disabled" +#line 1620 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2795 "dhcp4_parser.cc" +#line 2825 "dhcp4_parser.cc" break; - case 431: // hr_mode: "out-of-pool" -#line 1597 "dhcp4_parser.yy" + case 437: // hr_mode: "out-of-pool" +#line 1621 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2801 "dhcp4_parser.cc" +#line 2831 "dhcp4_parser.cc" break; - case 432: // hr_mode: "global" -#line 1598 "dhcp4_parser.yy" + case 438: // hr_mode: "global" +#line 1622 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2807 "dhcp4_parser.cc" +#line 2837 "dhcp4_parser.cc" break; - case 433: // hr_mode: "all" -#line 1599 "dhcp4_parser.yy" + case 439: // hr_mode: "all" +#line 1623 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2813 "dhcp4_parser.cc" +#line 2843 "dhcp4_parser.cc" break; - case 434: // id: "id" ":" "integer" -#line 1602 "dhcp4_parser.yy" + case 440: // id: "id" ":" "integer" +#line 1626 "dhcp4_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 2823 "dhcp4_parser.cc" +#line 2853 "dhcp4_parser.cc" break; - case 435: // $@66: %empty -#line 1610 "dhcp4_parser.yy" + case 441: // $@66: %empty +#line 1634 "dhcp4_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2831,54 +2861,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2835 "dhcp4_parser.cc" +#line 2865 "dhcp4_parser.cc" break; - case 436: // shared_networks: "shared-networks" $@66 ":" "[" shared_networks_content "]" -#line 1616 "dhcp4_parser.yy" + case 442: // shared_networks: "shared-networks" $@66 ":" "[" shared_networks_content "]" +#line 1640 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2844 "dhcp4_parser.cc" +#line 2874 "dhcp4_parser.cc" break; - case 441: // shared_networks_list: shared_networks_list "," -#line 1629 "dhcp4_parser.yy" + case 447: // shared_networks_list: shared_networks_list "," +#line 1653 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2852 "dhcp4_parser.cc" +#line 2882 "dhcp4_parser.cc" break; - case 442: // $@67: %empty -#line 1634 "dhcp4_parser.yy" + case 448: // $@67: %empty +#line 1658 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2862 "dhcp4_parser.cc" +#line 2892 "dhcp4_parser.cc" break; - case 443: // shared_network: "{" $@67 shared_network_params "}" -#line 1638 "dhcp4_parser.yy" + case 449: // shared_network: "{" $@67 shared_network_params "}" +#line 1662 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 2870 "dhcp4_parser.cc" +#line 2900 "dhcp4_parser.cc" break; - case 446: // shared_network_params: shared_network_params "," -#line 1644 "dhcp4_parser.yy" + case 452: // shared_network_params: shared_network_params "," +#line 1668 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2878 "dhcp4_parser.cc" +#line 2908 "dhcp4_parser.cc" break; - case 487: // $@68: %empty -#line 1695 "dhcp4_parser.yy" + case 493: // $@68: %empty +#line 1719 "dhcp4_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2886,55 +2916,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2890 "dhcp4_parser.cc" +#line 2920 "dhcp4_parser.cc" break; - case 488: // option_def_list: "option-def" $@68 ":" "[" option_def_list_content "]" -#line 1701 "dhcp4_parser.yy" + case 494: // option_def_list: "option-def" $@68 ":" "[" option_def_list_content "]" +#line 1725 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2899 "dhcp4_parser.cc" +#line 2929 "dhcp4_parser.cc" break; - case 489: // $@69: %empty -#line 1709 "dhcp4_parser.yy" + case 495: // $@69: %empty +#line 1733 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2908 "dhcp4_parser.cc" +#line 2938 "dhcp4_parser.cc" break; - case 490: // sub_option_def_list: "{" $@69 option_def_list "}" -#line 1712 "dhcp4_parser.yy" + case 496: // sub_option_def_list: "{" $@69 option_def_list "}" +#line 1736 "dhcp4_parser.yy" { // parsing completed } -#line 2916 "dhcp4_parser.cc" +#line 2946 "dhcp4_parser.cc" break; - case 495: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1724 "dhcp4_parser.yy" + case 501: // not_empty_option_def_list: not_empty_option_def_list "," +#line 1748 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2924 "dhcp4_parser.cc" +#line 2954 "dhcp4_parser.cc" break; - case 496: // $@70: %empty -#line 1731 "dhcp4_parser.yy" + case 502: // $@70: %empty +#line 1755 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2934 "dhcp4_parser.cc" +#line 2964 "dhcp4_parser.cc" break; - case 497: // option_def_entry: "{" $@70 option_def_params "}" -#line 1735 "dhcp4_parser.yy" + case 503: // option_def_entry: "{" $@70 option_def_params "}" +#line 1759 "dhcp4_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)); @@ -2942,21 +2972,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2946 "dhcp4_parser.cc" +#line 2976 "dhcp4_parser.cc" break; - case 498: // $@71: %empty -#line 1746 "dhcp4_parser.yy" + case 504: // $@71: %empty +#line 1770 "dhcp4_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2956 "dhcp4_parser.cc" +#line 2986 "dhcp4_parser.cc" break; - case 499: // sub_option_def: "{" $@71 option_def_params "}" -#line 1750 "dhcp4_parser.yy" + case 505: // sub_option_def: "{" $@71 option_def_params "}" +#line 1774 "dhcp4_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)); @@ -2964,115 +2994,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2968 "dhcp4_parser.cc" +#line 2998 "dhcp4_parser.cc" break; - case 504: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1766 "dhcp4_parser.yy" + case 510: // not_empty_option_def_params: not_empty_option_def_params "," +#line 1790 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2976 "dhcp4_parser.cc" +#line 3006 "dhcp4_parser.cc" break; - case 516: // code: "code" ":" "integer" -#line 1785 "dhcp4_parser.yy" + case 522: // code: "code" ":" "integer" +#line 1809 "dhcp4_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 2986 "dhcp4_parser.cc" +#line 3016 "dhcp4_parser.cc" break; - case 518: // $@72: %empty -#line 1793 "dhcp4_parser.yy" + case 524: // $@72: %empty +#line 1817 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2995 "dhcp4_parser.cc" +#line 3025 "dhcp4_parser.cc" break; - case 519: // option_def_type: "type" $@72 ":" "constant string" -#line 1796 "dhcp4_parser.yy" + case 525: // option_def_type: "type" $@72 ":" "constant string" +#line 1820 "dhcp4_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 3005 "dhcp4_parser.cc" +#line 3035 "dhcp4_parser.cc" break; - case 520: // $@73: %empty -#line 1802 "dhcp4_parser.yy" + case 526: // $@73: %empty +#line 1826 "dhcp4_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3014 "dhcp4_parser.cc" +#line 3044 "dhcp4_parser.cc" break; - case 521: // option_def_record_types: "record-types" $@73 ":" "constant string" -#line 1805 "dhcp4_parser.yy" + case 527: // option_def_record_types: "record-types" $@73 ":" "constant string" +#line 1829 "dhcp4_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 3024 "dhcp4_parser.cc" +#line 3054 "dhcp4_parser.cc" break; - case 522: // $@74: %empty -#line 1811 "dhcp4_parser.yy" + case 528: // $@74: %empty +#line 1835 "dhcp4_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3033 "dhcp4_parser.cc" +#line 3063 "dhcp4_parser.cc" break; - case 523: // space: "space" $@74 ":" "constant string" -#line 1814 "dhcp4_parser.yy" + case 529: // space: "space" $@74 ":" "constant string" +#line 1838 "dhcp4_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 3043 "dhcp4_parser.cc" +#line 3073 "dhcp4_parser.cc" break; - case 525: // $@75: %empty -#line 1822 "dhcp4_parser.yy" + case 531: // $@75: %empty +#line 1846 "dhcp4_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3052 "dhcp4_parser.cc" +#line 3082 "dhcp4_parser.cc" break; - case 526: // option_def_encapsulate: "encapsulate" $@75 ":" "constant string" -#line 1825 "dhcp4_parser.yy" + case 532: // option_def_encapsulate: "encapsulate" $@75 ":" "constant string" +#line 1849 "dhcp4_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 3062 "dhcp4_parser.cc" +#line 3092 "dhcp4_parser.cc" break; - case 527: // option_def_array: "array" ":" "boolean" -#line 1831 "dhcp4_parser.yy" + case 533: // option_def_array: "array" ":" "boolean" +#line 1855 "dhcp4_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 3072 "dhcp4_parser.cc" +#line 3102 "dhcp4_parser.cc" break; - case 528: // $@76: %empty -#line 1841 "dhcp4_parser.yy" + case 534: // $@76: %empty +#line 1865 "dhcp4_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3080,113 +3110,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3084 "dhcp4_parser.cc" +#line 3114 "dhcp4_parser.cc" break; - case 529: // option_data_list: "option-data" $@76 ":" "[" option_data_list_content "]" -#line 1847 "dhcp4_parser.yy" + case 535: // option_data_list: "option-data" $@76 ":" "[" option_data_list_content "]" +#line 1871 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3093 "dhcp4_parser.cc" +#line 3123 "dhcp4_parser.cc" break; - case 534: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1862 "dhcp4_parser.yy" + case 540: // not_empty_option_data_list: not_empty_option_data_list "," +#line 1886 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3101 "dhcp4_parser.cc" +#line 3131 "dhcp4_parser.cc" break; - case 535: // $@77: %empty -#line 1869 "dhcp4_parser.yy" + case 541: // $@77: %empty +#line 1893 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3111 "dhcp4_parser.cc" +#line 3141 "dhcp4_parser.cc" break; - case 536: // option_data_entry: "{" $@77 option_data_params "}" -#line 1873 "dhcp4_parser.yy" + case 542: // option_data_entry: "{" $@77 option_data_params "}" +#line 1897 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3120 "dhcp4_parser.cc" +#line 3150 "dhcp4_parser.cc" break; - case 537: // $@78: %empty -#line 1881 "dhcp4_parser.yy" + case 543: // $@78: %empty +#line 1905 "dhcp4_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3130 "dhcp4_parser.cc" +#line 3160 "dhcp4_parser.cc" break; - case 538: // sub_option_data: "{" $@78 option_data_params "}" -#line 1885 "dhcp4_parser.yy" + case 544: // sub_option_data: "{" $@78 option_data_params "}" +#line 1909 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3139 "dhcp4_parser.cc" +#line 3169 "dhcp4_parser.cc" break; - case 543: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1901 "dhcp4_parser.yy" + case 549: // not_empty_option_data_params: not_empty_option_data_params "," +#line 1925 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3147 "dhcp4_parser.cc" +#line 3177 "dhcp4_parser.cc" break; - case 554: // $@79: %empty -#line 1921 "dhcp4_parser.yy" + case 560: // $@79: %empty +#line 1945 "dhcp4_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3156 "dhcp4_parser.cc" +#line 3186 "dhcp4_parser.cc" break; - case 555: // option_data_data: "data" $@79 ":" "constant string" -#line 1924 "dhcp4_parser.yy" + case 561: // option_data_data: "data" $@79 ":" "constant string" +#line 1948 "dhcp4_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 3166 "dhcp4_parser.cc" +#line 3196 "dhcp4_parser.cc" break; - case 558: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1934 "dhcp4_parser.yy" + case 564: // option_data_csv_format: "csv-format" ":" "boolean" +#line 1958 "dhcp4_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 3176 "dhcp4_parser.cc" +#line 3206 "dhcp4_parser.cc" break; - case 559: // option_data_always_send: "always-send" ":" "boolean" -#line 1940 "dhcp4_parser.yy" + case 565: // option_data_always_send: "always-send" ":" "boolean" +#line 1964 "dhcp4_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 3186 "dhcp4_parser.cc" +#line 3216 "dhcp4_parser.cc" break; - case 560: // $@80: %empty -#line 1949 "dhcp4_parser.yy" + case 566: // $@80: %empty +#line 1973 "dhcp4_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3194,103 +3224,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3198 "dhcp4_parser.cc" +#line 3228 "dhcp4_parser.cc" break; - case 561: // pools_list: "pools" $@80 ":" "[" pools_list_content "]" -#line 1955 "dhcp4_parser.yy" + case 567: // pools_list: "pools" $@80 ":" "[" pools_list_content "]" +#line 1979 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3207 "dhcp4_parser.cc" +#line 3237 "dhcp4_parser.cc" break; - case 566: // not_empty_pools_list: not_empty_pools_list "," -#line 1968 "dhcp4_parser.yy" + case 572: // not_empty_pools_list: not_empty_pools_list "," +#line 1992 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3215 "dhcp4_parser.cc" +#line 3245 "dhcp4_parser.cc" break; - case 567: // $@81: %empty -#line 1973 "dhcp4_parser.yy" + case 573: // $@81: %empty +#line 1997 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3225 "dhcp4_parser.cc" +#line 3255 "dhcp4_parser.cc" break; - case 568: // pool_list_entry: "{" $@81 pool_params "}" -#line 1977 "dhcp4_parser.yy" + case 574: // pool_list_entry: "{" $@81 pool_params "}" +#line 2001 "dhcp4_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 3235 "dhcp4_parser.cc" +#line 3265 "dhcp4_parser.cc" break; - case 569: // $@82: %empty -#line 1983 "dhcp4_parser.yy" + case 575: // $@82: %empty +#line 2007 "dhcp4_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3245 "dhcp4_parser.cc" +#line 3275 "dhcp4_parser.cc" break; - case 570: // sub_pool4: "{" $@82 pool_params "}" -#line 1987 "dhcp4_parser.yy" + case 576: // sub_pool4: "{" $@82 pool_params "}" +#line 2011 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3255 "dhcp4_parser.cc" +#line 3285 "dhcp4_parser.cc" break; - case 573: // pool_params: pool_params "," -#line 1995 "dhcp4_parser.yy" + case 579: // pool_params: pool_params "," +#line 2019 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3263 "dhcp4_parser.cc" +#line 3293 "dhcp4_parser.cc" break; - case 581: // $@83: %empty -#line 2009 "dhcp4_parser.yy" + case 587: // $@83: %empty +#line 2033 "dhcp4_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3272 "dhcp4_parser.cc" +#line 3302 "dhcp4_parser.cc" break; - case 582: // pool_entry: "pool" $@83 ":" "constant string" -#line 2012 "dhcp4_parser.yy" + case 588: // pool_entry: "pool" $@83 ":" "constant string" +#line 2036 "dhcp4_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 3282 "dhcp4_parser.cc" +#line 3312 "dhcp4_parser.cc" break; - case 583: // $@84: %empty -#line 2018 "dhcp4_parser.yy" + case 589: // $@84: %empty +#line 2042 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3290 "dhcp4_parser.cc" +#line 3320 "dhcp4_parser.cc" break; - case 584: // user_context: "user-context" $@84 ":" map_value -#line 2020 "dhcp4_parser.yy" + case 590: // user_context: "user-context" $@84 ":" map_value +#line 2044 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3313,19 +3343,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3317 "dhcp4_parser.cc" +#line 3347 "dhcp4_parser.cc" break; - case 585: // $@85: %empty -#line 2043 "dhcp4_parser.yy" + case 591: // $@85: %empty +#line 2067 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3325 "dhcp4_parser.cc" +#line 3355 "dhcp4_parser.cc" break; - case 586: // comment: "comment" $@85 ":" "constant string" -#line 2045 "dhcp4_parser.yy" + case 592: // comment: "comment" $@85 ":" "constant string" +#line 2069 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3350,11 +3380,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3354 "dhcp4_parser.cc" +#line 3384 "dhcp4_parser.cc" break; - case 587: // $@86: %empty -#line 2073 "dhcp4_parser.yy" + case 593: // $@86: %empty +#line 2097 "dhcp4_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3362,150 +3392,150 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3366 "dhcp4_parser.cc" +#line 3396 "dhcp4_parser.cc" break; - case 588: // reservations: "reservations" $@86 ":" "[" reservations_list "]" -#line 2079 "dhcp4_parser.yy" + case 594: // reservations: "reservations" $@86 ":" "[" reservations_list "]" +#line 2103 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3375 "dhcp4_parser.cc" +#line 3405 "dhcp4_parser.cc" break; - case 593: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2090 "dhcp4_parser.yy" + case 599: // not_empty_reservations_list: not_empty_reservations_list "," +#line 2114 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3383 "dhcp4_parser.cc" +#line 3413 "dhcp4_parser.cc" break; - case 594: // $@87: %empty -#line 2095 "dhcp4_parser.yy" + case 600: // $@87: %empty +#line 2119 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3393 "dhcp4_parser.cc" +#line 3423 "dhcp4_parser.cc" break; - case 595: // reservation: "{" $@87 reservation_params "}" -#line 2099 "dhcp4_parser.yy" + case 601: // reservation: "{" $@87 reservation_params "}" +#line 2123 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3402 "dhcp4_parser.cc" +#line 3432 "dhcp4_parser.cc" break; - case 596: // $@88: %empty -#line 2104 "dhcp4_parser.yy" + case 602: // $@88: %empty +#line 2128 "dhcp4_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3412 "dhcp4_parser.cc" +#line 3442 "dhcp4_parser.cc" break; - case 597: // sub_reservation: "{" $@88 reservation_params "}" -#line 2108 "dhcp4_parser.yy" + case 603: // sub_reservation: "{" $@88 reservation_params "}" +#line 2132 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3421 "dhcp4_parser.cc" +#line 3451 "dhcp4_parser.cc" break; - case 602: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2119 "dhcp4_parser.yy" + case 608: // not_empty_reservation_params: not_empty_reservation_params "," +#line 2143 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3429 "dhcp4_parser.cc" +#line 3459 "dhcp4_parser.cc" break; - case 618: // $@89: %empty -#line 2142 "dhcp4_parser.yy" + case 624: // $@89: %empty +#line 2166 "dhcp4_parser.yy" { ctx.unique("next-server", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3438 "dhcp4_parser.cc" +#line 3468 "dhcp4_parser.cc" break; - case 619: // next_server: "next-server" $@89 ":" "constant string" -#line 2145 "dhcp4_parser.yy" + case 625: // next_server: "next-server" $@89 ":" "constant string" +#line 2169 "dhcp4_parser.yy" { ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("next-server", next_server); ctx.leave(); } -#line 3448 "dhcp4_parser.cc" +#line 3478 "dhcp4_parser.cc" break; - case 620: // $@90: %empty -#line 2151 "dhcp4_parser.yy" + case 626: // $@90: %empty +#line 2175 "dhcp4_parser.yy" { ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3457 "dhcp4_parser.cc" +#line 3487 "dhcp4_parser.cc" break; - case 621: // server_hostname: "server-hostname" $@90 ":" "constant string" -#line 2154 "dhcp4_parser.yy" + case 627: // server_hostname: "server-hostname" $@90 ":" "constant string" +#line 2178 "dhcp4_parser.yy" { ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-hostname", srv); ctx.leave(); } -#line 3467 "dhcp4_parser.cc" +#line 3497 "dhcp4_parser.cc" break; - case 622: // $@91: %empty -#line 2160 "dhcp4_parser.yy" + case 628: // $@91: %empty +#line 2184 "dhcp4_parser.yy" { ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3476 "dhcp4_parser.cc" +#line 3506 "dhcp4_parser.cc" break; - case 623: // boot_file_name: "boot-file-name" $@91 ":" "constant string" -#line 2163 "dhcp4_parser.yy" + case 629: // boot_file_name: "boot-file-name" $@91 ":" "constant string" +#line 2187 "dhcp4_parser.yy" { ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-file-name", bootfile); ctx.leave(); } -#line 3486 "dhcp4_parser.cc" +#line 3516 "dhcp4_parser.cc" break; - case 624: // $@92: %empty -#line 2169 "dhcp4_parser.yy" + case 630: // $@92: %empty +#line 2193 "dhcp4_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3495 "dhcp4_parser.cc" +#line 3525 "dhcp4_parser.cc" break; - case 625: // ip_address: "ip-address" $@92 ":" "constant string" -#line 2172 "dhcp4_parser.yy" + case 631: // ip_address: "ip-address" $@92 ":" "constant string" +#line 2196 "dhcp4_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3505 "dhcp4_parser.cc" +#line 3535 "dhcp4_parser.cc" break; - case 626: // $@93: %empty -#line 2178 "dhcp4_parser.yy" + case 632: // $@93: %empty +#line 2202 "dhcp4_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3513,134 +3543,134 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3517 "dhcp4_parser.cc" +#line 3547 "dhcp4_parser.cc" break; - case 627: // ip_addresses: "ip-addresses" $@93 ":" list_strings -#line 2184 "dhcp4_parser.yy" + case 633: // ip_addresses: "ip-addresses" $@93 ":" list_strings +#line 2208 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3526 "dhcp4_parser.cc" +#line 3556 "dhcp4_parser.cc" break; - case 628: // $@94: %empty -#line 2189 "dhcp4_parser.yy" + case 634: // $@94: %empty +#line 2213 "dhcp4_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3535 "dhcp4_parser.cc" +#line 3565 "dhcp4_parser.cc" break; - case 629: // duid: "duid" $@94 ":" "constant string" -#line 2192 "dhcp4_parser.yy" + case 635: // duid: "duid" $@94 ":" "constant string" +#line 2216 "dhcp4_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 3545 "dhcp4_parser.cc" +#line 3575 "dhcp4_parser.cc" break; - case 630: // $@95: %empty -#line 2198 "dhcp4_parser.yy" + case 636: // $@95: %empty +#line 2222 "dhcp4_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3554 "dhcp4_parser.cc" +#line 3584 "dhcp4_parser.cc" break; - case 631: // hw_address: "hw-address" $@95 ":" "constant string" -#line 2201 "dhcp4_parser.yy" + case 637: // hw_address: "hw-address" $@95 ":" "constant string" +#line 2225 "dhcp4_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 3564 "dhcp4_parser.cc" +#line 3594 "dhcp4_parser.cc" break; - case 632: // $@96: %empty -#line 2207 "dhcp4_parser.yy" + case 638: // $@96: %empty +#line 2231 "dhcp4_parser.yy" { ctx.unique("client-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3573 "dhcp4_parser.cc" +#line 3603 "dhcp4_parser.cc" break; - case 633: // client_id_value: "client-id" $@96 ":" "constant string" -#line 2210 "dhcp4_parser.yy" + case 639: // client_id_value: "client-id" $@96 ":" "constant string" +#line 2234 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-id", hw); ctx.leave(); } -#line 3583 "dhcp4_parser.cc" +#line 3613 "dhcp4_parser.cc" break; - case 634: // $@97: %empty -#line 2216 "dhcp4_parser.yy" + case 640: // $@97: %empty +#line 2240 "dhcp4_parser.yy" { ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3592 "dhcp4_parser.cc" +#line 3622 "dhcp4_parser.cc" break; - case 635: // circuit_id_value: "circuit-id" $@97 ":" "constant string" -#line 2219 "dhcp4_parser.yy" + case 641: // circuit_id_value: "circuit-id" $@97 ":" "constant string" +#line 2243 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("circuit-id", hw); ctx.leave(); } -#line 3602 "dhcp4_parser.cc" +#line 3632 "dhcp4_parser.cc" break; - case 636: // $@98: %empty -#line 2225 "dhcp4_parser.yy" + case 642: // $@98: %empty +#line 2249 "dhcp4_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3611 "dhcp4_parser.cc" +#line 3641 "dhcp4_parser.cc" break; - case 637: // flex_id_value: "flex-id" $@98 ":" "constant string" -#line 2228 "dhcp4_parser.yy" + case 643: // flex_id_value: "flex-id" $@98 ":" "constant string" +#line 2252 "dhcp4_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 3621 "dhcp4_parser.cc" +#line 3651 "dhcp4_parser.cc" break; - case 638: // $@99: %empty -#line 2234 "dhcp4_parser.yy" + case 644: // $@99: %empty +#line 2258 "dhcp4_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3630 "dhcp4_parser.cc" +#line 3660 "dhcp4_parser.cc" break; - case 639: // hostname: "hostname" $@99 ":" "constant string" -#line 2237 "dhcp4_parser.yy" + case 645: // hostname: "hostname" $@99 ":" "constant string" +#line 2261 "dhcp4_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 3640 "dhcp4_parser.cc" +#line 3670 "dhcp4_parser.cc" break; - case 640: // $@100: %empty -#line 2243 "dhcp4_parser.yy" + case 646: // $@100: %empty +#line 2267 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3648,20 +3678,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3652 "dhcp4_parser.cc" +#line 3682 "dhcp4_parser.cc" break; - case 641: // reservation_client_classes: "client-classes" $@100 ":" list_strings -#line 2249 "dhcp4_parser.yy" + case 647: // reservation_client_classes: "client-classes" $@100 ":" list_strings +#line 2273 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3661 "dhcp4_parser.cc" +#line 3691 "dhcp4_parser.cc" break; - case 642: // $@101: %empty -#line 2257 "dhcp4_parser.yy" + case 648: // $@101: %empty +#line 2281 "dhcp4_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3669,20 +3699,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3673 "dhcp4_parser.cc" +#line 3703 "dhcp4_parser.cc" break; - case 643: // relay: "relay" $@101 ":" "{" relay_map "}" -#line 2263 "dhcp4_parser.yy" + case 649: // relay: "relay" $@101 ":" "{" relay_map "}" +#line 2287 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3682 "dhcp4_parser.cc" +#line 3712 "dhcp4_parser.cc" break; - case 646: // $@102: %empty -#line 2275 "dhcp4_parser.yy" + case 652: // $@102: %empty +#line 2299 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3690,95 +3720,95 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3694 "dhcp4_parser.cc" +#line 3724 "dhcp4_parser.cc" break; - case 647: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]" -#line 2281 "dhcp4_parser.yy" + case 653: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]" +#line 2305 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3703 "dhcp4_parser.cc" +#line 3733 "dhcp4_parser.cc" break; - case 650: // client_classes_list: client_classes_list "," -#line 2288 "dhcp4_parser.yy" + case 656: // client_classes_list: client_classes_list "," +#line 2312 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3711 "dhcp4_parser.cc" +#line 3741 "dhcp4_parser.cc" break; - case 651: // $@103: %empty -#line 2293 "dhcp4_parser.yy" + case 657: // $@103: %empty +#line 2317 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3721 "dhcp4_parser.cc" +#line 3751 "dhcp4_parser.cc" break; - case 652: // client_class_entry: "{" $@103 client_class_params "}" -#line 2297 "dhcp4_parser.yy" + case 658: // client_class_entry: "{" $@103 client_class_params "}" +#line 2321 "dhcp4_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 3731 "dhcp4_parser.cc" +#line 3761 "dhcp4_parser.cc" break; - case 657: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2309 "dhcp4_parser.yy" + case 663: // not_empty_client_class_params: not_empty_client_class_params "," +#line 2333 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3739 "dhcp4_parser.cc" +#line 3769 "dhcp4_parser.cc" break; - case 673: // $@104: %empty -#line 2332 "dhcp4_parser.yy" + case 679: // $@104: %empty +#line 2356 "dhcp4_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3748 "dhcp4_parser.cc" +#line 3778 "dhcp4_parser.cc" break; - case 674: // client_class_test: "test" $@104 ":" "constant string" -#line 2335 "dhcp4_parser.yy" + case 680: // client_class_test: "test" $@104 ":" "constant string" +#line 2359 "dhcp4_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 3758 "dhcp4_parser.cc" +#line 3788 "dhcp4_parser.cc" break; - case 675: // only_if_required: "only-if-required" ":" "boolean" -#line 2341 "dhcp4_parser.yy" + case 681: // only_if_required: "only-if-required" ":" "boolean" +#line 2365 "dhcp4_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 3768 "dhcp4_parser.cc" +#line 3798 "dhcp4_parser.cc" break; - case 676: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2349 "dhcp4_parser.yy" + case 682: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" +#line 2373 "dhcp4_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 3778 "dhcp4_parser.cc" +#line 3808 "dhcp4_parser.cc" break; - case 677: // $@105: %empty -#line 2357 "dhcp4_parser.yy" + case 683: // $@105: %empty +#line 2381 "dhcp4_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3786,66 +3816,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3790 "dhcp4_parser.cc" +#line 3820 "dhcp4_parser.cc" break; - case 678: // control_socket: "control-socket" $@105 ":" "{" control_socket_params "}" -#line 2363 "dhcp4_parser.yy" + case 684: // control_socket: "control-socket" $@105 ":" "{" control_socket_params "}" +#line 2387 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3799 "dhcp4_parser.cc" +#line 3829 "dhcp4_parser.cc" break; - case 681: // control_socket_params: control_socket_params "," -#line 2370 "dhcp4_parser.yy" + case 687: // control_socket_params: control_socket_params "," +#line 2394 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3807 "dhcp4_parser.cc" +#line 3837 "dhcp4_parser.cc" break; - case 687: // $@106: %empty -#line 2382 "dhcp4_parser.yy" + case 693: // $@106: %empty +#line 2406 "dhcp4_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3816 "dhcp4_parser.cc" +#line 3846 "dhcp4_parser.cc" break; - case 688: // control_socket_type: "socket-type" $@106 ":" "constant string" -#line 2385 "dhcp4_parser.yy" + case 694: // control_socket_type: "socket-type" $@106 ":" "constant string" +#line 2409 "dhcp4_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3826 "dhcp4_parser.cc" +#line 3856 "dhcp4_parser.cc" break; - case 689: // $@107: %empty -#line 2391 "dhcp4_parser.yy" + case 695: // $@107: %empty +#line 2415 "dhcp4_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3835 "dhcp4_parser.cc" +#line 3865 "dhcp4_parser.cc" break; - case 690: // control_socket_name: "socket-name" $@107 ":" "constant string" -#line 2394 "dhcp4_parser.yy" + case 696: // control_socket_name: "socket-name" $@107 ":" "constant string" +#line 2418 "dhcp4_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 3845 "dhcp4_parser.cc" +#line 3875 "dhcp4_parser.cc" break; - case 691: // $@108: %empty -#line 2403 "dhcp4_parser.yy" + case 697: // $@108: %empty +#line 2427 "dhcp4_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3853,87 +3883,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 3857 "dhcp4_parser.cc" +#line 3887 "dhcp4_parser.cc" break; - case 692: // dhcp_queue_control: "dhcp-queue-control" $@108 ":" "{" queue_control_params "}" -#line 2409 "dhcp4_parser.yy" + case 698: // dhcp_queue_control: "dhcp-queue-control" $@108 ":" "{" queue_control_params "}" +#line 2433 "dhcp4_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 3868 "dhcp4_parser.cc" +#line 3898 "dhcp4_parser.cc" break; - case 695: // queue_control_params: queue_control_params "," -#line 2418 "dhcp4_parser.yy" + case 701: // queue_control_params: queue_control_params "," +#line 2442 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3876 "dhcp4_parser.cc" +#line 3906 "dhcp4_parser.cc" break; - case 702: // enable_queue: "enable-queue" ":" "boolean" -#line 2431 "dhcp4_parser.yy" + case 708: // enable_queue: "enable-queue" ":" "boolean" +#line 2455 "dhcp4_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 3886 "dhcp4_parser.cc" +#line 3916 "dhcp4_parser.cc" break; - case 703: // $@109: %empty -#line 2437 "dhcp4_parser.yy" + case 709: // $@109: %empty +#line 2461 "dhcp4_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3895 "dhcp4_parser.cc" +#line 3925 "dhcp4_parser.cc" break; - case 704: // queue_type: "queue-type" $@109 ":" "constant string" -#line 2440 "dhcp4_parser.yy" + case 710: // queue_type: "queue-type" $@109 ":" "constant string" +#line 2464 "dhcp4_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 3905 "dhcp4_parser.cc" +#line 3935 "dhcp4_parser.cc" break; - case 705: // capacity: "capacity" ":" "integer" -#line 2446 "dhcp4_parser.yy" + case 711: // capacity: "capacity" ":" "integer" +#line 2470 "dhcp4_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 3915 "dhcp4_parser.cc" +#line 3945 "dhcp4_parser.cc" break; - case 706: // $@110: %empty -#line 2452 "dhcp4_parser.yy" + case 712: // $@110: %empty +#line 2476 "dhcp4_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3924 "dhcp4_parser.cc" +#line 3954 "dhcp4_parser.cc" break; - case 707: // arbitrary_map_entry: "constant string" $@110 ":" value -#line 2455 "dhcp4_parser.yy" + case 713: // arbitrary_map_entry: "constant string" $@110 ":" value +#line 2479 "dhcp4_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 3933 "dhcp4_parser.cc" +#line 3963 "dhcp4_parser.cc" break; - case 708: // $@111: %empty -#line 2462 "dhcp4_parser.yy" + case 714: // $@111: %empty +#line 2486 "dhcp4_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3941,291 +3971,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 3945 "dhcp4_parser.cc" +#line 3975 "dhcp4_parser.cc" break; - case 709: // dhcp_ddns: "dhcp-ddns" $@111 ":" "{" dhcp_ddns_params "}" -#line 2468 "dhcp4_parser.yy" + case 715: // dhcp_ddns: "dhcp-ddns" $@111 ":" "{" dhcp_ddns_params "}" +#line 2492 "dhcp4_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 3956 "dhcp4_parser.cc" +#line 3986 "dhcp4_parser.cc" break; - case 710: // $@112: %empty -#line 2475 "dhcp4_parser.yy" + case 716: // $@112: %empty +#line 2499 "dhcp4_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3966 "dhcp4_parser.cc" +#line 3996 "dhcp4_parser.cc" break; - case 711: // sub_dhcp_ddns: "{" $@112 dhcp_ddns_params "}" -#line 2479 "dhcp4_parser.yy" + case 717: // sub_dhcp_ddns: "{" $@112 dhcp_ddns_params "}" +#line 2503 "dhcp4_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 3976 "dhcp4_parser.cc" +#line 4006 "dhcp4_parser.cc" break; - case 714: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2487 "dhcp4_parser.yy" + case 720: // dhcp_ddns_params: dhcp_ddns_params "," +#line 2511 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3984 "dhcp4_parser.cc" +#line 4014 "dhcp4_parser.cc" break; - case 733: // enable_updates: "enable-updates" ":" "boolean" -#line 2512 "dhcp4_parser.yy" + case 739: // enable_updates: "enable-updates" ":" "boolean" +#line 2536 "dhcp4_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 3994 "dhcp4_parser.cc" +#line 4024 "dhcp4_parser.cc" break; - case 734: // $@113: %empty -#line 2518 "dhcp4_parser.yy" + case 740: // $@113: %empty +#line 2542 "dhcp4_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4003 "dhcp4_parser.cc" +#line 4033 "dhcp4_parser.cc" break; - case 735: // server_ip: "server-ip" $@113 ":" "constant string" -#line 2521 "dhcp4_parser.yy" + case 741: // server_ip: "server-ip" $@113 ":" "constant string" +#line 2545 "dhcp4_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 4013 "dhcp4_parser.cc" +#line 4043 "dhcp4_parser.cc" break; - case 736: // server_port: "server-port" ":" "integer" -#line 2527 "dhcp4_parser.yy" + case 742: // server_port: "server-port" ":" "integer" +#line 2551 "dhcp4_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 4023 "dhcp4_parser.cc" +#line 4053 "dhcp4_parser.cc" break; - case 737: // $@114: %empty -#line 2533 "dhcp4_parser.yy" + case 743: // $@114: %empty +#line 2557 "dhcp4_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4032 "dhcp4_parser.cc" +#line 4062 "dhcp4_parser.cc" break; - case 738: // sender_ip: "sender-ip" $@114 ":" "constant string" -#line 2536 "dhcp4_parser.yy" + case 744: // sender_ip: "sender-ip" $@114 ":" "constant string" +#line 2560 "dhcp4_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 4042 "dhcp4_parser.cc" +#line 4072 "dhcp4_parser.cc" break; - case 739: // sender_port: "sender-port" ":" "integer" -#line 2542 "dhcp4_parser.yy" + case 745: // sender_port: "sender-port" ":" "integer" +#line 2566 "dhcp4_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 4052 "dhcp4_parser.cc" +#line 4082 "dhcp4_parser.cc" break; - case 740: // max_queue_size: "max-queue-size" ":" "integer" -#line 2548 "dhcp4_parser.yy" + case 746: // max_queue_size: "max-queue-size" ":" "integer" +#line 2572 "dhcp4_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 4062 "dhcp4_parser.cc" +#line 4092 "dhcp4_parser.cc" break; - case 741: // $@115: %empty -#line 2554 "dhcp4_parser.yy" + case 747: // $@115: %empty +#line 2578 "dhcp4_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4071 "dhcp4_parser.cc" +#line 4101 "dhcp4_parser.cc" break; - case 742: // ncr_protocol: "ncr-protocol" $@115 ":" ncr_protocol_value -#line 2557 "dhcp4_parser.yy" + case 748: // ncr_protocol: "ncr-protocol" $@115 ":" ncr_protocol_value +#line 2581 "dhcp4_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4080 "dhcp4_parser.cc" +#line 4110 "dhcp4_parser.cc" break; - case 743: // ncr_protocol_value: "udp" -#line 2563 "dhcp4_parser.yy" + case 749: // ncr_protocol_value: "udp" +#line 2587 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4086 "dhcp4_parser.cc" +#line 4116 "dhcp4_parser.cc" break; - case 744: // ncr_protocol_value: "tcp" -#line 2564 "dhcp4_parser.yy" + case 750: // ncr_protocol_value: "tcp" +#line 2588 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4092 "dhcp4_parser.cc" +#line 4122 "dhcp4_parser.cc" break; - case 745: // $@116: %empty -#line 2567 "dhcp4_parser.yy" + case 751: // $@116: %empty +#line 2591 "dhcp4_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4101 "dhcp4_parser.cc" +#line 4131 "dhcp4_parser.cc" break; - case 746: // ncr_format: "ncr-format" $@116 ":" "JSON" -#line 2570 "dhcp4_parser.yy" + case 752: // ncr_format: "ncr-format" $@116 ":" "JSON" +#line 2594 "dhcp4_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4111 "dhcp4_parser.cc" +#line 4141 "dhcp4_parser.cc" break; - case 747: // $@117: %empty -#line 2577 "dhcp4_parser.yy" + case 753: // $@117: %empty +#line 2601 "dhcp4_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4120 "dhcp4_parser.cc" +#line 4150 "dhcp4_parser.cc" break; - case 748: // dep_qualifying_suffix: "qualifying-suffix" $@117 ":" "constant string" -#line 2580 "dhcp4_parser.yy" + case 754: // dep_qualifying_suffix: "qualifying-suffix" $@117 ":" "constant string" +#line 2604 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4130 "dhcp4_parser.cc" +#line 4160 "dhcp4_parser.cc" break; - case 749: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2587 "dhcp4_parser.yy" + case 755: // dep_override_no_update: "override-no-update" ":" "boolean" +#line 2611 "dhcp4_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4140 "dhcp4_parser.cc" +#line 4170 "dhcp4_parser.cc" break; - case 750: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2594 "dhcp4_parser.yy" + case 756: // dep_override_client_update: "override-client-update" ":" "boolean" +#line 2618 "dhcp4_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4150 "dhcp4_parser.cc" +#line 4180 "dhcp4_parser.cc" break; - case 751: // $@118: %empty -#line 2601 "dhcp4_parser.yy" + case 757: // $@118: %empty +#line 2625 "dhcp4_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4159 "dhcp4_parser.cc" +#line 4189 "dhcp4_parser.cc" break; - case 752: // dep_replace_client_name: "replace-client-name" $@118 ":" ddns_replace_client_name_value -#line 2604 "dhcp4_parser.yy" + case 758: // dep_replace_client_name: "replace-client-name" $@118 ":" ddns_replace_client_name_value +#line 2628 "dhcp4_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4168 "dhcp4_parser.cc" +#line 4198 "dhcp4_parser.cc" break; - case 753: // $@119: %empty -#line 2610 "dhcp4_parser.yy" + case 759: // $@119: %empty +#line 2634 "dhcp4_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4177 "dhcp4_parser.cc" +#line 4207 "dhcp4_parser.cc" break; - case 754: // dep_generated_prefix: "generated-prefix" $@119 ":" "constant string" -#line 2613 "dhcp4_parser.yy" + case 760: // dep_generated_prefix: "generated-prefix" $@119 ":" "constant string" +#line 2637 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4187 "dhcp4_parser.cc" +#line 4217 "dhcp4_parser.cc" break; - case 755: // $@120: %empty -#line 2620 "dhcp4_parser.yy" + case 761: // $@120: %empty +#line 2644 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4196 "dhcp4_parser.cc" +#line 4226 "dhcp4_parser.cc" break; - case 756: // dep_hostname_char_set: "hostname-char-set" $@120 ":" "constant string" -#line 2623 "dhcp4_parser.yy" + case 762: // dep_hostname_char_set: "hostname-char-set" $@120 ":" "constant string" +#line 2647 "dhcp4_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); ctx.leave(); } -#line 4206 "dhcp4_parser.cc" +#line 4236 "dhcp4_parser.cc" break; - case 757: // $@121: %empty -#line 2630 "dhcp4_parser.yy" + case 763: // $@121: %empty +#line 2654 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4215 "dhcp4_parser.cc" +#line 4245 "dhcp4_parser.cc" break; - case 758: // dep_hostname_char_replacement: "hostname-char-replacement" $@121 ":" "constant string" -#line 2633 "dhcp4_parser.yy" + case 764: // dep_hostname_char_replacement: "hostname-char-replacement" $@121 ":" "constant string" +#line 2657 "dhcp4_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); ctx.leave(); } -#line 4225 "dhcp4_parser.cc" +#line 4255 "dhcp4_parser.cc" break; - case 759: // $@122: %empty -#line 2642 "dhcp4_parser.yy" + case 765: // $@122: %empty +#line 2666 "dhcp4_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4233,48 +4263,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4237 "dhcp4_parser.cc" +#line 4267 "dhcp4_parser.cc" break; - case 760: // config_control: "config-control" $@122 ":" "{" config_control_params "}" -#line 2648 "dhcp4_parser.yy" + case 766: // config_control: "config-control" $@122 ":" "{" config_control_params "}" +#line 2672 "dhcp4_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4247 "dhcp4_parser.cc" +#line 4277 "dhcp4_parser.cc" break; - case 761: // $@123: %empty -#line 2654 "dhcp4_parser.yy" + case 767: // $@123: %empty +#line 2678 "dhcp4_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4257 "dhcp4_parser.cc" +#line 4287 "dhcp4_parser.cc" break; - case 762: // sub_config_control: "{" $@123 config_control_params "}" -#line 2658 "dhcp4_parser.yy" + case 768: // sub_config_control: "{" $@123 config_control_params "}" +#line 2682 "dhcp4_parser.yy" { // No config_control params are required // parsing completed } -#line 4266 "dhcp4_parser.cc" +#line 4296 "dhcp4_parser.cc" break; - case 765: // config_control_params: config_control_params "," -#line 2666 "dhcp4_parser.yy" + case 771: // config_control_params: config_control_params "," +#line 2690 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4274 "dhcp4_parser.cc" +#line 4304 "dhcp4_parser.cc" break; - case 768: // $@124: %empty -#line 2676 "dhcp4_parser.yy" + case 774: // $@124: %empty +#line 2700 "dhcp4_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4282,30 +4312,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4286 "dhcp4_parser.cc" +#line 4316 "dhcp4_parser.cc" break; - case 769: // config_databases: "config-databases" $@124 ":" "[" database_list "]" -#line 2682 "dhcp4_parser.yy" + case 775: // config_databases: "config-databases" $@124 ":" "[" database_list "]" +#line 2706 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4295 "dhcp4_parser.cc" +#line 4325 "dhcp4_parser.cc" break; - case 770: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2687 "dhcp4_parser.yy" + case 776: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" +#line 2711 "dhcp4_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 4305 "dhcp4_parser.cc" +#line 4335 "dhcp4_parser.cc" break; - case 771: // $@125: %empty -#line 2695 "dhcp4_parser.yy" + case 777: // $@125: %empty +#line 2719 "dhcp4_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4313,83 +4343,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4317 "dhcp4_parser.cc" +#line 4347 "dhcp4_parser.cc" break; - case 772: // loggers: "loggers" $@125 ":" "[" loggers_entries "]" -#line 2701 "dhcp4_parser.yy" + case 778: // loggers: "loggers" $@125 ":" "[" loggers_entries "]" +#line 2725 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4326 "dhcp4_parser.cc" +#line 4356 "dhcp4_parser.cc" break; - case 775: // loggers_entries: loggers_entries "," -#line 2710 "dhcp4_parser.yy" + case 781: // loggers_entries: loggers_entries "," +#line 2734 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4334 "dhcp4_parser.cc" +#line 4364 "dhcp4_parser.cc" break; - case 776: // $@126: %empty -#line 2716 "dhcp4_parser.yy" + case 782: // $@126: %empty +#line 2740 "dhcp4_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4344 "dhcp4_parser.cc" +#line 4374 "dhcp4_parser.cc" break; - case 777: // logger_entry: "{" $@126 logger_params "}" -#line 2720 "dhcp4_parser.yy" + case 783: // logger_entry: "{" $@126 logger_params "}" +#line 2744 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4352 "dhcp4_parser.cc" +#line 4382 "dhcp4_parser.cc" break; - case 780: // logger_params: logger_params "," -#line 2726 "dhcp4_parser.yy" + case 786: // logger_params: logger_params "," +#line 2750 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4360 "dhcp4_parser.cc" +#line 4390 "dhcp4_parser.cc" break; - case 788: // debuglevel: "debuglevel" ":" "integer" -#line 2740 "dhcp4_parser.yy" + case 794: // debuglevel: "debuglevel" ":" "integer" +#line 2764 "dhcp4_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 4370 "dhcp4_parser.cc" +#line 4400 "dhcp4_parser.cc" break; - case 789: // $@127: %empty -#line 2746 "dhcp4_parser.yy" + case 795: // $@127: %empty +#line 2770 "dhcp4_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4379 "dhcp4_parser.cc" +#line 4409 "dhcp4_parser.cc" break; - case 790: // severity: "severity" $@127 ":" "constant string" -#line 2749 "dhcp4_parser.yy" + case 796: // severity: "severity" $@127 ":" "constant string" +#line 2773 "dhcp4_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 4389 "dhcp4_parser.cc" +#line 4419 "dhcp4_parser.cc" break; - case 791: // $@128: %empty -#line 2755 "dhcp4_parser.yy" + case 797: // $@128: %empty +#line 2779 "dhcp4_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4397,122 +4427,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4401 "dhcp4_parser.cc" +#line 4431 "dhcp4_parser.cc" break; - case 792: // output_options_list: "output_options" $@128 ":" "[" output_options_list_content "]" -#line 2761 "dhcp4_parser.yy" + case 798: // output_options_list: "output_options" $@128 ":" "[" output_options_list_content "]" +#line 2785 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4410 "dhcp4_parser.cc" +#line 4440 "dhcp4_parser.cc" break; - case 795: // output_options_list_content: output_options_list_content "," -#line 2768 "dhcp4_parser.yy" + case 801: // output_options_list_content: output_options_list_content "," +#line 2792 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4418 "dhcp4_parser.cc" +#line 4448 "dhcp4_parser.cc" break; - case 796: // $@129: %empty -#line 2773 "dhcp4_parser.yy" + case 802: // $@129: %empty +#line 2797 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4428 "dhcp4_parser.cc" +#line 4458 "dhcp4_parser.cc" break; - case 797: // output_entry: "{" $@129 output_params_list "}" -#line 2777 "dhcp4_parser.yy" + case 803: // output_entry: "{" $@129 output_params_list "}" +#line 2801 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4436 "dhcp4_parser.cc" +#line 4466 "dhcp4_parser.cc" break; - case 800: // output_params_list: output_params_list "," -#line 2783 "dhcp4_parser.yy" + case 806: // output_params_list: output_params_list "," +#line 2807 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4444 "dhcp4_parser.cc" +#line 4474 "dhcp4_parser.cc" break; - case 806: // $@130: %empty -#line 2795 "dhcp4_parser.yy" + case 812: // $@130: %empty +#line 2819 "dhcp4_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4453 "dhcp4_parser.cc" +#line 4483 "dhcp4_parser.cc" break; - case 807: // output: "output" $@130 ":" "constant string" -#line 2798 "dhcp4_parser.yy" + case 813: // output: "output" $@130 ":" "constant string" +#line 2822 "dhcp4_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 4463 "dhcp4_parser.cc" +#line 4493 "dhcp4_parser.cc" break; - case 808: // flush: "flush" ":" "boolean" -#line 2804 "dhcp4_parser.yy" + case 814: // flush: "flush" ":" "boolean" +#line 2828 "dhcp4_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 4473 "dhcp4_parser.cc" +#line 4503 "dhcp4_parser.cc" break; - case 809: // maxsize: "maxsize" ":" "integer" -#line 2810 "dhcp4_parser.yy" + case 815: // maxsize: "maxsize" ":" "integer" +#line 2834 "dhcp4_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 4483 "dhcp4_parser.cc" +#line 4513 "dhcp4_parser.cc" break; - case 810: // maxver: "maxver" ":" "integer" -#line 2816 "dhcp4_parser.yy" + case 816: // maxver: "maxver" ":" "integer" +#line 2840 "dhcp4_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 4493 "dhcp4_parser.cc" +#line 4523 "dhcp4_parser.cc" break; - case 811: // $@131: %empty -#line 2822 "dhcp4_parser.yy" + case 817: // $@131: %empty +#line 2846 "dhcp4_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4502 "dhcp4_parser.cc" +#line 4532 "dhcp4_parser.cc" break; - case 812: // pattern: "pattern" $@131 ":" "constant string" -#line 2825 "dhcp4_parser.yy" + case 818: // pattern: "pattern" $@131 ":" "constant string" +#line 2849 "dhcp4_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 4512 "dhcp4_parser.cc" +#line 4542 "dhcp4_parser.cc" break; - case 813: // $@132: %empty -#line 2831 "dhcp4_parser.yy" + case 819: // $@132: %empty +#line 2855 "dhcp4_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4520,38 +4550,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4524 "dhcp4_parser.cc" +#line 4554 "dhcp4_parser.cc" break; - case 814: // compatibility: "compatibility" $@132 ":" "{" compatibility_params "}" -#line 2837 "dhcp4_parser.yy" + case 820: // compatibility: "compatibility" $@132 ":" "{" compatibility_params "}" +#line 2861 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4533 "dhcp4_parser.cc" +#line 4563 "dhcp4_parser.cc" break; - case 817: // compatibility_params: compatibility_params "," -#line 2844 "dhcp4_parser.yy" + case 823: // compatibility_params: compatibility_params "," +#line 2868 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4541 "dhcp4_parser.cc" +#line 4571 "dhcp4_parser.cc" break; - case 820: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 2853 "dhcp4_parser.yy" + case 826: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" +#line 2877 "dhcp4_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 4551 "dhcp4_parser.cc" +#line 4581 "dhcp4_parser.cc" break; -#line 4555 "dhcp4_parser.cc" +#line 4585 "dhcp4_parser.cc" default: break; @@ -4903,139 +4933,140 @@ namespace isc { namespace dhcp { } - const short Dhcp4Parser::yypact_ninf_ = -971; + const short Dhcp4Parser::yypact_ninf_ = -980; const signed char Dhcp4Parser::yytable_ninf_ = -1; const short Dhcp4Parser::yypact_[] = { - 429, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 39, 38, 26, 48, 62, 74, - 92, 96, 106, 114, 118, 140, 148, 163, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 38, -152, 125, 132, 126, 294, - -50, 315, -16, 80, 200, -84, 617, 77, -971, 181, - 154, 228, 209, 258, -971, 34, -971, -971, -971, -971, - 264, 266, 275, -971, -971, -971, -971, -971, -971, 276, - 300, 325, 332, 348, 360, 361, 373, 377, 383, 384, - -971, 385, 386, 387, 388, 389, -971, -971, -971, 391, - 400, 401, -971, -971, -971, 405, -971, -971, -971, -971, - 406, 408, 409, -971, -971, -971, -971, -971, 412, -971, - -971, -971, -971, -971, -971, 415, 416, 417, -971, -971, - 419, -971, 56, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - 421, 422, 423, 424, -971, 79, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, 425, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - 85, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, 93, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, 343, 427, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, 426, - -971, -971, 428, -971, -971, -971, 431, -971, -971, 435, - 433, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 442, 443, -971, -971, -971, -971, - 444, 448, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 120, -971, -971, -971, 449, -971, - -971, 450, -971, 451, 452, -971, -971, 454, 456, -971, - -971, -971, -971, -971, -971, -971, 121, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 458, 128, -971, -971, -971, -971, - 38, 38, -971, 263, 459, -971, -971, 462, 466, 472, - 274, 277, 278, 477, 480, 482, 483, 484, 489, 295, - 298, 299, 302, 303, 290, 308, 309, 316, 306, 311, - 515, 318, 320, 319, 321, 322, 521, 526, 527, 333, - 334, 335, 528, 538, 539, 341, 542, 544, 545, 546, - 346, 349, 351, 556, 557, 560, 562, 563, 365, 567, - 568, 570, 574, 575, 578, 378, 379, 399, 586, 587, - -971, 132, -971, 588, 601, 602, 407, 432, 410, 411, - 126, -971, 627, 628, 630, 632, 634, 636, 436, 642, - 643, 644, 294, -971, 645, -50, -971, 646, 648, 649, - 650, 651, 652, 655, 656, -971, 315, -971, 657, 658, - 460, 667, 671, 673, 473, -971, 80, 675, 475, 476, - -971, 200, 678, 679, 179, -971, 479, 685, 686, 488, - 688, 490, 502, 702, 703, 503, 516, 718, 721, 722, - 723, 617, -971, 728, 530, 77, -971, -971, -971, 730, - 729, 732, 734, 736, -971, -971, -971, 533, 543, 548, - 737, 739, 746, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 551, -971, -971, -971, -971, -971, - -94, 554, 558, -971, -971, -971, 753, 754, 756, -971, - 757, 758, 564, 231, -971, -971, -971, 759, 762, 763, - 764, 777, -971, 778, 779, 780, 781, 590, 591, -971, - -971, -971, 765, 782, -971, 789, 172, 301, -971, -971, - -971, -971, -971, 593, 594, 595, 793, 597, 598, -971, - 789, 599, 795, -971, 603, -971, 789, 604, 605, 608, - 609, 610, 611, 612, -971, 613, 614, -971, 615, 616, - 618, -971, -971, 619, -971, -971, -971, 620, 758, -971, - -971, 621, 622, -971, 623, -971, -971, 13, 659, -971, - -971, -94, 624, 626, 629, -971, 798, -971, -971, 38, - 132, 77, 126, 802, -971, -971, -971, 552, 552, 797, - -971, -971, -971, -971, -971, -971, -971, -971, -971, 823, - 825, 826, 827, -971, -971, -971, -971, -971, -971, -971, - -971, -17, 828, 829, 831, 119, 82, 184, 147, 617, - -971, -971, 832, -144, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, 833, -971, -971, -971, -971, - 122, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, 797, - -971, 136, 151, 170, -971, 171, -971, -971, -971, -971, - -971, -971, 837, 838, 839, 840, 841, 842, 843, -971, - 844, -971, -971, -971, -971, -971, 178, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, 213, -971, 845, 846, - -971, -971, 847, 849, -971, -971, 848, 852, -971, -971, - 850, 854, -971, -971, 853, 855, -971, -971, -971, -971, - -971, -971, 94, -971, -971, -971, -971, -971, -971, -971, - 150, -971, -971, 856, 857, -971, -971, 858, 860, -971, - 861, 862, 863, 864, 865, 866, 215, -971, -971, -971, - -971, -971, -971, -971, 867, 868, 869, -971, 257, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - 259, -971, -971, -971, 870, -971, 871, -971, -971, -971, - 261, -971, -971, -971, -971, -971, 268, -971, 185, -971, - 872, -971, 269, -971, -971, 676, -971, 873, 874, -971, - -971, -971, -971, 875, 876, -971, -971, -971, 877, 802, - -971, 880, 881, 882, 883, 647, 683, 677, 684, 687, - 689, 690, 887, 691, 891, 892, 893, 894, 552, -971, - -971, 552, -971, 797, 294, -971, 823, 80, -971, 825, - 200, -971, 826, 635, -971, 827, -17, -971, 555, 828, - -971, 315, -971, 829, -84, -971, 831, 696, 697, 698, - 699, 700, 701, 119, -971, 704, 705, 708, 82, -971, - 901, 902, 184, -971, 707, 910, 712, 916, 147, -971, - -971, 135, 832, -971, 717, -144, -971, -971, 919, 927, - -50, -971, 833, 942, -971, -971, 747, -971, 305, 750, - 772, 783, -971, -971, -971, -971, -971, -971, -971, 331, - -971, 787, 788, 799, 800, -971, 280, -971, 292, -971, - 923, -971, 956, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, 293, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, 977, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, 974, 1012, -971, -971, -971, -971, -971, 1037, - -971, 310, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, 859, 878, -971, -971, 879, -971, - 38, -971, -971, 1045, -971, -971, -971, -971, -971, 312, - -971, -971, -971, -971, -971, -971, -971, -971, 884, 327, - -971, 789, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, 635, -971, 1046, 851, -971, 555, -971, -971, - -971, -971, -971, -971, 1050, 885, 1051, 135, -971, -971, - -971, -971, -971, 888, -971, -971, 1052, -971, 889, -971, - -971, 1053, -971, -971, 347, -971, -100, 1053, -971, -971, - 1054, 1055, 1058, -971, 330, -971, -971, -971, -971, -971, - -971, -971, 1059, 890, 886, 895, 1060, -100, -971, 897, - -971, -971, -971, 899, -971, -971, -971 + 152, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 71, 38, 26, 75, 82, 110, + 114, 146, 148, 185, 187, 198, 204, 231, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 38, -155, 115, 184, 126, 632, + -53, 74, 186, 76, -9, -87, 433, 98, -980, 129, + 144, 276, 279, 288, -980, 34, -980, -980, -980, -980, + 289, 322, 334, -980, -980, -980, -980, -980, -980, 369, + 375, 381, 384, 386, 387, 388, 389, 390, 391, 392, + -980, 393, 397, 412, 413, 414, -980, -980, -980, 421, + 422, 423, -980, -980, -980, 424, -980, -980, -980, -980, + 425, 426, 427, -980, -980, -980, -980, -980, 428, -980, + -980, -980, -980, -980, -980, 430, 431, 432, -980, -980, + 434, -980, 36, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + 435, 436, 437, 438, -980, 72, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, 439, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + 73, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, 100, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, 429, 441, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, 443, + -980, -980, 442, -980, -980, -980, 448, -980, -980, 446, + 444, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 451, 452, -980, -980, -980, -980, + 450, 457, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 120, -980, -980, -980, 458, -980, + -980, 459, -980, 461, 462, -980, -980, 463, 464, -980, + -980, -980, -980, -980, -980, -980, 121, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 466, 128, -980, -980, -980, -980, + 38, 38, -980, 271, 475, -980, -980, 477, 478, 480, + 280, 285, 287, 482, 483, 492, 494, 497, 498, 299, + 300, 303, 306, 307, 309, 312, 313, 314, 308, 318, + 519, 320, 321, 323, 324, 328, 521, 526, 536, 335, + 336, 338, 538, 545, 546, 345, 550, 552, 556, 557, + 356, 359, 360, 567, 568, 570, 574, 575, 376, 579, + 580, 582, 583, 584, 585, 395, 396, 398, 601, 603, + -980, 184, -980, 604, 607, 608, 405, 406, 409, 410, + 126, -980, 613, 614, 615, 616, 617, 618, 417, 620, + 621, 622, 632, -980, 623, -53, -980, 624, 625, 626, + 627, 628, 630, 633, 635, -980, 74, -980, 636, 637, + 440, 638, 639, 640, 445, -980, 76, 643, 447, 449, + -980, -9, 644, 645, 24, -980, 460, 646, 648, 453, + 650, 454, 465, 652, 654, 467, 469, 662, 663, 669, + 670, 433, -980, 674, 473, 98, -980, -980, -980, 676, + 629, 675, 677, 682, -980, -980, -980, 476, 485, 486, + 685, 686, 678, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 500, -980, -980, -980, -980, -980, + -11, 501, 502, -980, -980, -980, 703, 713, 717, -980, + 719, 718, 522, 193, -980, -980, -980, 721, 727, 728, + 729, 736, -980, 737, 738, 739, 743, 531, 548, -980, + -980, -980, 746, 747, -980, 752, 211, 220, -980, -980, + -980, -980, -980, 553, 554, 555, 756, 564, 565, -980, + 752, 566, 755, -980, 569, -980, 752, 571, 572, 573, + 576, 577, 578, 581, -980, 586, 587, -980, 588, 589, + 590, -980, -980, 591, -980, -980, -980, 592, 718, -980, + -980, 605, 606, -980, 619, -980, -980, 13, 602, -980, + -980, -11, 631, 634, 641, -980, 767, -980, -980, 38, + 184, 98, 126, 748, -980, -980, -980, 361, 361, 772, + -980, -980, -980, -980, -980, -980, -980, -980, -980, 773, + 777, 778, 780, -980, -980, -980, -980, -980, -980, -980, + -980, 250, 781, 782, 783, 174, -47, 83, 118, 433, + -980, -980, 815, -136, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, 816, -980, -980, -980, -980, + 239, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, 772, + -980, 136, 164, 170, -980, 182, -980, -980, -980, -980, + -980, -980, 821, 824, 825, 826, 827, 828, 829, 830, + 831, 834, -980, 838, -980, -980, -980, -980, -980, 183, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, 218, -980, 841, 845, -980, -980, 843, 850, + -980, -980, 848, 853, -980, -980, 851, 856, -980, -980, + 854, 858, -980, -980, -980, -980, -980, -980, 87, -980, + -980, -980, -980, -980, -980, -980, 140, -980, -980, 857, + 859, -980, -980, 861, 862, -980, 840, 860, 864, 865, + 866, 867, 219, -980, -980, -980, -980, -980, -980, -980, + 868, 869, 870, -980, 227, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, 234, -980, -980, -980, + 871, -980, 872, -980, -980, -980, 274, -980, -980, -980, + -980, -980, 275, -980, 163, -980, 873, -980, 316, -980, + -980, 673, -980, 874, 876, -980, -980, -980, -980, 875, + 878, -980, -980, -980, 877, 748, -980, 881, 882, 883, + 884, 683, 684, 687, 688, 689, 691, 692, 693, 694, + 695, 886, 696, 887, 890, 899, 900, 361, -980, -980, + 361, -980, 772, 632, -980, 773, 76, -980, 777, -9, + -980, 778, 735, -980, 780, 250, -980, 278, 781, -980, + 74, -980, 782, -87, -980, 783, 699, 700, 701, 702, + 704, 707, 174, -980, 706, 709, 711, -47, -980, 905, + 914, 83, -980, 712, 917, 723, 919, 118, -980, -980, + -28, 815, -980, 716, -136, -980, -980, 925, 879, -53, + -980, 816, 930, -980, -980, 734, -980, 169, 750, 753, + 768, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 302, -980, 785, 786, 789, 793, -980, 317, -980, + 319, -980, 953, -980, 975, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, 327, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 995, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 1002, 1008, -980, -980, -980, -980, + -980, 1016, -980, 329, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, 849, 863, -980, -980, + 880, -980, 38, -980, -980, 1054, -980, -980, -980, -980, + -980, 331, -980, -980, -980, -980, -980, -980, -980, -980, + 885, 378, -980, 752, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 735, -980, 1055, 855, -980, 278, + -980, -980, -980, -980, -980, -980, 1060, 888, 1061, -28, + -980, -980, -980, -980, -980, 891, -980, -980, 1062, -980, + 892, -980, -980, 1059, -980, -980, 181, -980, 109, 1059, + -980, -980, 1065, 1066, 1067, -980, 379, -980, -980, -980, + -980, -980, -980, -980, 1068, 893, 889, 894, 1069, 109, + -980, 897, -980, -980, -980, 898, -980, -980, -980 }; const short @@ -5045,17 +5076,17 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 44, 36, 32, 31, 28, 29, 30, 35, 3, 33, 34, - 59, 5, 65, 7, 192, 9, 361, 11, 569, 13, - 596, 15, 489, 17, 498, 19, 537, 21, 323, 23, - 710, 25, 761, 27, 46, 39, 0, 0, 0, 0, - 0, 598, 0, 500, 539, 0, 0, 0, 48, 0, - 47, 0, 0, 40, 61, 0, 63, 759, 177, 210, - 0, 0, 0, 618, 620, 622, 208, 218, 220, 0, + 59, 5, 65, 7, 192, 9, 367, 11, 575, 13, + 602, 15, 495, 17, 504, 19, 543, 21, 329, 23, + 716, 25, 767, 27, 46, 39, 0, 0, 0, 0, + 0, 604, 0, 506, 545, 0, 0, 0, 48, 0, + 47, 0, 0, 40, 61, 0, 63, 765, 177, 210, + 0, 0, 0, 624, 626, 628, 208, 218, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 154, 161, 163, 0, - 0, 0, 352, 487, 528, 0, 435, 583, 585, 428, - 0, 0, 0, 285, 646, 587, 314, 335, 0, 300, - 677, 691, 708, 167, 169, 0, 0, 0, 771, 813, + 0, 0, 358, 493, 534, 0, 441, 589, 591, 434, + 0, 0, 0, 291, 652, 593, 320, 341, 0, 306, + 683, 697, 714, 167, 169, 0, 0, 0, 777, 819, 0, 133, 0, 67, 70, 71, 72, 73, 74, 108, 109, 110, 111, 112, 75, 103, 132, 92, 93, 94, 116, 117, 118, 119, 120, 121, 122, 123, 114, 115, @@ -5064,25 +5095,25 @@ namespace isc { namespace dhcp { 77, 84, 85, 98, 99, 101, 95, 96, 97, 83, 88, 89, 90, 91, 102, 113, 131, 194, 196, 200, 0, 0, 0, 0, 191, 0, 179, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 413, 415, 417, 560, - 411, 419, 0, 423, 421, 642, 410, 366, 367, 368, - 369, 370, 394, 395, 396, 397, 398, 384, 385, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 0, 363, 373, 389, 390, 391, 374, 376, 377, 380, - 381, 382, 379, 375, 371, 372, 392, 393, 378, 386, - 387, 388, 383, 581, 580, 576, 577, 575, 0, 571, - 574, 578, 579, 640, 628, 630, 634, 632, 638, 636, - 624, 617, 611, 615, 616, 0, 599, 600, 612, 613, - 614, 608, 603, 609, 605, 606, 607, 610, 604, 0, - 518, 263, 0, 522, 520, 525, 0, 514, 515, 0, - 501, 502, 505, 517, 506, 507, 508, 524, 509, 510, - 511, 512, 513, 554, 0, 0, 552, 553, 556, 557, - 0, 540, 541, 544, 545, 546, 547, 548, 549, 550, - 551, 331, 333, 328, 0, 325, 329, 330, 0, 747, - 734, 0, 737, 0, 0, 741, 745, 0, 0, 751, - 753, 755, 757, 732, 730, 731, 0, 712, 715, 716, - 717, 718, 719, 720, 721, 722, 727, 723, 724, 725, - 726, 728, 729, 768, 0, 0, 763, 766, 767, 45, + 185, 186, 187, 188, 189, 190, 419, 421, 423, 566, + 417, 425, 0, 429, 427, 648, 416, 372, 373, 374, + 375, 376, 400, 401, 402, 403, 404, 390, 391, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 0, 369, 379, 395, 396, 397, 380, 382, 383, 386, + 387, 388, 385, 381, 377, 378, 398, 399, 384, 392, + 393, 394, 389, 587, 586, 582, 583, 581, 0, 577, + 580, 584, 585, 646, 634, 636, 640, 638, 644, 642, + 630, 623, 617, 621, 622, 0, 605, 606, 618, 619, + 620, 614, 609, 615, 611, 612, 613, 616, 610, 0, + 524, 266, 0, 528, 526, 531, 0, 520, 521, 0, + 507, 508, 511, 523, 512, 513, 514, 530, 515, 516, + 517, 518, 519, 560, 0, 0, 558, 559, 562, 563, + 0, 546, 547, 550, 551, 552, 553, 554, 555, 556, + 557, 337, 339, 334, 0, 331, 335, 336, 0, 753, + 740, 0, 743, 0, 0, 747, 751, 0, 0, 757, + 759, 761, 763, 738, 736, 737, 0, 718, 721, 722, + 723, 724, 725, 726, 727, 728, 733, 729, 730, 731, + 732, 734, 735, 774, 0, 0, 769, 772, 773, 45, 50, 0, 37, 43, 0, 64, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5092,129 +5123,130 @@ namespace isc { namespace dhcp { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 69, 66, 0, 0, 0, 0, 0, 0, 0, 181, 193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 365, 362, 0, 573, 570, 0, 0, 0, - 0, 0, 0, 0, 0, 597, 602, 490, 0, 0, - 0, 0, 0, 0, 0, 499, 504, 0, 0, 0, - 538, 543, 0, 0, 327, 324, 0, 0, 0, 0, + 0, 0, 371, 368, 0, 579, 576, 0, 0, 0, + 0, 0, 0, 0, 0, 603, 608, 496, 0, 0, + 0, 0, 0, 0, 0, 505, 510, 0, 0, 0, + 544, 549, 0, 0, 333, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 714, 711, 0, 0, 765, 762, 49, 41, 0, + 0, 720, 717, 0, 0, 771, 768, 49, 41, 0, 0, 0, 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 0, 172, 173, 151, 152, 153, 0, 0, 0, 165, 166, 171, 0, 0, 0, 147, - 0, 0, 0, 0, 425, 426, 427, 0, 0, 0, - 0, 0, 676, 0, 0, 0, 0, 0, 0, 174, + 0, 0, 0, 0, 431, 432, 433, 0, 0, 0, + 0, 0, 682, 0, 0, 0, 0, 0, 0, 174, 175, 176, 0, 0, 68, 0, 0, 0, 204, 205, - 206, 207, 180, 0, 0, 0, 0, 0, 0, 434, - 0, 0, 0, 364, 0, 572, 0, 0, 0, 0, - 0, 0, 0, 0, 601, 0, 0, 516, 0, 0, - 0, 527, 503, 0, 558, 559, 542, 0, 0, 326, - 733, 0, 0, 736, 0, 739, 740, 0, 0, 749, - 750, 0, 0, 0, 0, 713, 0, 770, 764, 0, - 0, 0, 0, 0, 619, 621, 623, 0, 0, 222, - 146, 156, 157, 158, 159, 160, 155, 162, 164, 354, - 491, 530, 437, 38, 584, 586, 430, 431, 432, 433, - 429, 0, 0, 589, 316, 0, 0, 0, 0, 0, + 206, 207, 180, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 0, 370, 0, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 607, 0, 0, 522, 0, 0, + 0, 533, 509, 0, 564, 565, 548, 0, 0, 332, + 739, 0, 0, 742, 0, 745, 746, 0, 0, 755, + 756, 0, 0, 0, 0, 719, 0, 776, 770, 0, + 0, 0, 0, 0, 625, 627, 629, 0, 0, 222, + 146, 156, 157, 158, 159, 160, 155, 162, 164, 360, + 497, 536, 443, 38, 590, 592, 436, 437, 438, 439, + 435, 0, 0, 595, 322, 0, 0, 0, 0, 0, 168, 170, 0, 0, 51, 195, 198, 199, 197, 202, - 203, 201, 414, 416, 418, 562, 412, 420, 424, 422, - 0, 582, 641, 629, 631, 635, 633, 639, 637, 625, - 519, 264, 523, 521, 526, 555, 332, 334, 748, 735, - 738, 743, 744, 742, 746, 752, 754, 756, 758, 222, - 42, 0, 0, 0, 216, 0, 212, 215, 251, 256, - 258, 260, 0, 0, 0, 0, 0, 0, 0, 271, - 0, 277, 279, 281, 283, 250, 0, 229, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 0, 227, 0, 223, - 224, 359, 0, 355, 356, 496, 0, 492, 493, 535, - 0, 531, 532, 442, 0, 438, 439, 295, 296, 297, - 298, 299, 0, 287, 290, 291, 292, 293, 294, 651, - 0, 648, 594, 0, 590, 591, 321, 0, 317, 318, - 0, 0, 0, 0, 0, 0, 0, 337, 340, 341, - 342, 343, 344, 345, 0, 0, 0, 310, 0, 302, - 305, 306, 307, 308, 309, 687, 689, 686, 684, 685, - 0, 679, 682, 683, 0, 703, 0, 706, 699, 700, - 0, 693, 696, 697, 698, 701, 0, 776, 0, 773, - 0, 819, 0, 815, 818, 53, 567, 0, 563, 564, - 626, 644, 645, 0, 0, 62, 760, 178, 0, 214, - 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 231, 209, - 219, 0, 221, 226, 0, 353, 358, 500, 488, 495, - 539, 529, 534, 0, 436, 441, 289, 286, 653, 650, - 647, 598, 588, 593, 0, 315, 320, 0, 0, 0, - 0, 0, 0, 339, 336, 0, 0, 0, 304, 301, - 0, 0, 681, 678, 0, 0, 0, 0, 695, 692, - 709, 0, 775, 772, 0, 817, 814, 55, 0, 54, - 0, 561, 566, 0, 643, 769, 0, 213, 0, 0, - 0, 0, 262, 265, 266, 267, 268, 269, 270, 0, - 276, 0, 0, 0, 0, 230, 0, 225, 0, 357, - 0, 494, 0, 533, 486, 465, 466, 467, 450, 451, - 470, 471, 472, 473, 474, 453, 454, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 447, 448, - 449, 463, 464, 460, 461, 462, 459, 0, 444, 452, - 468, 469, 455, 456, 457, 458, 440, 288, 673, 0, - 668, 669, 670, 671, 672, 661, 662, 666, 667, 663, - 664, 665, 0, 654, 655, 658, 659, 660, 649, 0, - 592, 0, 319, 346, 347, 348, 349, 350, 351, 338, - 311, 312, 313, 303, 0, 0, 680, 702, 0, 705, - 0, 694, 791, 0, 789, 787, 781, 785, 786, 0, - 778, 783, 784, 782, 774, 820, 816, 52, 57, 0, - 565, 0, 217, 253, 254, 255, 252, 257, 259, 261, - 273, 274, 275, 272, 278, 280, 282, 284, 228, 360, - 497, 536, 446, 443, 0, 0, 652, 657, 595, 322, - 688, 690, 704, 707, 0, 0, 0, 780, 777, 56, - 568, 627, 445, 0, 675, 656, 0, 788, 0, 779, - 674, 0, 790, 796, 0, 793, 0, 795, 792, 806, - 0, 0, 0, 811, 0, 798, 801, 802, 803, 804, - 805, 794, 0, 0, 0, 0, 0, 800, 797, 0, - 808, 809, 810, 0, 799, 807, 812 + 203, 201, 420, 422, 424, 568, 418, 426, 430, 428, + 0, 588, 647, 635, 637, 641, 639, 645, 643, 631, + 525, 267, 529, 527, 532, 561, 338, 340, 754, 741, + 744, 749, 750, 748, 752, 758, 760, 762, 764, 222, + 42, 0, 0, 0, 216, 0, 212, 215, 254, 259, + 261, 263, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 277, 0, 283, 285, 287, 289, 253, 0, + 229, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 0, 227, 0, 223, 224, 365, 0, 361, + 362, 502, 0, 498, 499, 541, 0, 537, 538, 448, + 0, 444, 445, 301, 302, 303, 304, 305, 0, 293, + 296, 297, 298, 299, 300, 657, 0, 654, 600, 0, + 596, 597, 327, 0, 323, 324, 0, 0, 0, 0, + 0, 0, 0, 343, 346, 347, 348, 349, 350, 351, + 0, 0, 0, 316, 0, 308, 311, 312, 313, 314, + 315, 693, 695, 692, 690, 691, 0, 685, 688, 689, + 0, 709, 0, 712, 705, 706, 0, 699, 702, 703, + 704, 707, 0, 782, 0, 779, 0, 825, 0, 821, + 824, 53, 573, 0, 569, 570, 632, 650, 651, 0, + 0, 62, 766, 178, 0, 214, 211, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 231, 209, 219, + 0, 221, 226, 0, 359, 364, 506, 494, 501, 545, + 535, 540, 0, 442, 447, 295, 292, 659, 656, 653, + 604, 594, 599, 0, 321, 326, 0, 0, 0, 0, + 0, 0, 345, 342, 0, 0, 0, 310, 307, 0, + 0, 687, 684, 0, 0, 0, 0, 701, 698, 715, + 0, 781, 778, 0, 823, 820, 55, 0, 54, 0, + 567, 572, 0, 649, 775, 0, 213, 0, 0, 0, + 0, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 0, 282, 0, 0, 0, 0, 230, 0, 225, + 0, 363, 0, 500, 0, 539, 492, 471, 472, 473, + 456, 457, 476, 477, 478, 479, 480, 459, 460, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 453, 454, 455, 469, 470, 466, 467, 468, 465, 0, + 450, 458, 474, 475, 461, 462, 463, 464, 446, 294, + 679, 0, 674, 675, 676, 677, 678, 667, 668, 672, + 673, 669, 670, 671, 0, 660, 661, 664, 665, 666, + 655, 0, 598, 0, 325, 352, 353, 354, 355, 356, + 357, 344, 317, 318, 319, 309, 0, 0, 686, 708, + 0, 711, 0, 700, 797, 0, 795, 793, 787, 791, + 792, 0, 784, 789, 790, 788, 780, 826, 822, 52, + 57, 0, 571, 0, 217, 256, 257, 258, 255, 260, + 262, 264, 279, 280, 281, 278, 284, 286, 288, 290, + 228, 366, 503, 542, 452, 449, 0, 0, 658, 663, + 601, 328, 694, 696, 710, 713, 0, 0, 0, 786, + 783, 56, 574, 633, 451, 0, 681, 662, 0, 794, + 0, 785, 680, 0, 796, 802, 0, 799, 0, 801, + 798, 812, 0, 0, 0, 817, 0, 804, 807, 808, + 809, 810, 811, 800, 0, 0, 0, 0, 0, 806, + 803, 0, 814, 815, 816, 0, 805, 813, 818 }; const short Dhcp4Parser::yypgoto_[] = { - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -54, -971, -583, -971, 183, - -971, -971, -971, -971, -971, -971, -635, -971, -971, -971, - -67, -971, -971, -971, -971, -971, -971, -971, 366, 576, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -54, -980, -583, -980, 399, + -980, -980, -980, -980, -980, -980, -635, -980, -980, -980, + -67, -980, -980, -980, -980, -980, -980, -980, 374, 593, 4, 10, 23, -40, -23, -12, 22, 25, 29, 33, - -971, -971, -971, -971, -971, 35, 40, 43, 45, 46, - 47, -971, 374, 50, -971, 51, -971, 53, 57, 58, - -971, 61, -971, 63, -971, -971, -971, -971, -971, -971, - -971, 367, 571, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, 123, -971, -971, -971, -971, -971, -971, 279, - -971, 97, -971, -696, 105, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -33, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, 88, -971, - -971, -971, -971, -971, -971, -971, -971, 67, -971, -971, - -971, -971, -971, -971, -971, 81, -971, -971, -971, 84, - 532, -971, -971, -971, -971, -971, -971, -971, 76, -971, - -971, -971, -971, -971, -971, -970, -971, -971, -971, 107, - -971, -971, -971, 108, 572, -971, -971, -971, -971, -971, - -971, -971, -971, -959, -971, -65, -971, 70, -971, 64, - 65, 68, 69, -971, -971, -971, -971, -971, -971, -971, - 100, -971, -971, -105, -46, -971, -971, -971, -971, -971, - 113, -971, -971, -971, 116, -971, 561, -971, -63, -971, - -971, -971, -971, -971, -42, -971, -971, -971, -971, -971, - -35, -971, -971, -971, 112, -971, -971, -971, 124, -971, - 565, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, 71, -971, -971, -971, 72, 592, -971, -971, - -51, -971, -8, -971, -39, -971, -971, -971, 115, -971, - -971, -971, 127, -971, 579, -55, -971, -15, -971, 3, - -971, 350, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -956, - -971, -971, -971, -971, -971, 130, -971, -971, -971, -88, - -971, -971, -971, -971, -971, -971, -971, -971, 99, -971, - -971, -971, -971, -971, -971, -971, 95, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, 375, 559, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - -971, -971, -971, -971, -971, -971, -971, -971, 414, 547, - -971, -971, -971, -971, -971, -971, 101, -971, -971, -91, - -971, -971, -971, -971, -971, -971, -110, -971, -971, -126, - -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, - 103, -971 + -980, -980, -980, -980, -980, 35, 40, 43, 45, 46, + 47, -980, 385, 50, -980, 51, -980, 53, 57, 58, + -980, 61, -980, 63, -980, -980, -980, -980, -980, -980, + -980, 373, 598, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, 123, -980, -980, -980, -980, -980, -980, 290, + -980, 99, -980, -696, 103, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -33, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 88, -980, -980, -980, -980, -980, -980, -980, -980, + 89, -980, -980, -980, -980, -980, -980, -980, 77, -980, + -980, -980, 84, 542, -980, -980, -980, -980, -980, -980, + -980, 79, -980, -980, -980, -980, -980, -980, -979, -980, + -980, -980, 104, -980, -980, -980, 105, 595, -980, -980, + -980, -980, -980, -980, -980, -980, -968, -980, -65, -980, + 70, -980, 64, 65, 68, 69, -980, -980, -980, -980, + -980, -980, -980, 111, -980, -980, -112, -46, -980, -980, + -980, -980, -980, 116, -980, -980, -980, 107, -980, 563, + -980, -63, -980, -980, -980, -980, -980, -42, -980, -980, + -980, -980, -980, -35, -980, -980, -980, 119, -980, -980, + -980, 122, -980, 594, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, 78, -980, -980, -980, 81, + 597, -980, -980, -51, -980, -8, -980, -39, -980, -980, + -980, 112, -980, -980, -980, 113, -980, 596, -55, -980, + -15, -980, 3, -980, 355, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -965, -980, -980, -980, -980, -980, 125, -980, + -980, -980, -93, -980, -980, -980, -980, -980, -980, -980, + -980, 96, -980, -980, -980, -980, -980, -980, -980, 91, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + 382, 599, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 455, 559, -980, -980, -980, -980, -980, -980, 94, + -980, -980, -92, -980, -980, -980, -980, -980, -980, -113, + -980, -980, -131, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, 95, -980 }; const short @@ -5222,530 +5254,533 @@ namespace isc { namespace dhcp { { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 36, 37, 38, 65, 724, - 82, 83, 39, 64, 79, 80, 745, 935, 1028, 1029, - 815, 41, 66, 85, 424, 86, 43, 67, 152, 153, + 82, 83, 39, 64, 79, 80, 745, 941, 1037, 1038, + 818, 41, 66, 85, 424, 86, 43, 67, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 450, 166, 167, 168, 169, 170, 171, 172, 173, 456, 716, 174, 457, 175, 458, 176, 177, 178, 483, 179, 484, 180, 181, 182, 183, 184, 185, 186, 428, 225, 226, 45, 68, 227, 493, 228, 494, 748, 229, 495, 751, 230, 231, 232, 233, 187, 436, 188, - 429, 795, 796, 797, 948, 189, 437, 190, 438, 838, - 839, 840, 971, 816, 817, 818, 951, 1176, 819, 952, - 820, 953, 821, 954, 822, 823, 529, 824, 825, 826, - 827, 828, 829, 830, 962, 1183, 831, 832, 964, 833, - 965, 834, 966, 835, 967, 191, 473, 862, 863, 864, - 865, 866, 867, 868, 192, 479, 898, 899, 900, 901, - 902, 193, 476, 877, 878, 879, 994, 59, 75, 374, - 375, 376, 542, 377, 543, 194, 477, 886, 887, 888, - 889, 890, 891, 892, 893, 195, 462, 842, 843, 844, - 974, 47, 69, 270, 271, 272, 506, 273, 502, 274, - 503, 275, 504, 276, 507, 277, 510, 278, 509, 196, - 197, 198, 199, 469, 730, 283, 200, 466, 854, 855, - 856, 983, 1097, 1098, 201, 463, 53, 72, 846, 847, - 848, 977, 55, 73, 339, 340, 341, 342, 343, 344, - 345, 528, 346, 532, 347, 531, 348, 349, 533, 350, - 202, 464, 850, 851, 852, 980, 57, 74, 360, 361, - 362, 363, 364, 537, 365, 366, 367, 368, 285, 505, - 937, 938, 939, 1030, 49, 70, 298, 299, 300, 514, - 203, 467, 204, 468, 205, 475, 873, 874, 875, 991, - 51, 71, 315, 316, 317, 206, 433, 207, 434, 208, - 435, 321, 524, 942, 1033, 322, 518, 323, 519, 324, - 521, 325, 520, 326, 523, 327, 522, 328, 517, 292, - 511, 943, 209, 474, 870, 871, 988, 1122, 1123, 1124, - 1125, 1126, 1194, 1127, 210, 211, 480, 910, 911, 912, - 1010, 913, 1011, 212, 481, 920, 921, 922, 923, 1015, - 924, 925, 1017, 213, 482, 61, 76, 396, 397, 398, - 399, 548, 400, 401, 550, 402, 403, 404, 553, 783, - 405, 554, 406, 547, 407, 408, 409, 557, 410, 558, - 411, 559, 412, 560, 214, 427, 63, 77, 415, 416, - 417, 563, 418, 215, 488, 928, 929, 1021, 1159, 1160, - 1161, 1162, 1206, 1163, 1204, 1224, 1225, 1226, 1234, 1235, - 1236, 1242, 1237, 1238, 1239, 1240, 1246, 216, 489, 932, - 933, 934 + 429, 795, 796, 797, 954, 189, 437, 190, 438, 844, + 845, 846, 980, 819, 820, 821, 957, 1188, 822, 958, + 823, 959, 824, 960, 825, 826, 529, 827, 828, 829, + 830, 831, 832, 833, 834, 835, 836, 971, 1195, 837, + 838, 973, 839, 974, 840, 975, 841, 976, 191, 473, + 868, 869, 870, 871, 872, 873, 874, 192, 479, 904, + 905, 906, 907, 908, 193, 476, 883, 884, 885, 1003, + 59, 75, 374, 375, 376, 542, 377, 543, 194, 477, + 892, 893, 894, 895, 896, 897, 898, 899, 195, 462, + 848, 849, 850, 983, 47, 69, 270, 271, 272, 506, + 273, 502, 274, 503, 275, 504, 276, 507, 277, 510, + 278, 509, 196, 197, 198, 199, 469, 730, 283, 200, + 466, 860, 861, 862, 992, 1109, 1110, 201, 463, 53, + 72, 852, 853, 854, 986, 55, 73, 339, 340, 341, + 342, 343, 344, 345, 528, 346, 532, 347, 531, 348, + 349, 533, 350, 202, 464, 856, 857, 858, 989, 57, + 74, 360, 361, 362, 363, 364, 537, 365, 366, 367, + 368, 285, 505, 943, 944, 945, 1039, 49, 70, 298, + 299, 300, 514, 203, 467, 204, 468, 205, 475, 879, + 880, 881, 1000, 51, 71, 315, 316, 317, 206, 433, + 207, 434, 208, 435, 321, 524, 948, 1042, 322, 518, + 323, 519, 324, 521, 325, 520, 326, 523, 327, 522, + 328, 517, 292, 511, 949, 209, 474, 876, 877, 997, + 1134, 1135, 1136, 1137, 1138, 1206, 1139, 210, 211, 480, + 916, 917, 918, 1019, 919, 1020, 212, 481, 926, 927, + 928, 929, 1024, 930, 931, 1026, 213, 482, 61, 76, + 396, 397, 398, 399, 548, 400, 401, 550, 402, 403, + 404, 553, 783, 405, 554, 406, 547, 407, 408, 409, + 557, 410, 558, 411, 559, 412, 560, 214, 427, 63, + 77, 415, 416, 417, 563, 418, 215, 488, 934, 935, + 1030, 1171, 1172, 1173, 1174, 1218, 1175, 1216, 1236, 1237, + 1238, 1246, 1247, 1248, 1254, 1249, 1250, 1251, 1252, 1258, + 216, 489, 938, 939, 940 }; const short Dhcp4Parser::yytable_[] = { 151, 224, 246, 294, 311, 295, 337, 356, 373, 393, - 78, 358, 836, 1089, 289, 758, 318, 234, 286, 301, - 313, 762, 351, 369, 1090, 394, 329, 1105, 723, 250, - 288, 781, 359, 40, 284, 297, 312, 425, 124, 28, - 338, 357, 426, 29, 930, 30, 251, 31, 371, 372, - 81, 293, 127, 128, 290, 42, 319, 252, 150, 491, - 235, 287, 302, 314, 492, 352, 370, 243, 395, 44, - 244, 123, 291, 247, 320, 711, 712, 713, 714, 248, - 1229, 46, 500, 1230, 1231, 1232, 1233, 501, 512, 413, - 414, 253, 249, 513, 254, 723, 515, 986, 255, 48, - 987, 516, 256, 50, 257, 857, 858, 859, 860, 258, - 861, 715, 259, 52, 260, 261, 262, 330, 150, 263, - 264, 54, 265, 544, 561, 56, 266, 267, 545, 562, - 268, 565, 269, 279, 280, 84, 566, 281, 282, 491, - 296, 217, 218, 87, 945, 219, 88, 58, 220, 221, - 222, 223, 150, 989, 565, 60, 990, 420, 89, 946, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 331, - 62, 332, 333, 500, 949, 334, 335, 336, 947, 950, - 782, 968, 127, 128, 127, 128, 969, 419, 1022, 746, - 747, 1023, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 968, 422, 1003, 123, - 124, 970, 1089, 1004, 331, 894, 895, 896, 127, 128, - 125, 126, 421, 1090, 127, 128, 1105, 127, 128, 129, - 32, 33, 34, 35, 130, 131, 132, 133, 134, 127, - 128, 310, 940, 135, 880, 881, 882, 883, 884, 885, - 1008, 423, 1012, 136, 1018, 1009, 137, 1013, 430, 1019, - 431, 561, 1025, 138, 139, 1056, 1020, 1026, 140, 432, - 439, 141, 150, 968, 150, 142, 127, 128, 1188, 331, - 353, 332, 333, 354, 355, 512, 1192, 914, 915, 916, - 1189, 1193, 127, 128, 440, 143, 144, 145, 146, 147, - 148, 371, 372, 544, 1152, 1207, 1153, 1154, 1199, 149, - 1208, 749, 750, 91, 92, 93, 94, 95, 150, 441, - 515, 905, 906, 1247, 150, 1210, 442, 150, 1248, 726, - 727, 728, 729, 1173, 1174, 1175, 93, 94, 95, 917, - 1227, 525, 443, 1228, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 444, 445, 567, 568, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 446, 236, 237, - 238, 447, 124, 1180, 1181, 1182, 150, 448, 449, 451, - 452, 453, 454, 455, 239, 459, 127, 128, 240, 241, - 242, 129, 150, 124, 460, 461, 130, 131, 132, 465, - 470, 243, 471, 472, 244, 135, 478, 127, 128, 485, - 486, 487, 245, 490, 151, 496, 497, 498, 499, 508, - 526, 303, 530, 224, 527, 534, 536, 304, 305, 306, - 307, 308, 309, 535, 310, 246, 538, 539, 294, 234, - 295, 541, 540, 546, 549, 551, 552, 289, 555, 311, - 556, 286, 564, 570, 301, 569, 571, 143, 144, 337, - 572, 318, 250, 288, 356, 313, 573, 284, 358, 574, - 297, 577, 575, 576, 578, 351, 579, 580, 581, 251, - 369, 312, 235, 582, 393, 588, 150, 290, 583, 359, - 252, 584, 585, 338, 287, 586, 587, 302, 357, 592, - 394, 319, 589, 590, 593, 291, 247, 150, 314, 594, - 591, 595, 248, 596, 597, 600, 598, 599, 352, 320, - 601, 602, 606, 370, 253, 249, 1211, 254, 603, 604, - 605, 255, 607, 608, 609, 256, 610, 257, 611, 612, - 613, 614, 258, 395, 615, 259, 616, 260, 261, 262, - 617, 618, 263, 264, 619, 265, 620, 621, 622, 266, - 267, 623, 624, 268, 625, 269, 279, 280, 626, 627, - 281, 282, 628, 629, 630, 296, 93, 94, 95, 798, - 632, 633, 635, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 631, 636, 637, 810, 811, 812, - 813, 814, 638, 640, 641, 99, 100, 101, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 643, 644, 151, 645, 224, 646, 639, 647, 649, - 648, 331, 123, 124, 331, 790, 650, 651, 652, 654, - 656, 234, 657, 658, 659, 660, 661, 127, 128, 662, - 663, 665, 666, 667, 91, 92, 93, 94, 95, 897, - 907, 668, 393, 1108, 1109, 669, 931, 670, 671, 673, - 674, 675, 677, 678, 680, 903, 908, 918, 394, 681, - 682, 683, 684, 685, 235, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 686, 687, 688, 689, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, - 128, 690, 691, 124, 331, 692, 693, 694, 904, 909, - 919, 395, 696, 697, 699, 704, 700, 127, 128, 701, - 241, 702, 129, 703, 707, 705, 708, 130, 131, 132, - 706, 709, 243, 710, 150, 244, 717, 150, 719, 720, - 718, 721, 722, 245, 731, 30, 725, 732, 733, 734, - 742, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 735, 736, 737, 738, 739, 743, - 391, 392, 740, 741, 744, 752, 753, 754, 755, 756, - 757, 759, 760, 789, 837, 761, 763, 764, 143, 144, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 150, - 774, 775, 776, 778, 779, 780, 786, 784, 787, 794, - 841, 788, 845, 849, 853, 869, 872, 150, 876, 927, - 936, 955, 956, 957, 958, 959, 960, 961, 963, 973, - 1042, 972, 976, 975, 978, 979, 981, 982, 985, 984, - 993, 777, 992, 996, 995, 997, 998, 999, 1000, 1001, - 1002, 1005, 1006, 1007, 1014, 1016, 1024, 1032, 1027, 1031, - 1044, 1036, 1035, 1034, 1038, 1039, 1040, 1041, 1043, 1045, - 1046, 1049, 1047, 1048, 1050, 1051, 1052, 1053, 1054, 1133, - 1134, 1135, 1136, 1137, 1138, 1144, 1145, 246, 1141, 1140, - 337, 1142, 1147, 356, 1148, 1149, 1064, 358, 1091, 289, - 1150, 1110, 1165, 286, 311, 1167, 351, 373, 1102, 369, - 1168, 1190, 1100, 1119, 250, 288, 318, 1117, 359, 284, - 313, 897, 1115, 1068, 338, 907, 1171, 357, 1099, 1172, - 1088, 251, 1177, 1116, 1155, 1114, 312, 903, 931, 290, - 1069, 908, 252, 294, 1191, 295, 287, 918, 1103, 352, - 1157, 1070, 370, 1120, 1178, 1101, 319, 291, 247, 301, - 1118, 1195, 1196, 314, 248, 1179, 1104, 1065, 1156, 1184, - 1185, 1121, 1111, 1066, 320, 297, 253, 249, 1112, 254, - 904, 1186, 1187, 255, 909, 1071, 1067, 256, 1072, 257, - 919, 1113, 1073, 1158, 258, 1197, 1074, 259, 1075, 260, - 261, 262, 302, 1076, 263, 264, 1077, 265, 1078, 1079, - 1080, 266, 267, 1081, 1082, 268, 1083, 269, 279, 280, - 1084, 1085, 281, 282, 1086, 1198, 1087, 1093, 1094, 1205, - 1213, 1095, 1096, 1092, 1216, 1218, 1214, 1221, 1243, 1244, - 1223, 1200, 1245, 1249, 1253, 785, 791, 634, 944, 793, - 1057, 642, 1037, 1055, 1107, 1143, 679, 1132, 1131, 1139, - 1201, 1202, 1058, 1059, 653, 1106, 1209, 1212, 1217, 1251, - 1220, 1222, 1061, 1060, 1063, 1250, 1203, 672, 1252, 1255, - 296, 1256, 1169, 1170, 1062, 664, 676, 655, 1130, 1215, - 941, 1146, 698, 1151, 926, 792, 1219, 1241, 1129, 1128, - 695, 1254, 0, 1164, 0, 1064, 0, 1091, 1166, 0, - 1110, 0, 0, 0, 0, 0, 0, 1102, 0, 0, - 1155, 1100, 1119, 0, 0, 0, 1117, 0, 0, 0, - 0, 1115, 1068, 0, 0, 0, 1157, 1099, 0, 1088, - 0, 0, 1116, 0, 1114, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 1156, 0, 0, 1103, 0, 0, - 1070, 0, 1120, 0, 1101, 0, 0, 0, 0, 1118, - 0, 0, 0, 0, 0, 1104, 1065, 0, 0, 1158, - 1121, 1111, 1066, 0, 0, 0, 0, 1112, 0, 0, - 0, 0, 0, 0, 1071, 1067, 0, 1072, 0, 0, - 1113, 1073, 0, 0, 0, 1074, 0, 1075, 0, 0, - 0, 0, 1076, 0, 0, 1077, 0, 1078, 1079, 1080, - 0, 0, 1081, 1082, 0, 1083, 0, 0, 0, 1084, - 1085, 0, 0, 1086, 0, 1087, 1093, 1094, 0, 0, - 1095, 1096, 1092 + 78, 358, 842, 1101, 289, 758, 318, 234, 286, 301, + 313, 762, 351, 369, 1102, 394, 329, 1117, 723, 250, + 288, 781, 359, 40, 284, 297, 312, 425, 124, 491, + 338, 357, 426, 29, 492, 30, 251, 31, 371, 372, + 81, 293, 127, 128, 290, 936, 319, 252, 127, 128, + 235, 287, 302, 314, 331, 352, 370, 243, 395, 150, + 244, 28, 291, 247, 320, 500, 512, 127, 128, 248, + 501, 513, 42, 331, 353, 332, 333, 354, 355, 44, + 995, 253, 249, 996, 254, 723, 127, 128, 255, 900, + 901, 902, 256, 515, 257, 93, 94, 95, 516, 258, + 413, 414, 259, 330, 260, 261, 262, 46, 150, 263, + 264, 48, 265, 544, 561, 84, 266, 267, 545, 562, + 268, 565, 269, 279, 280, 419, 566, 281, 282, 491, + 296, 217, 218, 998, 951, 219, 999, 420, 220, 221, + 222, 223, 150, 50, 1164, 52, 1165, 1166, 150, 371, + 372, 711, 712, 713, 714, 124, 1031, 565, 331, 1032, + 332, 333, 952, 500, 334, 335, 336, 150, 953, 127, + 128, 127, 128, 782, 1239, 955, 977, 1240, 127, 128, + 956, 978, 54, 303, 56, 87, 150, 715, 88, 304, + 305, 306, 307, 308, 309, 58, 310, 1185, 1186, 1187, + 89, 60, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 977, 1012, 127, 128, 1101, 979, 1013, 746, 747, + 1017, 127, 128, 911, 912, 1018, 1102, 1021, 62, 1117, + 749, 750, 1022, 32, 33, 34, 35, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 920, 921, 922, 123, 124, 123, 1027, 561, 150, + 421, 150, 1028, 1029, 1068, 125, 126, 422, 150, 127, + 128, 423, 1241, 430, 129, 1242, 1243, 1244, 1245, 130, + 131, 132, 133, 134, 726, 727, 728, 729, 135, 93, + 94, 95, 886, 887, 888, 889, 890, 891, 136, 1034, + 977, 137, 512, 923, 1035, 1200, 431, 1201, 138, 139, + 1204, 150, 544, 140, 1219, 1205, 141, 1211, 432, 1220, + 142, 99, 100, 101, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 1192, 1193, 1194, + 143, 144, 145, 146, 147, 148, 567, 568, 123, 124, + 331, 310, 946, 439, 149, 863, 864, 865, 866, 440, + 867, 515, 1259, 127, 128, 441, 1222, 1260, 442, 150, + 443, 444, 445, 446, 447, 448, 449, 451, 798, 1120, + 1121, 452, 799, 800, 801, 802, 803, 804, 805, 806, + 807, 808, 809, 810, 811, 812, 453, 454, 455, 813, + 814, 815, 816, 817, 151, 459, 460, 461, 465, 470, + 471, 472, 478, 224, 485, 486, 487, 525, 490, 496, + 497, 498, 499, 508, 526, 246, 530, 536, 294, 234, + 295, 527, 534, 331, 535, 538, 539, 289, 540, 311, + 541, 286, 546, 549, 301, 551, 552, 555, 556, 337, + 564, 318, 250, 288, 356, 313, 569, 284, 358, 570, + 297, 571, 572, 150, 573, 351, 577, 578, 574, 251, + 369, 312, 235, 575, 393, 576, 579, 290, 580, 359, + 252, 581, 582, 338, 287, 583, 584, 302, 357, 585, + 394, 319, 586, 587, 592, 291, 247, 588, 314, 589, + 590, 591, 248, 594, 593, 600, 595, 596, 352, 320, + 601, 597, 598, 370, 253, 249, 599, 254, 127, 128, + 602, 255, 606, 603, 604, 256, 605, 257, 1223, 607, + 608, 609, 258, 395, 610, 259, 611, 260, 261, 262, + 612, 613, 263, 264, 614, 265, 150, 615, 616, 266, + 267, 617, 618, 268, 619, 269, 279, 280, 620, 621, + 281, 282, 622, 623, 624, 296, 625, 626, 627, 628, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 629, 630, 632, 631, 633, 635, 391, + 392, 636, 637, 638, 639, 640, 641, 643, 644, 645, + 646, 647, 648, 649, 650, 651, 652, 654, 656, 657, + 658, 659, 660, 151, 661, 224, 700, 662, 150, 663, + 665, 666, 668, 669, 670, 790, 667, 673, 677, 678, + 681, 234, 682, 671, 684, 674, 687, 675, 688, 683, + 685, 91, 92, 93, 94, 95, 691, 692, 680, 903, + 913, 686, 393, 693, 694, 689, 937, 690, 696, 697, + 699, 704, 701, 709, 702, 909, 914, 924, 394, 703, + 705, 706, 707, 708, 235, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 710, 717, 718, 719, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 720, 236, + 237, 238, 721, 124, 722, 30, 731, 725, 910, 915, + 925, 395, 732, 733, 734, 239, 740, 127, 128, 240, + 241, 242, 129, 735, 736, 737, 738, 130, 131, 132, + 739, 742, 243, 741, 743, 244, 135, 744, 752, 753, + 754, 755, 760, 245, 91, 92, 93, 94, 95, 756, + 757, 759, 789, 784, 761, 794, 763, 764, 765, 843, + 847, 766, 767, 768, 851, 855, 769, 859, 875, 878, + 882, 770, 771, 772, 773, 774, 775, 776, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 143, 144, + 778, 779, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 933, 942, 780, 961, 124, 331, 962, 963, + 964, 965, 966, 967, 968, 969, 786, 150, 970, 787, + 127, 128, 972, 241, 1006, 129, 788, 981, 982, 984, + 130, 131, 132, 985, 987, 243, 988, 990, 244, 991, + 993, 994, 1002, 1001, 1007, 1005, 245, 1004, 1008, 1009, + 1010, 1011, 1014, 1015, 1016, 1023, 1025, 1033, 1036, 1041, + 1040, 1045, 1180, 1043, 1044, 1047, 1048, 1049, 1050, 1051, + 1061, 1063, 1052, 1053, 1064, 1055, 1054, 1056, 1057, 1058, + 1059, 1060, 1062, 1065, 1066, 1145, 1146, 1147, 1148, 1156, + 1149, 143, 144, 1150, 1152, 1153, 246, 1154, 1157, 337, + 1159, 1160, 356, 1162, 1177, 1076, 358, 1103, 289, 1161, + 1122, 1179, 286, 311, 1183, 351, 373, 1114, 369, 1184, + 150, 1112, 1131, 250, 288, 318, 1129, 359, 284, 313, + 903, 1127, 1080, 338, 913, 1189, 357, 1111, 1190, 1100, + 251, 1202, 1128, 1167, 1126, 312, 909, 937, 290, 1081, + 914, 252, 294, 1191, 295, 287, 924, 1115, 352, 1169, + 1082, 370, 1132, 1203, 1113, 319, 291, 247, 301, 1130, + 1196, 1197, 314, 248, 1198, 1116, 1077, 1168, 1199, 1207, + 1133, 1123, 1078, 320, 297, 253, 249, 1124, 254, 910, + 1208, 1209, 255, 915, 1083, 1079, 256, 1084, 257, 925, + 1125, 1085, 1170, 258, 1210, 1086, 259, 1087, 260, 261, + 262, 302, 1088, 263, 264, 1089, 265, 1090, 1091, 1092, + 266, 267, 1093, 1094, 268, 1095, 269, 279, 280, 1096, + 1097, 281, 282, 1098, 1212, 1099, 1105, 1106, 1217, 1225, + 1107, 1108, 1104, 1226, 1228, 1230, 1235, 1233, 1213, 1255, + 1256, 1257, 1261, 1265, 791, 793, 785, 777, 1046, 950, + 1067, 1069, 1144, 1119, 634, 1214, 679, 1143, 1070, 1071, + 1221, 1151, 1224, 1072, 1229, 1263, 1232, 1234, 642, 672, + 1264, 1262, 1267, 1268, 1073, 1118, 1155, 653, 1215, 296, + 1075, 1074, 655, 1141, 1142, 947, 1227, 1158, 1163, 1182, + 1181, 932, 664, 1140, 698, 1176, 1253, 1231, 1266, 1178, + 0, 0, 0, 0, 0, 676, 0, 1076, 0, 1103, + 0, 0, 1122, 0, 0, 0, 0, 0, 0, 1114, + 0, 0, 1167, 1112, 1131, 0, 792, 0, 1129, 0, + 695, 0, 0, 1127, 1080, 0, 0, 0, 1169, 1111, + 0, 1100, 0, 0, 1128, 0, 1126, 0, 0, 0, + 0, 1081, 0, 0, 0, 0, 1168, 0, 0, 1115, + 0, 0, 1082, 0, 1132, 0, 1113, 0, 0, 0, + 0, 1130, 0, 0, 0, 0, 0, 1116, 1077, 0, + 0, 1170, 1133, 1123, 1078, 0, 0, 0, 0, 1124, + 0, 0, 0, 0, 0, 0, 1083, 1079, 0, 1084, + 0, 0, 1125, 1085, 0, 0, 0, 1086, 0, 1087, + 0, 0, 0, 0, 1088, 0, 0, 1089, 0, 1090, + 1091, 1092, 0, 0, 1093, 1094, 0, 1095, 0, 0, + 0, 1096, 1097, 0, 0, 1098, 0, 1099, 1105, 1106, + 0, 0, 1107, 1108, 1104 }; const short Dhcp4Parser::yycheck_[] = { 67, 68, 69, 70, 71, 70, 73, 74, 75, 76, - 64, 74, 708, 983, 69, 650, 71, 68, 69, 70, - 71, 656, 73, 74, 983, 76, 72, 983, 611, 69, - 69, 18, 74, 7, 69, 70, 71, 3, 88, 0, - 73, 74, 8, 5, 188, 7, 69, 9, 132, 133, - 202, 101, 102, 103, 69, 7, 71, 69, 202, 3, - 68, 69, 70, 71, 8, 73, 74, 117, 76, 7, - 120, 87, 69, 69, 71, 169, 170, 171, 172, 69, - 180, 7, 3, 183, 184, 185, 186, 8, 3, 12, - 13, 69, 69, 8, 69, 678, 3, 3, 69, 7, - 6, 8, 69, 7, 69, 122, 123, 124, 125, 69, - 127, 205, 69, 7, 69, 69, 69, 37, 202, 69, - 69, 7, 69, 3, 3, 7, 69, 69, 8, 8, - 69, 3, 69, 69, 69, 10, 8, 69, 69, 3, - 70, 15, 16, 11, 8, 19, 14, 7, 22, 23, - 24, 25, 202, 3, 3, 7, 6, 3, 26, 8, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 89, - 7, 91, 92, 3, 3, 95, 96, 97, 8, 8, - 167, 3, 102, 103, 102, 103, 8, 6, 3, 17, - 18, 6, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 3, 8, 3, 87, - 88, 8, 1192, 8, 89, 143, 144, 145, 102, 103, - 98, 99, 4, 1192, 102, 103, 1192, 102, 103, 107, - 202, 203, 204, 205, 112, 113, 114, 115, 116, 102, - 103, 129, 130, 121, 135, 136, 137, 138, 139, 140, - 3, 3, 3, 131, 3, 8, 134, 8, 4, 8, - 4, 3, 3, 141, 142, 971, 8, 8, 146, 4, - 4, 149, 202, 3, 202, 153, 102, 103, 8, 89, - 90, 91, 92, 93, 94, 3, 3, 150, 151, 152, - 8, 8, 102, 103, 4, 173, 174, 175, 176, 177, - 178, 132, 133, 3, 179, 3, 181, 182, 8, 187, - 8, 20, 21, 29, 30, 31, 32, 33, 202, 4, - 3, 147, 148, 3, 202, 8, 4, 202, 8, 108, - 109, 110, 111, 38, 39, 40, 31, 32, 33, 202, - 3, 8, 4, 6, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 4, 4, 420, 421, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 4, 84, 85, - 86, 4, 88, 52, 53, 54, 202, 4, 4, 4, - 4, 4, 4, 4, 100, 4, 102, 103, 104, 105, - 106, 107, 202, 88, 4, 4, 112, 113, 114, 4, - 4, 117, 4, 4, 120, 121, 4, 102, 103, 4, - 4, 4, 128, 4, 491, 4, 4, 4, 4, 4, - 3, 116, 4, 500, 8, 4, 3, 122, 123, 124, - 125, 126, 127, 8, 129, 512, 4, 4, 515, 500, - 515, 3, 8, 4, 4, 4, 4, 512, 4, 526, - 4, 512, 4, 4, 515, 202, 4, 173, 174, 536, - 4, 526, 512, 512, 541, 526, 4, 512, 541, 205, - 515, 4, 205, 205, 4, 536, 4, 4, 4, 512, - 541, 526, 500, 4, 561, 205, 202, 512, 203, 541, - 512, 203, 203, 536, 512, 203, 203, 515, 541, 203, - 561, 526, 204, 204, 203, 512, 512, 202, 526, 4, - 204, 203, 512, 203, 205, 4, 205, 205, 536, 526, - 4, 4, 4, 541, 512, 512, 1171, 512, 205, 205, - 205, 512, 4, 4, 203, 512, 4, 512, 4, 4, - 4, 205, 512, 561, 205, 512, 205, 512, 512, 512, - 4, 4, 512, 512, 4, 512, 4, 4, 203, 512, + 64, 74, 708, 992, 69, 650, 71, 68, 69, 70, + 71, 656, 73, 74, 992, 76, 72, 992, 611, 69, + 69, 18, 74, 7, 69, 70, 71, 3, 91, 3, + 73, 74, 8, 5, 8, 7, 69, 9, 135, 136, + 205, 104, 105, 106, 69, 191, 71, 69, 105, 106, + 68, 69, 70, 71, 92, 73, 74, 120, 76, 205, + 123, 0, 69, 69, 71, 3, 3, 105, 106, 69, + 8, 8, 7, 92, 93, 94, 95, 96, 97, 7, + 3, 69, 69, 6, 69, 678, 105, 106, 69, 146, + 147, 148, 69, 3, 69, 31, 32, 33, 8, 69, + 12, 13, 69, 37, 69, 69, 69, 7, 205, 69, + 69, 7, 69, 3, 3, 10, 69, 69, 8, 8, + 69, 3, 69, 69, 69, 6, 8, 69, 69, 3, + 70, 15, 16, 3, 8, 19, 6, 3, 22, 23, + 24, 25, 205, 7, 182, 7, 184, 185, 205, 135, + 136, 172, 173, 174, 175, 91, 3, 3, 92, 6, + 94, 95, 8, 3, 98, 99, 100, 205, 8, 105, + 106, 105, 106, 170, 3, 3, 3, 6, 105, 106, + 8, 8, 7, 119, 7, 11, 205, 208, 14, 125, + 126, 127, 128, 129, 130, 7, 132, 38, 39, 40, + 26, 7, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 3, 3, 105, 106, 1204, 8, 8, 17, 18, + 3, 105, 106, 150, 151, 8, 1204, 3, 7, 1204, + 20, 21, 8, 205, 206, 207, 208, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 153, 154, 155, 90, 91, 90, 3, 3, 205, + 4, 205, 8, 8, 980, 101, 102, 8, 205, 105, + 106, 3, 183, 4, 110, 186, 187, 188, 189, 115, + 116, 117, 118, 119, 111, 112, 113, 114, 124, 31, + 32, 33, 138, 139, 140, 141, 142, 143, 134, 3, + 3, 137, 3, 205, 8, 8, 4, 8, 144, 145, + 3, 205, 3, 149, 3, 8, 152, 8, 4, 8, + 156, 63, 64, 65, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 55, 56, 57, + 176, 177, 178, 179, 180, 181, 420, 421, 90, 91, + 92, 132, 133, 4, 190, 125, 126, 127, 128, 4, + 130, 3, 3, 105, 106, 4, 8, 8, 4, 205, + 4, 4, 4, 4, 4, 4, 4, 4, 37, 121, + 122, 4, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 4, 4, 4, 58, + 59, 60, 61, 62, 491, 4, 4, 4, 4, 4, + 4, 4, 4, 500, 4, 4, 4, 8, 4, 4, + 4, 4, 4, 4, 3, 512, 4, 3, 515, 500, + 515, 8, 4, 92, 8, 4, 4, 512, 8, 526, + 3, 512, 4, 4, 515, 4, 4, 4, 4, 536, + 4, 526, 512, 512, 541, 526, 205, 512, 541, 4, + 515, 4, 4, 205, 4, 536, 4, 4, 208, 512, + 541, 526, 500, 208, 561, 208, 4, 512, 4, 541, + 512, 4, 4, 536, 512, 206, 206, 515, 541, 206, + 561, 526, 206, 206, 206, 512, 512, 208, 526, 207, + 207, 207, 512, 4, 206, 4, 206, 206, 536, 526, + 4, 208, 208, 541, 512, 512, 208, 512, 105, 106, + 4, 512, 4, 208, 208, 512, 208, 512, 1183, 4, + 4, 206, 512, 561, 4, 512, 4, 512, 512, 512, + 4, 4, 512, 512, 208, 512, 205, 208, 208, 512, 512, 4, 4, 512, 4, 512, 512, 512, 4, 4, - 512, 512, 4, 205, 205, 515, 31, 32, 33, 37, - 4, 4, 4, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 205, 4, 4, 55, 56, 57, - 58, 59, 205, 203, 203, 60, 61, 62, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 4, 4, 700, 4, 702, 4, 205, 4, 203, - 4, 89, 87, 88, 89, 699, 4, 4, 4, 4, - 4, 702, 4, 4, 4, 4, 4, 102, 103, 4, - 4, 4, 4, 203, 29, 30, 31, 32, 33, 736, - 737, 4, 739, 118, 119, 4, 743, 4, 205, 4, - 205, 205, 4, 4, 205, 736, 737, 738, 739, 4, - 4, 203, 4, 203, 702, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 203, 4, 4, 205, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 102, - 103, 205, 4, 88, 89, 4, 4, 4, 736, 737, - 738, 739, 4, 203, 4, 202, 7, 102, 103, 7, - 105, 7, 107, 7, 7, 202, 7, 112, 113, 114, - 202, 5, 117, 202, 202, 120, 202, 202, 5, 5, - 202, 5, 5, 128, 5, 7, 202, 5, 5, 5, - 5, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 7, 7, 7, 7, 7, 7, - 173, 174, 202, 202, 5, 202, 202, 202, 5, 202, - 202, 202, 7, 5, 7, 202, 202, 202, 173, 174, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 168, 202, 27, - 7, 202, 7, 7, 7, 7, 7, 202, 7, 7, - 7, 4, 4, 4, 4, 4, 4, 4, 4, 3, - 203, 6, 3, 6, 6, 3, 6, 3, 3, 6, - 3, 678, 6, 3, 6, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 3, 202, 6, - 203, 4, 6, 8, 4, 4, 4, 4, 205, 205, - 203, 4, 203, 203, 203, 4, 4, 4, 4, 203, - 203, 203, 203, 203, 203, 4, 4, 974, 203, 205, - 977, 203, 205, 980, 4, 203, 983, 980, 983, 974, - 4, 988, 205, 974, 991, 6, 977, 994, 983, 980, - 3, 8, 983, 988, 974, 974, 991, 988, 980, 974, - 991, 1008, 988, 983, 977, 1012, 4, 980, 983, 202, - 983, 974, 202, 988, 1021, 988, 991, 1008, 1025, 974, - 983, 1012, 974, 1030, 8, 1030, 974, 1018, 983, 977, - 1021, 983, 980, 988, 202, 983, 991, 974, 974, 1030, - 988, 4, 8, 991, 974, 202, 983, 983, 1021, 202, - 202, 988, 988, 983, 991, 1030, 974, 974, 988, 974, - 1008, 202, 202, 974, 1012, 983, 983, 974, 983, 974, - 1018, 988, 983, 1021, 974, 3, 983, 974, 983, 974, - 974, 974, 1030, 983, 974, 974, 983, 974, 983, 983, - 983, 974, 974, 983, 983, 974, 983, 974, 974, 974, - 983, 983, 974, 974, 983, 8, 983, 983, 983, 4, - 4, 983, 983, 983, 4, 4, 205, 5, 4, 4, - 7, 202, 4, 4, 4, 691, 700, 491, 789, 702, - 973, 500, 949, 968, 986, 1008, 544, 996, 994, 1003, - 202, 202, 974, 976, 512, 985, 202, 1192, 203, 203, - 202, 202, 979, 977, 982, 205, 1150, 536, 203, 202, - 1030, 202, 1030, 1032, 980, 526, 541, 515, 993, 1197, - 760, 1012, 565, 1018, 739, 701, 1207, 1227, 991, 989, - 561, 1247, -1, 1022, -1, 1192, -1, 1192, 1025, -1, - 1197, -1, -1, -1, -1, -1, -1, 1192, -1, -1, - 1207, 1192, 1197, -1, -1, -1, 1197, -1, -1, -1, - -1, 1197, 1192, -1, -1, -1, 1207, 1192, -1, 1192, - -1, -1, 1197, -1, 1197, -1, -1, -1, -1, 1192, - -1, -1, -1, -1, 1207, -1, -1, 1192, -1, -1, - 1192, -1, 1197, -1, 1192, -1, -1, -1, -1, 1197, - -1, -1, -1, -1, -1, 1192, 1192, -1, -1, 1207, - 1197, 1197, 1192, -1, -1, -1, -1, 1197, -1, -1, - -1, -1, -1, -1, 1192, 1192, -1, 1192, -1, -1, - 1197, 1192, -1, -1, -1, 1192, -1, 1192, -1, -1, - -1, -1, 1192, -1, -1, 1192, -1, 1192, 1192, 1192, - -1, -1, 1192, 1192, -1, 1192, -1, -1, -1, 1192, - 1192, -1, -1, 1192, -1, 1192, 1192, 1192, -1, -1, - 1192, 1192, 1192 + 512, 512, 206, 4, 4, 515, 4, 4, 4, 4, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 208, 208, 4, 208, 4, 4, 176, + 177, 4, 4, 208, 208, 206, 206, 4, 4, 4, + 4, 4, 4, 206, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 700, 4, 702, 7, 4, 205, 4, + 4, 4, 4, 4, 4, 699, 206, 4, 4, 4, + 4, 702, 4, 208, 4, 208, 4, 208, 4, 206, + 206, 29, 30, 31, 32, 33, 4, 4, 208, 736, + 737, 206, 739, 4, 4, 208, 743, 208, 4, 206, + 4, 205, 7, 5, 7, 736, 737, 738, 739, 7, + 205, 205, 7, 7, 702, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 205, 205, 205, 5, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 5, 87, + 88, 89, 5, 91, 5, 7, 5, 205, 736, 737, + 738, 739, 5, 5, 5, 103, 205, 105, 106, 107, + 108, 109, 110, 7, 7, 7, 7, 115, 116, 117, + 7, 5, 120, 205, 7, 123, 124, 5, 205, 205, + 205, 5, 7, 131, 29, 30, 31, 32, 33, 205, + 205, 205, 5, 171, 205, 27, 205, 205, 205, 7, + 7, 205, 205, 205, 7, 7, 205, 7, 7, 7, + 7, 205, 205, 205, 205, 205, 205, 205, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 176, 177, + 205, 205, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 7, 7, 205, 4, 91, 92, 4, 4, + 4, 4, 4, 4, 4, 4, 205, 205, 4, 205, + 105, 106, 4, 108, 4, 110, 205, 6, 3, 6, + 115, 116, 117, 3, 6, 120, 3, 6, 123, 3, + 6, 3, 3, 6, 4, 3, 131, 6, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 205, 3, + 6, 4, 3, 8, 6, 4, 4, 4, 4, 206, + 4, 4, 208, 206, 4, 206, 208, 206, 206, 206, + 206, 206, 206, 4, 4, 206, 206, 206, 206, 4, + 206, 176, 177, 206, 208, 206, 983, 206, 4, 986, + 208, 4, 989, 4, 208, 992, 989, 992, 983, 206, + 997, 6, 983, 1000, 4, 986, 1003, 992, 989, 205, + 205, 992, 997, 983, 983, 1000, 997, 989, 983, 1000, + 1017, 997, 992, 986, 1021, 205, 989, 992, 205, 992, + 983, 8, 997, 1030, 997, 1000, 1017, 1034, 983, 992, + 1021, 983, 1039, 205, 1039, 983, 1027, 992, 986, 1030, + 992, 989, 997, 8, 992, 1000, 983, 983, 1039, 997, + 205, 205, 1000, 983, 205, 992, 992, 1030, 205, 4, + 997, 997, 992, 1000, 1039, 983, 983, 997, 983, 1017, + 8, 3, 983, 1021, 992, 992, 983, 992, 983, 1027, + 997, 992, 1030, 983, 8, 992, 983, 992, 983, 983, + 983, 1039, 992, 983, 983, 992, 983, 992, 992, 992, + 983, 983, 992, 992, 983, 992, 983, 983, 983, 992, + 992, 983, 983, 992, 205, 992, 992, 992, 4, 4, + 992, 992, 992, 208, 4, 4, 7, 5, 205, 4, + 4, 4, 4, 4, 700, 702, 691, 678, 955, 789, + 977, 982, 1005, 995, 491, 205, 544, 1003, 983, 985, + 205, 1012, 1204, 986, 206, 206, 205, 205, 500, 536, + 206, 208, 205, 205, 988, 994, 1017, 512, 1162, 1039, + 991, 989, 515, 1000, 1002, 760, 1209, 1021, 1027, 1041, + 1039, 739, 526, 998, 565, 1031, 1239, 1219, 1259, 1034, + -1, -1, -1, -1, -1, 541, -1, 1204, -1, 1204, + -1, -1, 1209, -1, -1, -1, -1, -1, -1, 1204, + -1, -1, 1219, 1204, 1209, -1, 701, -1, 1209, -1, + 561, -1, -1, 1209, 1204, -1, -1, -1, 1219, 1204, + -1, 1204, -1, -1, 1209, -1, 1209, -1, -1, -1, + -1, 1204, -1, -1, -1, -1, 1219, -1, -1, 1204, + -1, -1, 1204, -1, 1209, -1, 1204, -1, -1, -1, + -1, 1209, -1, -1, -1, -1, -1, 1204, 1204, -1, + -1, 1219, 1209, 1209, 1204, -1, -1, -1, -1, 1209, + -1, -1, -1, -1, -1, -1, 1204, 1204, -1, 1204, + -1, -1, 1209, 1204, -1, -1, -1, 1204, -1, 1204, + -1, -1, -1, -1, 1204, -1, -1, 1204, -1, 1204, + 1204, 1204, -1, -1, 1204, 1204, -1, 1204, -1, -1, + -1, 1204, 1204, -1, -1, 1204, -1, 1204, 1204, 1204, + -1, -1, 1204, 1204, 1204 }; const short Dhcp4Parser::yystos_[] = { - 0, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 0, 5, - 7, 9, 202, 203, 204, 205, 221, 222, 223, 228, - 7, 237, 7, 242, 7, 289, 7, 397, 7, 480, - 7, 496, 7, 432, 7, 438, 7, 462, 7, 373, - 7, 561, 7, 592, 229, 224, 238, 243, 290, 398, - 481, 497, 433, 439, 463, 374, 562, 593, 221, 230, - 231, 202, 226, 227, 10, 239, 241, 11, 14, 26, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 87, 88, 98, 99, 102, 103, 107, - 112, 113, 114, 115, 116, 121, 131, 134, 141, 142, - 146, 149, 153, 173, 174, 175, 176, 177, 178, 187, - 202, 236, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 259, 260, 261, 262, - 263, 264, 265, 266, 269, 271, 273, 274, 275, 277, - 279, 280, 281, 282, 283, 284, 285, 303, 305, 311, - 313, 351, 360, 367, 381, 391, 415, 416, 417, 418, - 422, 430, 456, 486, 488, 490, 501, 503, 505, 528, - 540, 541, 549, 559, 590, 599, 623, 15, 16, 19, - 22, 23, 24, 25, 236, 287, 288, 291, 293, 296, - 299, 300, 301, 302, 486, 488, 84, 85, 86, 100, - 104, 105, 106, 117, 120, 128, 236, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 261, 262, 263, - 264, 265, 266, 269, 271, 273, 274, 275, 277, 279, - 399, 400, 401, 403, 405, 407, 409, 411, 413, 415, - 416, 417, 418, 421, 456, 474, 486, 488, 490, 501, - 503, 505, 525, 101, 236, 411, 413, 456, 482, 483, - 484, 486, 488, 116, 122, 123, 124, 125, 126, 127, - 129, 236, 456, 486, 488, 498, 499, 500, 501, 503, - 505, 507, 511, 513, 515, 517, 519, 521, 523, 430, - 37, 89, 91, 92, 95, 96, 97, 236, 331, 440, - 441, 442, 443, 444, 445, 446, 448, 450, 452, 453, - 455, 486, 488, 90, 93, 94, 236, 331, 444, 450, - 464, 465, 466, 467, 468, 470, 471, 472, 473, 486, - 488, 132, 133, 236, 375, 376, 377, 379, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 173, 174, 236, 486, 488, 563, 564, 565, 566, - 568, 569, 571, 572, 573, 576, 578, 580, 581, 582, - 584, 586, 588, 12, 13, 594, 595, 596, 598, 6, - 3, 4, 8, 3, 240, 3, 8, 591, 286, 306, - 4, 4, 4, 502, 504, 506, 304, 312, 314, 4, + 0, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 5, + 7, 9, 205, 206, 207, 208, 224, 225, 226, 231, + 7, 240, 7, 245, 7, 292, 7, 403, 7, 486, + 7, 502, 7, 438, 7, 444, 7, 468, 7, 379, + 7, 567, 7, 598, 232, 227, 241, 246, 293, 404, + 487, 503, 439, 445, 469, 380, 568, 599, 224, 233, + 234, 205, 229, 230, 10, 242, 244, 11, 14, 26, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 90, 91, 101, 102, 105, 106, 110, + 115, 116, 117, 118, 119, 124, 134, 137, 144, 145, + 149, 152, 156, 176, 177, 178, 179, 180, 181, 190, + 205, 239, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 262, 263, 264, 265, + 266, 267, 268, 269, 272, 274, 276, 277, 278, 280, + 282, 283, 284, 285, 286, 287, 288, 306, 308, 314, + 316, 357, 366, 373, 387, 397, 421, 422, 423, 424, + 428, 436, 462, 492, 494, 496, 507, 509, 511, 534, + 546, 547, 555, 565, 596, 605, 629, 15, 16, 19, + 22, 23, 24, 25, 239, 290, 291, 294, 296, 299, + 302, 303, 304, 305, 492, 494, 87, 88, 89, 103, + 107, 108, 109, 120, 123, 131, 239, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 264, 265, 266, + 267, 268, 269, 272, 274, 276, 277, 278, 280, 282, + 405, 406, 407, 409, 411, 413, 415, 417, 419, 421, + 422, 423, 424, 427, 462, 480, 492, 494, 496, 507, + 509, 511, 531, 104, 239, 417, 419, 462, 488, 489, + 490, 492, 494, 119, 125, 126, 127, 128, 129, 130, + 132, 239, 462, 492, 494, 504, 505, 506, 507, 509, + 511, 513, 517, 519, 521, 523, 525, 527, 529, 436, + 37, 92, 94, 95, 98, 99, 100, 239, 334, 446, + 447, 448, 449, 450, 451, 452, 454, 456, 458, 459, + 461, 492, 494, 93, 96, 97, 239, 334, 450, 456, + 470, 471, 472, 473, 474, 476, 477, 478, 479, 492, + 494, 135, 136, 239, 381, 382, 383, 385, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 176, 177, 239, 492, 494, 569, 570, 571, 572, + 574, 575, 577, 578, 579, 582, 584, 586, 587, 588, + 590, 592, 594, 12, 13, 600, 601, 602, 604, 6, + 3, 4, 8, 3, 243, 3, 8, 597, 289, 309, + 4, 4, 4, 508, 510, 512, 307, 315, 317, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 258, 4, 4, 4, 4, 4, 267, 270, 272, 4, - 4, 4, 392, 431, 457, 4, 423, 487, 489, 419, - 4, 4, 4, 352, 529, 491, 368, 382, 4, 361, - 542, 550, 560, 276, 278, 4, 4, 4, 600, 624, - 4, 3, 8, 292, 294, 297, 4, 4, 4, 4, - 3, 8, 404, 406, 408, 475, 402, 410, 4, 414, - 412, 526, 3, 8, 485, 3, 8, 524, 512, 514, - 518, 516, 522, 520, 508, 8, 3, 8, 447, 332, - 4, 451, 449, 454, 4, 8, 3, 469, 4, 4, - 8, 3, 378, 380, 3, 8, 4, 579, 567, 4, - 570, 4, 4, 574, 577, 4, 4, 583, 585, 587, - 589, 3, 8, 597, 4, 3, 8, 221, 221, 202, - 4, 4, 4, 4, 205, 205, 205, 4, 4, 4, - 4, 4, 4, 203, 203, 203, 203, 203, 205, 204, - 204, 204, 203, 203, 4, 203, 203, 205, 205, 205, - 4, 4, 4, 205, 205, 205, 4, 4, 4, 203, - 4, 4, 4, 4, 205, 205, 205, 4, 4, 4, - 4, 4, 203, 4, 4, 4, 4, 4, 4, 205, - 205, 205, 4, 4, 245, 4, 4, 4, 205, 205, - 203, 203, 288, 4, 4, 4, 4, 4, 4, 203, - 4, 4, 4, 400, 4, 483, 4, 4, 4, 4, - 4, 4, 4, 4, 500, 4, 4, 203, 4, 4, - 4, 205, 442, 4, 205, 205, 466, 4, 4, 376, - 205, 4, 4, 203, 4, 203, 203, 4, 4, 205, - 205, 4, 4, 4, 4, 564, 4, 203, 595, 4, - 7, 7, 7, 7, 202, 202, 202, 7, 7, 5, - 202, 169, 170, 171, 172, 205, 268, 202, 202, 5, - 5, 5, 5, 223, 225, 202, 108, 109, 110, 111, - 420, 5, 5, 5, 5, 7, 7, 7, 7, 7, - 202, 202, 5, 7, 5, 232, 17, 18, 295, 20, - 21, 298, 202, 202, 202, 5, 202, 202, 232, 202, - 7, 202, 232, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 225, 202, 202, - 202, 18, 167, 575, 168, 268, 202, 202, 202, 5, - 221, 244, 594, 287, 27, 307, 308, 309, 37, 41, + 261, 4, 4, 4, 4, 4, 270, 273, 275, 4, + 4, 4, 398, 437, 463, 4, 429, 493, 495, 425, + 4, 4, 4, 358, 535, 497, 374, 388, 4, 367, + 548, 556, 566, 279, 281, 4, 4, 4, 606, 630, + 4, 3, 8, 295, 297, 300, 4, 4, 4, 4, + 3, 8, 410, 412, 414, 481, 408, 416, 4, 420, + 418, 532, 3, 8, 491, 3, 8, 530, 518, 520, + 524, 522, 528, 526, 514, 8, 3, 8, 453, 335, + 4, 457, 455, 460, 4, 8, 3, 475, 4, 4, + 8, 3, 384, 386, 3, 8, 4, 585, 573, 4, + 576, 4, 4, 580, 583, 4, 4, 589, 591, 593, + 595, 3, 8, 603, 4, 3, 8, 224, 224, 205, + 4, 4, 4, 4, 208, 208, 208, 4, 4, 4, + 4, 4, 4, 206, 206, 206, 206, 206, 208, 207, + 207, 207, 206, 206, 4, 206, 206, 208, 208, 208, + 4, 4, 4, 208, 208, 208, 4, 4, 4, 206, + 4, 4, 4, 4, 208, 208, 208, 4, 4, 4, + 4, 4, 206, 4, 4, 4, 4, 4, 4, 208, + 208, 208, 4, 4, 248, 4, 4, 4, 208, 208, + 206, 206, 291, 4, 4, 4, 4, 4, 4, 206, + 4, 4, 4, 406, 4, 489, 4, 4, 4, 4, + 4, 4, 4, 4, 506, 4, 4, 206, 4, 4, + 4, 208, 448, 4, 208, 208, 472, 4, 4, 382, + 208, 4, 4, 206, 4, 206, 206, 4, 4, 208, + 208, 4, 4, 4, 4, 570, 4, 206, 601, 4, + 7, 7, 7, 7, 205, 205, 205, 7, 7, 5, + 205, 172, 173, 174, 175, 208, 271, 205, 205, 5, + 5, 5, 5, 226, 228, 205, 111, 112, 113, 114, + 426, 5, 5, 5, 5, 7, 7, 7, 7, 7, + 205, 205, 5, 7, 5, 235, 17, 18, 298, 20, + 21, 301, 205, 205, 205, 5, 205, 205, 235, 205, + 7, 205, 235, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 228, 205, 205, + 205, 18, 170, 581, 171, 271, 205, 205, 205, 5, + 224, 247, 600, 290, 27, 310, 311, 312, 37, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 55, 56, 57, 58, 59, 236, 319, 320, 321, 324, - 326, 328, 330, 331, 333, 334, 335, 336, 337, 338, - 339, 342, 343, 345, 347, 349, 319, 7, 315, 316, - 317, 7, 393, 394, 395, 7, 434, 435, 436, 7, - 458, 459, 460, 7, 424, 425, 426, 122, 123, 124, - 125, 127, 353, 354, 355, 356, 357, 358, 359, 7, - 530, 531, 7, 492, 493, 494, 7, 369, 370, 371, - 135, 136, 137, 138, 139, 140, 383, 384, 385, 386, - 387, 388, 389, 390, 143, 144, 145, 236, 362, 363, - 364, 365, 366, 486, 488, 147, 148, 236, 486, 488, - 543, 544, 545, 547, 150, 151, 152, 202, 486, 488, - 551, 552, 553, 554, 556, 557, 563, 7, 601, 602, - 188, 236, 625, 626, 627, 233, 7, 476, 477, 478, - 130, 507, 509, 527, 315, 8, 8, 8, 310, 3, - 8, 322, 325, 327, 329, 4, 4, 4, 4, 4, - 4, 4, 340, 4, 344, 346, 348, 350, 3, 8, - 8, 318, 6, 3, 396, 6, 3, 437, 6, 3, - 461, 6, 3, 427, 6, 3, 3, 6, 532, 3, - 6, 495, 6, 3, 372, 6, 3, 4, 4, 4, - 4, 4, 4, 3, 8, 4, 4, 4, 3, 8, - 546, 548, 3, 8, 4, 555, 4, 558, 3, 8, - 8, 603, 3, 6, 4, 3, 8, 202, 234, 235, - 479, 6, 3, 510, 8, 6, 4, 308, 4, 4, - 4, 4, 203, 205, 203, 205, 203, 203, 203, 4, - 203, 4, 4, 4, 4, 320, 319, 317, 399, 395, - 440, 436, 464, 460, 236, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 261, 262, 263, 264, 265, - 266, 269, 271, 273, 274, 275, 277, 279, 331, 391, - 409, 411, 413, 415, 416, 417, 418, 428, 429, 456, - 486, 488, 501, 503, 505, 525, 426, 354, 118, 119, - 236, 246, 247, 248, 331, 430, 456, 486, 488, 501, - 503, 505, 533, 534, 535, 536, 537, 539, 531, 498, - 494, 375, 371, 203, 203, 203, 203, 203, 203, 384, - 205, 203, 203, 363, 4, 4, 544, 205, 4, 203, - 4, 552, 179, 181, 182, 236, 331, 486, 488, 604, - 605, 606, 607, 609, 602, 205, 626, 6, 3, 482, - 478, 4, 202, 38, 39, 40, 323, 202, 202, 202, - 52, 53, 54, 341, 202, 202, 202, 202, 8, 8, - 8, 8, 3, 8, 538, 4, 8, 3, 8, 8, - 202, 202, 202, 221, 610, 4, 608, 3, 8, 202, - 8, 232, 429, 4, 205, 535, 4, 203, 4, 605, - 202, 5, 202, 7, 611, 612, 613, 3, 6, 180, - 183, 184, 185, 186, 614, 615, 616, 618, 619, 620, - 621, 612, 617, 4, 4, 4, 622, 3, 8, 4, - 205, 203, 203, 4, 615, 202, 202 + 52, 53, 54, 58, 59, 60, 61, 62, 239, 322, + 323, 324, 327, 329, 331, 333, 334, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 348, 349, 351, + 353, 355, 322, 7, 318, 319, 320, 7, 399, 400, + 401, 7, 440, 441, 442, 7, 464, 465, 466, 7, + 430, 431, 432, 125, 126, 127, 128, 130, 359, 360, + 361, 362, 363, 364, 365, 7, 536, 537, 7, 498, + 499, 500, 7, 375, 376, 377, 138, 139, 140, 141, + 142, 143, 389, 390, 391, 392, 393, 394, 395, 396, + 146, 147, 148, 239, 368, 369, 370, 371, 372, 492, + 494, 150, 151, 239, 492, 494, 549, 550, 551, 553, + 153, 154, 155, 205, 492, 494, 557, 558, 559, 560, + 562, 563, 569, 7, 607, 608, 191, 239, 631, 632, + 633, 236, 7, 482, 483, 484, 133, 513, 515, 533, + 318, 8, 8, 8, 313, 3, 8, 325, 328, 330, + 332, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 346, 4, 350, 352, 354, 356, 3, 8, 8, + 321, 6, 3, 402, 6, 3, 443, 6, 3, 467, + 6, 3, 433, 6, 3, 3, 6, 538, 3, 6, + 501, 6, 3, 378, 6, 3, 4, 4, 4, 4, + 4, 4, 3, 8, 4, 4, 4, 3, 8, 552, + 554, 3, 8, 4, 561, 4, 564, 3, 8, 8, + 609, 3, 6, 4, 3, 8, 205, 237, 238, 485, + 6, 3, 516, 8, 6, 4, 311, 4, 4, 4, + 4, 206, 208, 206, 208, 206, 206, 206, 206, 206, + 206, 4, 206, 4, 4, 4, 4, 323, 322, 320, + 405, 401, 446, 442, 470, 466, 239, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 264, 265, 266, + 267, 268, 269, 272, 274, 276, 277, 278, 280, 282, + 334, 397, 415, 417, 419, 421, 422, 423, 424, 434, + 435, 462, 492, 494, 507, 509, 511, 531, 432, 360, + 121, 122, 239, 249, 250, 251, 334, 436, 462, 492, + 494, 507, 509, 511, 539, 540, 541, 542, 543, 545, + 537, 504, 500, 381, 377, 206, 206, 206, 206, 206, + 206, 390, 208, 206, 206, 369, 4, 4, 550, 208, + 4, 206, 4, 558, 182, 184, 185, 239, 334, 492, + 494, 610, 611, 612, 613, 615, 608, 208, 632, 6, + 3, 488, 484, 4, 205, 38, 39, 40, 326, 205, + 205, 205, 55, 56, 57, 347, 205, 205, 205, 205, + 8, 8, 8, 8, 3, 8, 544, 4, 8, 3, + 8, 8, 205, 205, 205, 224, 616, 4, 614, 3, + 8, 205, 8, 235, 435, 4, 208, 541, 4, 206, + 4, 611, 205, 5, 205, 7, 617, 618, 619, 3, + 6, 183, 186, 187, 188, 189, 620, 621, 622, 624, + 625, 626, 627, 618, 623, 4, 4, 4, 628, 3, + 8, 4, 208, 206, 206, 4, 621, 205, 205 }; const short Dhcp4Parser::yyr1_[] = { - 0, 206, 208, 207, 209, 207, 210, 207, 211, 207, - 212, 207, 213, 207, 214, 207, 215, 207, 216, 207, - 217, 207, 218, 207, 219, 207, 220, 207, 221, 221, - 221, 221, 221, 221, 221, 222, 224, 223, 225, 226, - 226, 227, 227, 227, 229, 228, 230, 230, 231, 231, - 231, 233, 232, 234, 234, 235, 235, 235, 236, 238, - 237, 240, 239, 239, 241, 243, 242, 244, 244, 244, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 258, 257, 259, 260, 261, - 262, 263, 264, 265, 267, 266, 268, 268, 268, 268, - 268, 270, 269, 272, 271, 273, 274, 276, 275, 278, - 277, 279, 280, 281, 282, 283, 284, 286, 285, 287, - 287, 287, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 290, 289, 292, 291, 294, 293, 295, 295, - 297, 296, 298, 298, 299, 300, 301, 302, 304, 303, - 306, 305, 307, 307, 307, 308, 310, 309, 312, 311, - 314, 313, 315, 315, 316, 316, 316, 318, 317, 319, - 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 322, 321, 323, 323, 323, 325, 324, 327, 326, - 329, 328, 330, 332, 331, 333, 334, 335, 336, 337, - 338, 340, 339, 341, 341, 341, 342, 344, 343, 346, - 345, 348, 347, 350, 349, 352, 351, 353, 353, 353, - 354, 354, 354, 354, 354, 355, 356, 357, 358, 359, - 361, 360, 362, 362, 362, 363, 363, 363, 363, 363, - 363, 364, 365, 366, 368, 367, 369, 369, 370, 370, - 370, 372, 371, 374, 373, 375, 375, 375, 375, 376, - 376, 378, 377, 380, 379, 382, 381, 383, 383, 383, - 384, 384, 384, 384, 384, 384, 385, 386, 387, 388, - 389, 390, 392, 391, 393, 393, 394, 394, 394, 396, - 395, 398, 397, 399, 399, 399, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 402, 401, 404, 403, 406, 405, 408, 407, 410, - 409, 412, 411, 414, 413, 415, 416, 417, 419, 418, - 420, 420, 420, 420, 421, 423, 422, 424, 424, 425, - 425, 425, 427, 426, 428, 428, 428, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 431, 430, 433, - 432, 434, 434, 435, 435, 435, 437, 436, 439, 438, - 440, 440, 441, 441, 441, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 443, 444, 445, 447, 446, - 449, 448, 451, 450, 452, 454, 453, 455, 457, 456, - 458, 458, 459, 459, 459, 461, 460, 463, 462, 464, - 464, 465, 465, 465, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 467, 469, 468, 470, 471, 472, 473, - 475, 474, 476, 476, 477, 477, 477, 479, 478, 481, - 480, 482, 482, 482, 483, 483, 483, 483, 483, 483, - 483, 485, 484, 487, 486, 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, 500, 500, 500, 500, 500, 502, 501, - 504, 503, 506, 505, 508, 507, 510, 509, 512, 511, + 0, 209, 211, 210, 212, 210, 213, 210, 214, 210, + 215, 210, 216, 210, 217, 210, 218, 210, 219, 210, + 220, 210, 221, 210, 222, 210, 223, 210, 224, 224, + 224, 224, 224, 224, 224, 225, 227, 226, 228, 229, + 229, 230, 230, 230, 232, 231, 233, 233, 234, 234, + 234, 236, 235, 237, 237, 238, 238, 238, 239, 241, + 240, 243, 242, 242, 244, 246, 245, 247, 247, 247, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 261, 260, 262, 263, 264, + 265, 266, 267, 268, 270, 269, 271, 271, 271, 271, + 271, 273, 272, 275, 274, 276, 277, 279, 278, 281, + 280, 282, 283, 284, 285, 286, 287, 289, 288, 290, + 290, 290, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 293, 292, 295, 294, 297, 296, 298, 298, + 300, 299, 301, 301, 302, 303, 304, 305, 307, 306, + 309, 308, 310, 310, 310, 311, 313, 312, 315, 314, + 317, 316, 318, 318, 319, 319, 319, 321, 320, 322, + 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 325, 324, 326, 326, 326, 328, + 327, 330, 329, 332, 331, 333, 335, 334, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 346, 345, 347, + 347, 347, 348, 350, 349, 352, 351, 354, 353, 356, + 355, 358, 357, 359, 359, 359, 360, 360, 360, 360, + 360, 361, 362, 363, 364, 365, 367, 366, 368, 368, + 368, 369, 369, 369, 369, 369, 369, 370, 371, 372, + 374, 373, 375, 375, 376, 376, 376, 378, 377, 380, + 379, 381, 381, 381, 381, 382, 382, 384, 383, 386, + 385, 388, 387, 389, 389, 389, 390, 390, 390, 390, + 390, 390, 391, 392, 393, 394, 395, 396, 398, 397, + 399, 399, 400, 400, 400, 402, 401, 404, 403, 405, + 405, 405, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 408, 407, 410, + 409, 412, 411, 414, 413, 416, 415, 418, 417, 420, + 419, 421, 422, 423, 425, 424, 426, 426, 426, 426, + 427, 429, 428, 430, 430, 431, 431, 431, 433, 432, + 434, 434, 434, 435, 435, 435, 435, 435, 435, 435, + 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, + 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, + 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, + 435, 435, 435, 437, 436, 439, 438, 440, 440, 441, + 441, 441, 443, 442, 445, 444, 446, 446, 447, 447, + 447, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 448, 449, 450, 451, 453, 452, 455, 454, 457, 456, + 458, 460, 459, 461, 463, 462, 464, 464, 465, 465, + 465, 467, 466, 469, 468, 470, 470, 471, 471, 471, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, + 475, 474, 476, 477, 478, 479, 481, 480, 482, 482, + 483, 483, 483, 485, 484, 487, 486, 488, 488, 488, + 489, 489, 489, 489, 489, 489, 489, 491, 490, 493, + 492, 495, 494, 497, 496, 498, 498, 499, 499, 499, + 501, 500, 503, 502, 504, 504, 505, 505, 505, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 508, 507, 510, 509, 512, 511, 514, 513, 516, 515, 518, 517, 520, 519, 522, 521, - 524, 523, 526, 525, 527, 527, 529, 528, 530, 530, - 530, 532, 531, 533, 533, 534, 534, 534, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 536, 538, 537, 539, 540, 542, 541, 543, - 543, 543, 544, 544, 544, 544, 544, 546, 545, 548, - 547, 550, 549, 551, 551, 551, 552, 552, 552, 552, - 552, 552, 553, 555, 554, 556, 558, 557, 560, 559, - 562, 561, 563, 563, 563, 564, 564, 564, 564, 564, - 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, - 564, 564, 564, 565, 567, 566, 568, 570, 569, 571, - 572, 574, 573, 575, 575, 577, 576, 579, 578, 580, - 581, 583, 582, 585, 584, 587, 586, 589, 588, 591, - 590, 593, 592, 594, 594, 594, 595, 595, 597, 596, - 598, 600, 599, 601, 601, 601, 603, 602, 604, 604, - 604, 605, 605, 605, 605, 605, 605, 605, 606, 608, - 607, 610, 609, 611, 611, 611, 613, 612, 614, 614, - 614, 615, 615, 615, 615, 615, 617, 616, 618, 619, - 620, 622, 621, 624, 623, 625, 625, 625, 626, 626, - 627 + 524, 523, 526, 525, 528, 527, 530, 529, 532, 531, + 533, 533, 535, 534, 536, 536, 536, 538, 537, 539, + 539, 540, 540, 540, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 542, 544, + 543, 545, 546, 548, 547, 549, 549, 549, 550, 550, + 550, 550, 550, 552, 551, 554, 553, 556, 555, 557, + 557, 557, 558, 558, 558, 558, 558, 558, 559, 561, + 560, 562, 564, 563, 566, 565, 568, 567, 569, 569, + 569, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 571, + 573, 572, 574, 576, 575, 577, 578, 580, 579, 581, + 581, 583, 582, 585, 584, 586, 587, 589, 588, 591, + 590, 593, 592, 595, 594, 597, 596, 599, 598, 600, + 600, 600, 601, 601, 603, 602, 604, 606, 605, 607, + 607, 607, 609, 608, 610, 610, 610, 611, 611, 611, + 611, 611, 611, 611, 612, 614, 613, 616, 615, 617, + 617, 617, 619, 618, 620, 620, 620, 621, 621, 621, + 621, 621, 623, 622, 624, 625, 626, 628, 627, 630, + 629, 631, 631, 631, 632, 632, 633 }; const signed char @@ -5776,64 +5811,64 @@ namespace isc { namespace dhcp { 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, 0, 4, 1, 1, 1, 0, 4, 0, 4, - 0, 4, 3, 0, 4, 3, 3, 3, 3, 3, - 3, 0, 4, 1, 1, 1, 3, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 6, 1, 3, 2, + 1, 1, 1, 1, 0, 4, 1, 1, 1, 0, + 4, 0, 4, 0, 4, 3, 0, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 0, 4, 1, + 1, 1, 3, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 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, 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, 0, 4, 1, 1, 1, 1, + 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, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 3, 3, 3, 0, 4, - 1, 1, 1, 1, 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, 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, + 0, 4, 1, 1, 3, 3, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 4, 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, 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, 0, 4, 1, 1, 3, 3, - 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, - 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 0, 4, 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, 1, 1, 1, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, + 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 6, 1, 1, 0, 6, 1, 3, - 2, 0, 4, 0, 1, 1, 3, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 3, 3, 0, 6, 1, - 3, 2, 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, 1, 1, 1, 1, - 1, 1, 1, 3, 0, 4, 3, 0, 4, 3, - 3, 0, 4, 1, 1, 0, 4, 0, 4, 3, - 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 6, 0, 4, 1, 3, 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 + 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, + 1, 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, 1, 0, + 4, 3, 3, 0, 6, 1, 3, 2, 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, 1, 1, 1, 1, 1, 1, 1, 3, + 0, 4, 3, 0, 4, 3, 3, 0, 4, 1, + 1, 0, 4, 0, 4, 3, 3, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 6, 0, 4, 1, + 3, 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 }; @@ -5857,6 +5892,7 @@ namespace isc { namespace dhcp { "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"", "\"postgresql\"", "\"user\"", "\"password\"", "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"", + "\"read-timeout\"", "\"write-timeout\"", "\"tcp-user-timeout\"", "\"max-reconnect-tries\"", "\"reconnect-wait-time\"", "\"on-fail\"", "\"stop-retry-exit\"", "\"serve-retry-exit\"", "\"serve-retry-continue\"", "\"max-row-errors\"", "\"trust-anchor\"", @@ -5941,7 +5977,8 @@ namespace isc { namespace dhcp { "not_empty_database_list", "database", "$@36", "database_map_params", "database_map_param", "database_type", "$@37", "db_type", "user", "$@38", "password", "$@39", "host", "$@40", "port", "name", "$@41", "persist", - "lfc_interval", "readonly", "connect_timeout", "max_reconnect_tries", + "lfc_interval", "readonly", "connect_timeout", "read_timeout", + "write_timeout", "tcp_user_timeout", "max_reconnect_tries", "reconnect_wait_time", "on_fail", "$@42", "on_fail_mode", "max_row_errors", "trust_anchor", "$@43", "cert_file", "$@44", "key_file", "$@45", "cipher_list", "$@46", @@ -6023,89 +6060,89 @@ namespace isc { namespace dhcp { const short Dhcp4Parser::yyrline_[] = { - 0, 295, 295, 295, 296, 296, 297, 297, 298, 298, - 299, 299, 300, 300, 301, 301, 302, 302, 303, 303, - 304, 304, 305, 305, 306, 306, 307, 307, 315, 316, - 317, 318, 319, 320, 321, 324, 329, 329, 340, 343, - 344, 347, 352, 358, 363, 363, 370, 371, 374, 378, - 382, 388, 388, 395, 396, 399, 403, 407, 417, 426, - 426, 441, 441, 455, 458, 464, 464, 473, 474, 475, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 548, 554, 560, 566, 572, 578, - 584, 590, 596, 602, 608, 614, 614, 623, 629, 635, - 641, 647, 653, 659, 665, 665, 674, 677, 680, 683, - 686, 692, 692, 701, 701, 710, 716, 722, 722, 731, - 731, 740, 746, 752, 758, 764, 770, 776, 776, 788, - 789, 790, 795, 796, 797, 798, 799, 800, 801, 802, - 803, 804, 807, 807, 816, 816, 827, 827, 835, 836, - 839, 839, 847, 849, 853, 859, 865, 871, 877, 877, - 890, 890, 901, 902, 903, 908, 910, 910, 929, 929, - 942, 942, 953, 954, 957, 958, 959, 964, 964, 974, - 975, 976, 981, 982, 983, 984, 985, 986, 987, 988, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1002, 1002, 1010, 1011, 1012, 1015, 1015, 1024, 1024, - 1033, 1033, 1042, 1048, 1048, 1057, 1063, 1069, 1075, 1081, - 1087, 1093, 1093, 1101, 1102, 1103, 1106, 1112, 1112, 1121, - 1121, 1130, 1130, 1139, 1139, 1148, 1148, 1159, 1160, 1161, - 1166, 1167, 1168, 1169, 1170, 1173, 1178, 1183, 1188, 1193, - 1200, 1200, 1213, 1214, 1215, 1220, 1221, 1222, 1223, 1224, - 1225, 1228, 1234, 1240, 1246, 1246, 1257, 1258, 1261, 1262, - 1263, 1268, 1268, 1278, 1278, 1288, 1289, 1290, 1293, 1296, - 1297, 1300, 1300, 1309, 1309, 1318, 1318, 1330, 1331, 1332, - 1337, 1338, 1339, 1340, 1341, 1342, 1345, 1351, 1357, 1363, - 1369, 1375, 1384, 1384, 1398, 1399, 1402, 1403, 1404, 1413, - 1413, 1439, 1439, 1450, 1451, 1452, 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, 1487, 1488, 1489, 1490, 1491, - 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, - 1502, 1505, 1505, 1514, 1514, 1523, 1523, 1532, 1532, 1541, - 1541, 1550, 1550, 1559, 1559, 1570, 1576, 1582, 1588, 1588, - 1596, 1597, 1598, 1599, 1602, 1610, 1610, 1622, 1623, 1627, - 1628, 1629, 1634, 1634, 1642, 1643, 1644, 1649, 1650, 1651, - 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, - 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, - 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1695, 1695, 1709, - 1709, 1718, 1719, 1722, 1723, 1724, 1731, 1731, 1746, 1746, - 1760, 1761, 1764, 1765, 1766, 1771, 1772, 1773, 1774, 1775, - 1776, 1777, 1778, 1779, 1780, 1783, 1785, 1791, 1793, 1793, - 1802, 1802, 1811, 1811, 1820, 1822, 1822, 1831, 1841, 1841, - 1854, 1855, 1860, 1861, 1862, 1869, 1869, 1881, 1881, 1893, - 1894, 1899, 1900, 1901, 1908, 1909, 1910, 1911, 1912, 1913, - 1914, 1915, 1916, 1919, 1921, 1921, 1930, 1932, 1934, 1940, - 1949, 1949, 1962, 1963, 1966, 1967, 1968, 1973, 1973, 1983, - 1983, 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2009, 2009, 2018, 2018, 2043, 2043, 2073, 2073, 2084, - 2085, 2088, 2089, 2090, 2095, 2095, 2104, 2104, 2113, 2114, - 2117, 2118, 2119, 2125, 2126, 2127, 2128, 2129, 2130, 2131, - 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2142, 2142, - 2151, 2151, 2160, 2160, 2169, 2169, 2178, 2178, 2189, 2189, - 2198, 2198, 2207, 2207, 2216, 2216, 2225, 2225, 2234, 2234, - 2243, 2243, 2257, 2257, 2268, 2269, 2275, 2275, 2286, 2287, - 2288, 2293, 2293, 2303, 2304, 2307, 2308, 2309, 2314, 2315, - 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, - 2326, 2327, 2330, 2332, 2332, 2341, 2349, 2357, 2357, 2368, - 2369, 2370, 2375, 2376, 2377, 2378, 2379, 2382, 2382, 2391, - 2391, 2403, 2403, 2416, 2417, 2418, 2423, 2424, 2425, 2426, - 2427, 2428, 2431, 2437, 2437, 2446, 2452, 2452, 2462, 2462, - 2475, 2475, 2485, 2486, 2487, 2492, 2493, 2494, 2495, 2496, - 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, - 2507, 2508, 2509, 2512, 2518, 2518, 2527, 2533, 2533, 2542, - 2548, 2554, 2554, 2563, 2564, 2567, 2567, 2577, 2577, 2587, - 2594, 2601, 2601, 2610, 2610, 2620, 2620, 2630, 2630, 2642, - 2642, 2654, 2654, 2664, 2665, 2666, 2672, 2673, 2676, 2676, - 2687, 2695, 2695, 2708, 2709, 2710, 2716, 2716, 2724, 2725, - 2726, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2740, 2746, - 2746, 2755, 2755, 2766, 2767, 2768, 2773, 2773, 2781, 2782, - 2783, 2788, 2789, 2790, 2791, 2792, 2795, 2795, 2804, 2810, - 2816, 2822, 2822, 2831, 2831, 2842, 2843, 2844, 2849, 2850, - 2853 + 0, 298, 298, 298, 299, 299, 300, 300, 301, 301, + 302, 302, 303, 303, 304, 304, 305, 305, 306, 306, + 307, 307, 308, 308, 309, 309, 310, 310, 318, 319, + 320, 321, 322, 323, 324, 327, 332, 332, 343, 346, + 347, 350, 355, 361, 366, 366, 373, 374, 377, 381, + 385, 391, 391, 398, 399, 402, 406, 410, 420, 429, + 429, 444, 444, 458, 461, 467, 467, 476, 477, 478, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 551, 557, 563, 569, 575, 581, + 587, 593, 599, 605, 611, 617, 617, 626, 632, 638, + 644, 650, 656, 662, 668, 668, 677, 680, 683, 686, + 689, 695, 695, 704, 704, 713, 719, 725, 725, 734, + 734, 743, 749, 755, 761, 767, 773, 779, 779, 791, + 792, 793, 798, 799, 800, 801, 802, 803, 804, 805, + 806, 807, 810, 810, 819, 819, 830, 830, 838, 839, + 842, 842, 850, 852, 856, 862, 868, 874, 880, 880, + 893, 893, 904, 905, 906, 911, 913, 913, 932, 932, + 945, 945, 956, 957, 960, 961, 962, 967, 967, 977, + 978, 979, 984, 985, 986, 987, 988, 989, 990, 991, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1008, 1008, 1016, 1017, 1018, 1021, + 1021, 1030, 1030, 1039, 1039, 1048, 1054, 1054, 1063, 1069, + 1075, 1081, 1087, 1093, 1099, 1105, 1111, 1117, 1117, 1125, + 1126, 1127, 1130, 1136, 1136, 1145, 1145, 1154, 1154, 1163, + 1163, 1172, 1172, 1183, 1184, 1185, 1190, 1191, 1192, 1193, + 1194, 1197, 1202, 1207, 1212, 1217, 1224, 1224, 1237, 1238, + 1239, 1244, 1245, 1246, 1247, 1248, 1249, 1252, 1258, 1264, + 1270, 1270, 1281, 1282, 1285, 1286, 1287, 1292, 1292, 1302, + 1302, 1312, 1313, 1314, 1317, 1320, 1321, 1324, 1324, 1333, + 1333, 1342, 1342, 1354, 1355, 1356, 1361, 1362, 1363, 1364, + 1365, 1366, 1369, 1375, 1381, 1387, 1393, 1399, 1408, 1408, + 1422, 1423, 1426, 1427, 1428, 1437, 1437, 1463, 1463, 1474, + 1475, 1476, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, + 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, + 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, + 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, + 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1529, 1529, 1538, + 1538, 1547, 1547, 1556, 1556, 1565, 1565, 1574, 1574, 1583, + 1583, 1594, 1600, 1606, 1612, 1612, 1620, 1621, 1622, 1623, + 1626, 1634, 1634, 1646, 1647, 1651, 1652, 1653, 1658, 1658, + 1666, 1667, 1668, 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, 1719, 1719, 1733, 1733, 1742, 1743, 1746, + 1747, 1748, 1755, 1755, 1770, 1770, 1784, 1785, 1788, 1789, + 1790, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, + 1804, 1807, 1809, 1815, 1817, 1817, 1826, 1826, 1835, 1835, + 1844, 1846, 1846, 1855, 1865, 1865, 1878, 1879, 1884, 1885, + 1886, 1893, 1893, 1905, 1905, 1917, 1918, 1923, 1924, 1925, + 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1943, + 1945, 1945, 1954, 1956, 1958, 1964, 1973, 1973, 1986, 1987, + 1990, 1991, 1992, 1997, 1997, 2007, 2007, 2017, 2018, 2019, + 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2033, 2033, 2042, + 2042, 2067, 2067, 2097, 2097, 2108, 2109, 2112, 2113, 2114, + 2119, 2119, 2128, 2128, 2137, 2138, 2141, 2142, 2143, 2149, + 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, + 2160, 2161, 2162, 2163, 2166, 2166, 2175, 2175, 2184, 2184, + 2193, 2193, 2202, 2202, 2213, 2213, 2222, 2222, 2231, 2231, + 2240, 2240, 2249, 2249, 2258, 2258, 2267, 2267, 2281, 2281, + 2292, 2293, 2299, 2299, 2310, 2311, 2312, 2317, 2317, 2327, + 2328, 2331, 2332, 2333, 2338, 2339, 2340, 2341, 2342, 2343, + 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2354, 2356, + 2356, 2365, 2373, 2381, 2381, 2392, 2393, 2394, 2399, 2400, + 2401, 2402, 2403, 2406, 2406, 2415, 2415, 2427, 2427, 2440, + 2441, 2442, 2447, 2448, 2449, 2450, 2451, 2452, 2455, 2461, + 2461, 2470, 2476, 2476, 2486, 2486, 2499, 2499, 2509, 2510, + 2511, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, + 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2536, + 2542, 2542, 2551, 2557, 2557, 2566, 2572, 2578, 2578, 2587, + 2588, 2591, 2591, 2601, 2601, 2611, 2618, 2625, 2625, 2634, + 2634, 2644, 2644, 2654, 2654, 2666, 2666, 2678, 2678, 2688, + 2689, 2690, 2696, 2697, 2700, 2700, 2711, 2719, 2719, 2732, + 2733, 2734, 2740, 2740, 2748, 2749, 2750, 2755, 2756, 2757, + 2758, 2759, 2760, 2761, 2764, 2770, 2770, 2779, 2779, 2790, + 2791, 2792, 2797, 2797, 2805, 2806, 2807, 2812, 2813, 2814, + 2815, 2816, 2819, 2819, 2828, 2834, 2840, 2846, 2846, 2855, + 2855, 2866, 2867, 2868, 2873, 2874, 2877 }; void @@ -6138,9 +6175,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 6142 "dhcp4_parser.cc" +#line 6179 "dhcp4_parser.cc" -#line 2859 "dhcp4_parser.yy" +#line 2883 "dhcp4_parser.yy" void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 86587e3a32..db0a999732 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -545,163 +545,166 @@ namespace isc { namespace dhcp { TOKEN_LFC_INTERVAL = 301, // "lfc-interval" TOKEN_READONLY = 302, // "readonly" TOKEN_CONNECT_TIMEOUT = 303, // "connect-timeout" - TOKEN_MAX_RECONNECT_TRIES = 304, // "max-reconnect-tries" - TOKEN_RECONNECT_WAIT_TIME = 305, // "reconnect-wait-time" - TOKEN_ON_FAIL = 306, // "on-fail" - TOKEN_STOP_RETRY_EXIT = 307, // "stop-retry-exit" - TOKEN_SERVE_RETRY_EXIT = 308, // "serve-retry-exit" - TOKEN_SERVE_RETRY_CONTINUE = 309, // "serve-retry-continue" - TOKEN_MAX_ROW_ERRORS = 310, // "max-row-errors" - TOKEN_TRUST_ANCHOR = 311, // "trust-anchor" - TOKEN_CERT_FILE = 312, // "cert-file" - TOKEN_KEY_FILE = 313, // "key-file" - TOKEN_CIPHER_LIST = 314, // "cipher-list" - TOKEN_VALID_LIFETIME = 315, // "valid-lifetime" - TOKEN_MIN_VALID_LIFETIME = 316, // "min-valid-lifetime" - TOKEN_MAX_VALID_LIFETIME = 317, // "max-valid-lifetime" - TOKEN_RENEW_TIMER = 318, // "renew-timer" - TOKEN_REBIND_TIMER = 319, // "rebind-timer" - TOKEN_CALCULATE_TEE_TIMES = 320, // "calculate-tee-times" - TOKEN_T1_PERCENT = 321, // "t1-percent" - TOKEN_T2_PERCENT = 322, // "t2-percent" - TOKEN_CACHE_THRESHOLD = 323, // "cache-threshold" - TOKEN_CACHE_MAX_AGE = 324, // "cache-max-age" - TOKEN_DECLINE_PROBATION_PERIOD = 325, // "decline-probation-period" - TOKEN_SERVER_TAG = 326, // "server-tag" - TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 327, // "statistic-default-sample-count" - TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 328, // "statistic-default-sample-age" - TOKEN_DDNS_SEND_UPDATES = 329, // "ddns-send-updates" - TOKEN_DDNS_OVERRIDE_NO_UPDATE = 330, // "ddns-override-no-update" - TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 331, // "ddns-override-client-update" - TOKEN_DDNS_REPLACE_CLIENT_NAME = 332, // "ddns-replace-client-name" - TOKEN_DDNS_GENERATED_PREFIX = 333, // "ddns-generated-prefix" - TOKEN_DDNS_QUALIFYING_SUFFIX = 334, // "ddns-qualifying-suffix" - TOKEN_DDNS_UPDATE_ON_RENEW = 335, // "ddns-update-on-renew" - TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 336, // "ddns-use-conflict-resolution" - TOKEN_STORE_EXTENDED_INFO = 337, // "store-extended-info" - TOKEN_SUBNET4 = 338, // "subnet4" - TOKEN_SUBNET_4O6_INTERFACE = 339, // "4o6-interface" - TOKEN_SUBNET_4O6_INTERFACE_ID = 340, // "4o6-interface-id" - TOKEN_SUBNET_4O6_SUBNET = 341, // "4o6-subnet" - TOKEN_OPTION_DEF = 342, // "option-def" - TOKEN_OPTION_DATA = 343, // "option-data" - TOKEN_NAME = 344, // "name" - TOKEN_DATA = 345, // "data" - TOKEN_CODE = 346, // "code" - TOKEN_SPACE = 347, // "space" - TOKEN_CSV_FORMAT = 348, // "csv-format" - TOKEN_ALWAYS_SEND = 349, // "always-send" - TOKEN_RECORD_TYPES = 350, // "record-types" - TOKEN_ENCAPSULATE = 351, // "encapsulate" - TOKEN_ARRAY = 352, // "array" - TOKEN_PARKED_PACKET_LIMIT = 353, // "parked-packet-limit" - TOKEN_SHARED_NETWORKS = 354, // "shared-networks" - TOKEN_POOLS = 355, // "pools" - TOKEN_POOL = 356, // "pool" - TOKEN_USER_CONTEXT = 357, // "user-context" - TOKEN_COMMENT = 358, // "comment" - TOKEN_SUBNET = 359, // "subnet" - TOKEN_INTERFACE = 360, // "interface" - TOKEN_ID = 361, // "id" - TOKEN_RESERVATION_MODE = 362, // "reservation-mode" - TOKEN_DISABLED = 363, // "disabled" - TOKEN_OUT_OF_POOL = 364, // "out-of-pool" - TOKEN_GLOBAL = 365, // "global" - TOKEN_ALL = 366, // "all" - TOKEN_RESERVATIONS_GLOBAL = 367, // "reservations-global" - TOKEN_RESERVATIONS_IN_SUBNET = 368, // "reservations-in-subnet" - TOKEN_RESERVATIONS_OUT_OF_POOL = 369, // "reservations-out-of-pool" - TOKEN_HOST_RESERVATION_IDENTIFIERS = 370, // "host-reservation-identifiers" - TOKEN_CLIENT_CLASSES = 371, // "client-classes" - TOKEN_REQUIRE_CLIENT_CLASSES = 372, // "require-client-classes" - TOKEN_TEST = 373, // "test" - TOKEN_ONLY_IF_REQUIRED = 374, // "only-if-required" - TOKEN_CLIENT_CLASS = 375, // "client-class" - TOKEN_RESERVATIONS = 376, // "reservations" - TOKEN_DUID = 377, // "duid" - TOKEN_HW_ADDRESS = 378, // "hw-address" - TOKEN_CIRCUIT_ID = 379, // "circuit-id" - TOKEN_CLIENT_ID = 380, // "client-id" - TOKEN_HOSTNAME = 381, // "hostname" - TOKEN_FLEX_ID = 382, // "flex-id" - TOKEN_RELAY = 383, // "relay" - TOKEN_IP_ADDRESS = 384, // "ip-address" - TOKEN_IP_ADDRESSES = 385, // "ip-addresses" - TOKEN_HOOKS_LIBRARIES = 386, // "hooks-libraries" - TOKEN_LIBRARY = 387, // "library" - TOKEN_PARAMETERS = 388, // "parameters" - TOKEN_EXPIRED_LEASES_PROCESSING = 389, // "expired-leases-processing" - TOKEN_RECLAIM_TIMER_WAIT_TIME = 390, // "reclaim-timer-wait-time" - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 391, // "flush-reclaimed-timer-wait-time" - TOKEN_HOLD_RECLAIMED_TIME = 392, // "hold-reclaimed-time" - TOKEN_MAX_RECLAIM_LEASES = 393, // "max-reclaim-leases" - TOKEN_MAX_RECLAIM_TIME = 394, // "max-reclaim-time" - TOKEN_UNWARNED_RECLAIM_CYCLES = 395, // "unwarned-reclaim-cycles" - TOKEN_DHCP4O6_PORT = 396, // "dhcp4o6-port" - TOKEN_DHCP_MULTI_THREADING = 397, // "multi-threading" - TOKEN_ENABLE_MULTI_THREADING = 398, // "enable-multi-threading" - TOKEN_THREAD_POOL_SIZE = 399, // "thread-pool-size" - TOKEN_PACKET_QUEUE_SIZE = 400, // "packet-queue-size" - TOKEN_CONTROL_SOCKET = 401, // "control-socket" - TOKEN_SOCKET_TYPE = 402, // "socket-type" - TOKEN_SOCKET_NAME = 403, // "socket-name" - TOKEN_DHCP_QUEUE_CONTROL = 404, // "dhcp-queue-control" - TOKEN_ENABLE_QUEUE = 405, // "enable-queue" - TOKEN_QUEUE_TYPE = 406, // "queue-type" - TOKEN_CAPACITY = 407, // "capacity" - TOKEN_DHCP_DDNS = 408, // "dhcp-ddns" - TOKEN_ENABLE_UPDATES = 409, // "enable-updates" - TOKEN_QUALIFYING_SUFFIX = 410, // "qualifying-suffix" - TOKEN_SERVER_IP = 411, // "server-ip" - TOKEN_SERVER_PORT = 412, // "server-port" - TOKEN_SENDER_IP = 413, // "sender-ip" - TOKEN_SENDER_PORT = 414, // "sender-port" - TOKEN_MAX_QUEUE_SIZE = 415, // "max-queue-size" - TOKEN_NCR_PROTOCOL = 416, // "ncr-protocol" - TOKEN_NCR_FORMAT = 417, // "ncr-format" - TOKEN_OVERRIDE_NO_UPDATE = 418, // "override-no-update" - TOKEN_OVERRIDE_CLIENT_UPDATE = 419, // "override-client-update" - TOKEN_REPLACE_CLIENT_NAME = 420, // "replace-client-name" - TOKEN_GENERATED_PREFIX = 421, // "generated-prefix" - TOKEN_TCP = 422, // "tcp" - TOKEN_JSON = 423, // "JSON" - TOKEN_WHEN_PRESENT = 424, // "when-present" - TOKEN_NEVER = 425, // "never" - TOKEN_ALWAYS = 426, // "always" - TOKEN_WHEN_NOT_PRESENT = 427, // "when-not-present" - TOKEN_HOSTNAME_CHAR_SET = 428, // "hostname-char-set" - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 429, // "hostname-char-replacement" - TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 430, // "early-global-reservations-lookup" - TOKEN_IP_RESERVATIONS_UNIQUE = 431, // "ip-reservations-unique" - TOKEN_RESERVATIONS_LOOKUP_FIRST = 432, // "reservations-lookup-first" - TOKEN_LOGGERS = 433, // "loggers" - TOKEN_OUTPUT_OPTIONS = 434, // "output_options" - TOKEN_OUTPUT = 435, // "output" - TOKEN_DEBUGLEVEL = 436, // "debuglevel" - TOKEN_SEVERITY = 437, // "severity" - TOKEN_FLUSH = 438, // "flush" - TOKEN_MAXSIZE = 439, // "maxsize" - TOKEN_MAXVER = 440, // "maxver" - TOKEN_PATTERN = 441, // "pattern" - TOKEN_COMPATIBILITY = 442, // "compatibility" - TOKEN_LENIENT_OPTION_PARSING = 443, // "lenient-option-parsing" - TOKEN_TOPLEVEL_JSON = 444, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP4 = 445, // TOPLEVEL_DHCP4 - TOKEN_SUB_DHCP4 = 446, // SUB_DHCP4 - TOKEN_SUB_INTERFACES4 = 447, // SUB_INTERFACES4 - TOKEN_SUB_SUBNET4 = 448, // SUB_SUBNET4 - TOKEN_SUB_POOL4 = 449, // SUB_POOL4 - TOKEN_SUB_RESERVATION = 450, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 451, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 452, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 453, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 454, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 455, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 456, // SUB_CONFIG_CONTROL - TOKEN_STRING = 457, // "constant string" - TOKEN_INTEGER = 458, // "integer" - TOKEN_FLOAT = 459, // "floating point" - TOKEN_BOOLEAN = 460 // "boolean" + TOKEN_READ_TIMEOUT = 304, // "read-timeout" + TOKEN_WRITE_TIMEOUT = 305, // "write-timeout" + TOKEN_TCP_USER_TIMEOUT = 306, // "tcp-user-timeout" + TOKEN_MAX_RECONNECT_TRIES = 307, // "max-reconnect-tries" + TOKEN_RECONNECT_WAIT_TIME = 308, // "reconnect-wait-time" + TOKEN_ON_FAIL = 309, // "on-fail" + TOKEN_STOP_RETRY_EXIT = 310, // "stop-retry-exit" + TOKEN_SERVE_RETRY_EXIT = 311, // "serve-retry-exit" + TOKEN_SERVE_RETRY_CONTINUE = 312, // "serve-retry-continue" + TOKEN_MAX_ROW_ERRORS = 313, // "max-row-errors" + TOKEN_TRUST_ANCHOR = 314, // "trust-anchor" + TOKEN_CERT_FILE = 315, // "cert-file" + TOKEN_KEY_FILE = 316, // "key-file" + TOKEN_CIPHER_LIST = 317, // "cipher-list" + TOKEN_VALID_LIFETIME = 318, // "valid-lifetime" + TOKEN_MIN_VALID_LIFETIME = 319, // "min-valid-lifetime" + TOKEN_MAX_VALID_LIFETIME = 320, // "max-valid-lifetime" + TOKEN_RENEW_TIMER = 321, // "renew-timer" + TOKEN_REBIND_TIMER = 322, // "rebind-timer" + TOKEN_CALCULATE_TEE_TIMES = 323, // "calculate-tee-times" + TOKEN_T1_PERCENT = 324, // "t1-percent" + TOKEN_T2_PERCENT = 325, // "t2-percent" + TOKEN_CACHE_THRESHOLD = 326, // "cache-threshold" + TOKEN_CACHE_MAX_AGE = 327, // "cache-max-age" + TOKEN_DECLINE_PROBATION_PERIOD = 328, // "decline-probation-period" + TOKEN_SERVER_TAG = 329, // "server-tag" + TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 330, // "statistic-default-sample-count" + TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 331, // "statistic-default-sample-age" + TOKEN_DDNS_SEND_UPDATES = 332, // "ddns-send-updates" + TOKEN_DDNS_OVERRIDE_NO_UPDATE = 333, // "ddns-override-no-update" + TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 334, // "ddns-override-client-update" + TOKEN_DDNS_REPLACE_CLIENT_NAME = 335, // "ddns-replace-client-name" + TOKEN_DDNS_GENERATED_PREFIX = 336, // "ddns-generated-prefix" + TOKEN_DDNS_QUALIFYING_SUFFIX = 337, // "ddns-qualifying-suffix" + TOKEN_DDNS_UPDATE_ON_RENEW = 338, // "ddns-update-on-renew" + TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 339, // "ddns-use-conflict-resolution" + TOKEN_STORE_EXTENDED_INFO = 340, // "store-extended-info" + TOKEN_SUBNET4 = 341, // "subnet4" + TOKEN_SUBNET_4O6_INTERFACE = 342, // "4o6-interface" + TOKEN_SUBNET_4O6_INTERFACE_ID = 343, // "4o6-interface-id" + TOKEN_SUBNET_4O6_SUBNET = 344, // "4o6-subnet" + TOKEN_OPTION_DEF = 345, // "option-def" + TOKEN_OPTION_DATA = 346, // "option-data" + TOKEN_NAME = 347, // "name" + TOKEN_DATA = 348, // "data" + TOKEN_CODE = 349, // "code" + TOKEN_SPACE = 350, // "space" + TOKEN_CSV_FORMAT = 351, // "csv-format" + TOKEN_ALWAYS_SEND = 352, // "always-send" + TOKEN_RECORD_TYPES = 353, // "record-types" + TOKEN_ENCAPSULATE = 354, // "encapsulate" + TOKEN_ARRAY = 355, // "array" + TOKEN_PARKED_PACKET_LIMIT = 356, // "parked-packet-limit" + TOKEN_SHARED_NETWORKS = 357, // "shared-networks" + TOKEN_POOLS = 358, // "pools" + TOKEN_POOL = 359, // "pool" + TOKEN_USER_CONTEXT = 360, // "user-context" + TOKEN_COMMENT = 361, // "comment" + TOKEN_SUBNET = 362, // "subnet" + TOKEN_INTERFACE = 363, // "interface" + TOKEN_ID = 364, // "id" + TOKEN_RESERVATION_MODE = 365, // "reservation-mode" + TOKEN_DISABLED = 366, // "disabled" + TOKEN_OUT_OF_POOL = 367, // "out-of-pool" + TOKEN_GLOBAL = 368, // "global" + TOKEN_ALL = 369, // "all" + TOKEN_RESERVATIONS_GLOBAL = 370, // "reservations-global" + TOKEN_RESERVATIONS_IN_SUBNET = 371, // "reservations-in-subnet" + TOKEN_RESERVATIONS_OUT_OF_POOL = 372, // "reservations-out-of-pool" + TOKEN_HOST_RESERVATION_IDENTIFIERS = 373, // "host-reservation-identifiers" + TOKEN_CLIENT_CLASSES = 374, // "client-classes" + TOKEN_REQUIRE_CLIENT_CLASSES = 375, // "require-client-classes" + TOKEN_TEST = 376, // "test" + TOKEN_ONLY_IF_REQUIRED = 377, // "only-if-required" + TOKEN_CLIENT_CLASS = 378, // "client-class" + TOKEN_RESERVATIONS = 379, // "reservations" + TOKEN_DUID = 380, // "duid" + TOKEN_HW_ADDRESS = 381, // "hw-address" + TOKEN_CIRCUIT_ID = 382, // "circuit-id" + TOKEN_CLIENT_ID = 383, // "client-id" + TOKEN_HOSTNAME = 384, // "hostname" + TOKEN_FLEX_ID = 385, // "flex-id" + TOKEN_RELAY = 386, // "relay" + TOKEN_IP_ADDRESS = 387, // "ip-address" + TOKEN_IP_ADDRESSES = 388, // "ip-addresses" + TOKEN_HOOKS_LIBRARIES = 389, // "hooks-libraries" + TOKEN_LIBRARY = 390, // "library" + TOKEN_PARAMETERS = 391, // "parameters" + TOKEN_EXPIRED_LEASES_PROCESSING = 392, // "expired-leases-processing" + TOKEN_RECLAIM_TIMER_WAIT_TIME = 393, // "reclaim-timer-wait-time" + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 394, // "flush-reclaimed-timer-wait-time" + TOKEN_HOLD_RECLAIMED_TIME = 395, // "hold-reclaimed-time" + TOKEN_MAX_RECLAIM_LEASES = 396, // "max-reclaim-leases" + TOKEN_MAX_RECLAIM_TIME = 397, // "max-reclaim-time" + TOKEN_UNWARNED_RECLAIM_CYCLES = 398, // "unwarned-reclaim-cycles" + TOKEN_DHCP4O6_PORT = 399, // "dhcp4o6-port" + TOKEN_DHCP_MULTI_THREADING = 400, // "multi-threading" + TOKEN_ENABLE_MULTI_THREADING = 401, // "enable-multi-threading" + TOKEN_THREAD_POOL_SIZE = 402, // "thread-pool-size" + TOKEN_PACKET_QUEUE_SIZE = 403, // "packet-queue-size" + TOKEN_CONTROL_SOCKET = 404, // "control-socket" + TOKEN_SOCKET_TYPE = 405, // "socket-type" + TOKEN_SOCKET_NAME = 406, // "socket-name" + TOKEN_DHCP_QUEUE_CONTROL = 407, // "dhcp-queue-control" + TOKEN_ENABLE_QUEUE = 408, // "enable-queue" + TOKEN_QUEUE_TYPE = 409, // "queue-type" + TOKEN_CAPACITY = 410, // "capacity" + TOKEN_DHCP_DDNS = 411, // "dhcp-ddns" + TOKEN_ENABLE_UPDATES = 412, // "enable-updates" + TOKEN_QUALIFYING_SUFFIX = 413, // "qualifying-suffix" + TOKEN_SERVER_IP = 414, // "server-ip" + TOKEN_SERVER_PORT = 415, // "server-port" + TOKEN_SENDER_IP = 416, // "sender-ip" + TOKEN_SENDER_PORT = 417, // "sender-port" + TOKEN_MAX_QUEUE_SIZE = 418, // "max-queue-size" + TOKEN_NCR_PROTOCOL = 419, // "ncr-protocol" + TOKEN_NCR_FORMAT = 420, // "ncr-format" + TOKEN_OVERRIDE_NO_UPDATE = 421, // "override-no-update" + TOKEN_OVERRIDE_CLIENT_UPDATE = 422, // "override-client-update" + TOKEN_REPLACE_CLIENT_NAME = 423, // "replace-client-name" + TOKEN_GENERATED_PREFIX = 424, // "generated-prefix" + TOKEN_TCP = 425, // "tcp" + TOKEN_JSON = 426, // "JSON" + TOKEN_WHEN_PRESENT = 427, // "when-present" + TOKEN_NEVER = 428, // "never" + TOKEN_ALWAYS = 429, // "always" + TOKEN_WHEN_NOT_PRESENT = 430, // "when-not-present" + TOKEN_HOSTNAME_CHAR_SET = 431, // "hostname-char-set" + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 432, // "hostname-char-replacement" + TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 433, // "early-global-reservations-lookup" + TOKEN_IP_RESERVATIONS_UNIQUE = 434, // "ip-reservations-unique" + TOKEN_RESERVATIONS_LOOKUP_FIRST = 435, // "reservations-lookup-first" + TOKEN_LOGGERS = 436, // "loggers" + TOKEN_OUTPUT_OPTIONS = 437, // "output_options" + TOKEN_OUTPUT = 438, // "output" + TOKEN_DEBUGLEVEL = 439, // "debuglevel" + TOKEN_SEVERITY = 440, // "severity" + TOKEN_FLUSH = 441, // "flush" + TOKEN_MAXSIZE = 442, // "maxsize" + TOKEN_MAXVER = 443, // "maxver" + TOKEN_PATTERN = 444, // "pattern" + TOKEN_COMPATIBILITY = 445, // "compatibility" + TOKEN_LENIENT_OPTION_PARSING = 446, // "lenient-option-parsing" + TOKEN_TOPLEVEL_JSON = 447, // TOPLEVEL_JSON + TOKEN_TOPLEVEL_DHCP4 = 448, // TOPLEVEL_DHCP4 + TOKEN_SUB_DHCP4 = 449, // SUB_DHCP4 + TOKEN_SUB_INTERFACES4 = 450, // SUB_INTERFACES4 + TOKEN_SUB_SUBNET4 = 451, // SUB_SUBNET4 + TOKEN_SUB_POOL4 = 452, // SUB_POOL4 + TOKEN_SUB_RESERVATION = 453, // SUB_RESERVATION + TOKEN_SUB_OPTION_DEFS = 454, // SUB_OPTION_DEFS + TOKEN_SUB_OPTION_DEF = 455, // SUB_OPTION_DEF + TOKEN_SUB_OPTION_DATA = 456, // SUB_OPTION_DATA + TOKEN_SUB_HOOKS_LIBRARY = 457, // SUB_HOOKS_LIBRARY + TOKEN_SUB_DHCP_DDNS = 458, // SUB_DHCP_DDNS + TOKEN_SUB_CONFIG_CONTROL = 459, // SUB_CONFIG_CONTROL + TOKEN_STRING = 460, // "constant string" + TOKEN_INTEGER = 461, // "integer" + TOKEN_FLOAT = 462, // "floating point" + TOKEN_BOOLEAN = 463 // "boolean" }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -718,7 +721,7 @@ namespace isc { namespace dhcp { { enum symbol_kind_type { - YYNTOKENS = 206, ///< Number of tokens. + YYNTOKENS = 209, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -769,585 +772,591 @@ namespace isc { namespace dhcp { S_LFC_INTERVAL = 46, // "lfc-interval" S_READONLY = 47, // "readonly" S_CONNECT_TIMEOUT = 48, // "connect-timeout" - S_MAX_RECONNECT_TRIES = 49, // "max-reconnect-tries" - S_RECONNECT_WAIT_TIME = 50, // "reconnect-wait-time" - S_ON_FAIL = 51, // "on-fail" - S_STOP_RETRY_EXIT = 52, // "stop-retry-exit" - S_SERVE_RETRY_EXIT = 53, // "serve-retry-exit" - S_SERVE_RETRY_CONTINUE = 54, // "serve-retry-continue" - S_MAX_ROW_ERRORS = 55, // "max-row-errors" - S_TRUST_ANCHOR = 56, // "trust-anchor" - S_CERT_FILE = 57, // "cert-file" - S_KEY_FILE = 58, // "key-file" - S_CIPHER_LIST = 59, // "cipher-list" - S_VALID_LIFETIME = 60, // "valid-lifetime" - S_MIN_VALID_LIFETIME = 61, // "min-valid-lifetime" - S_MAX_VALID_LIFETIME = 62, // "max-valid-lifetime" - S_RENEW_TIMER = 63, // "renew-timer" - S_REBIND_TIMER = 64, // "rebind-timer" - S_CALCULATE_TEE_TIMES = 65, // "calculate-tee-times" - S_T1_PERCENT = 66, // "t1-percent" - S_T2_PERCENT = 67, // "t2-percent" - S_CACHE_THRESHOLD = 68, // "cache-threshold" - S_CACHE_MAX_AGE = 69, // "cache-max-age" - S_DECLINE_PROBATION_PERIOD = 70, // "decline-probation-period" - S_SERVER_TAG = 71, // "server-tag" - S_STATISTIC_DEFAULT_SAMPLE_COUNT = 72, // "statistic-default-sample-count" - S_STATISTIC_DEFAULT_SAMPLE_AGE = 73, // "statistic-default-sample-age" - S_DDNS_SEND_UPDATES = 74, // "ddns-send-updates" - S_DDNS_OVERRIDE_NO_UPDATE = 75, // "ddns-override-no-update" - S_DDNS_OVERRIDE_CLIENT_UPDATE = 76, // "ddns-override-client-update" - S_DDNS_REPLACE_CLIENT_NAME = 77, // "ddns-replace-client-name" - S_DDNS_GENERATED_PREFIX = 78, // "ddns-generated-prefix" - S_DDNS_QUALIFYING_SUFFIX = 79, // "ddns-qualifying-suffix" - S_DDNS_UPDATE_ON_RENEW = 80, // "ddns-update-on-renew" - S_DDNS_USE_CONFLICT_RESOLUTION = 81, // "ddns-use-conflict-resolution" - S_STORE_EXTENDED_INFO = 82, // "store-extended-info" - S_SUBNET4 = 83, // "subnet4" - S_SUBNET_4O6_INTERFACE = 84, // "4o6-interface" - S_SUBNET_4O6_INTERFACE_ID = 85, // "4o6-interface-id" - S_SUBNET_4O6_SUBNET = 86, // "4o6-subnet" - S_OPTION_DEF = 87, // "option-def" - S_OPTION_DATA = 88, // "option-data" - S_NAME = 89, // "name" - S_DATA = 90, // "data" - S_CODE = 91, // "code" - S_SPACE = 92, // "space" - S_CSV_FORMAT = 93, // "csv-format" - S_ALWAYS_SEND = 94, // "always-send" - S_RECORD_TYPES = 95, // "record-types" - S_ENCAPSULATE = 96, // "encapsulate" - S_ARRAY = 97, // "array" - S_PARKED_PACKET_LIMIT = 98, // "parked-packet-limit" - S_SHARED_NETWORKS = 99, // "shared-networks" - S_POOLS = 100, // "pools" - S_POOL = 101, // "pool" - S_USER_CONTEXT = 102, // "user-context" - S_COMMENT = 103, // "comment" - S_SUBNET = 104, // "subnet" - S_INTERFACE = 105, // "interface" - S_ID = 106, // "id" - S_RESERVATION_MODE = 107, // "reservation-mode" - S_DISABLED = 108, // "disabled" - S_OUT_OF_POOL = 109, // "out-of-pool" - S_GLOBAL = 110, // "global" - S_ALL = 111, // "all" - S_RESERVATIONS_GLOBAL = 112, // "reservations-global" - S_RESERVATIONS_IN_SUBNET = 113, // "reservations-in-subnet" - S_RESERVATIONS_OUT_OF_POOL = 114, // "reservations-out-of-pool" - S_HOST_RESERVATION_IDENTIFIERS = 115, // "host-reservation-identifiers" - S_CLIENT_CLASSES = 116, // "client-classes" - S_REQUIRE_CLIENT_CLASSES = 117, // "require-client-classes" - S_TEST = 118, // "test" - S_ONLY_IF_REQUIRED = 119, // "only-if-required" - S_CLIENT_CLASS = 120, // "client-class" - S_RESERVATIONS = 121, // "reservations" - S_DUID = 122, // "duid" - S_HW_ADDRESS = 123, // "hw-address" - S_CIRCUIT_ID = 124, // "circuit-id" - S_CLIENT_ID = 125, // "client-id" - S_HOSTNAME = 126, // "hostname" - S_FLEX_ID = 127, // "flex-id" - S_RELAY = 128, // "relay" - S_IP_ADDRESS = 129, // "ip-address" - S_IP_ADDRESSES = 130, // "ip-addresses" - S_HOOKS_LIBRARIES = 131, // "hooks-libraries" - S_LIBRARY = 132, // "library" - S_PARAMETERS = 133, // "parameters" - S_EXPIRED_LEASES_PROCESSING = 134, // "expired-leases-processing" - S_RECLAIM_TIMER_WAIT_TIME = 135, // "reclaim-timer-wait-time" - S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 136, // "flush-reclaimed-timer-wait-time" - S_HOLD_RECLAIMED_TIME = 137, // "hold-reclaimed-time" - S_MAX_RECLAIM_LEASES = 138, // "max-reclaim-leases" - S_MAX_RECLAIM_TIME = 139, // "max-reclaim-time" - S_UNWARNED_RECLAIM_CYCLES = 140, // "unwarned-reclaim-cycles" - S_DHCP4O6_PORT = 141, // "dhcp4o6-port" - S_DHCP_MULTI_THREADING = 142, // "multi-threading" - S_ENABLE_MULTI_THREADING = 143, // "enable-multi-threading" - S_THREAD_POOL_SIZE = 144, // "thread-pool-size" - S_PACKET_QUEUE_SIZE = 145, // "packet-queue-size" - S_CONTROL_SOCKET = 146, // "control-socket" - S_SOCKET_TYPE = 147, // "socket-type" - S_SOCKET_NAME = 148, // "socket-name" - S_DHCP_QUEUE_CONTROL = 149, // "dhcp-queue-control" - S_ENABLE_QUEUE = 150, // "enable-queue" - S_QUEUE_TYPE = 151, // "queue-type" - S_CAPACITY = 152, // "capacity" - S_DHCP_DDNS = 153, // "dhcp-ddns" - S_ENABLE_UPDATES = 154, // "enable-updates" - S_QUALIFYING_SUFFIX = 155, // "qualifying-suffix" - S_SERVER_IP = 156, // "server-ip" - S_SERVER_PORT = 157, // "server-port" - S_SENDER_IP = 158, // "sender-ip" - S_SENDER_PORT = 159, // "sender-port" - S_MAX_QUEUE_SIZE = 160, // "max-queue-size" - S_NCR_PROTOCOL = 161, // "ncr-protocol" - S_NCR_FORMAT = 162, // "ncr-format" - S_OVERRIDE_NO_UPDATE = 163, // "override-no-update" - S_OVERRIDE_CLIENT_UPDATE = 164, // "override-client-update" - S_REPLACE_CLIENT_NAME = 165, // "replace-client-name" - S_GENERATED_PREFIX = 166, // "generated-prefix" - S_TCP = 167, // "tcp" - S_JSON = 168, // "JSON" - S_WHEN_PRESENT = 169, // "when-present" - S_NEVER = 170, // "never" - S_ALWAYS = 171, // "always" - S_WHEN_NOT_PRESENT = 172, // "when-not-present" - S_HOSTNAME_CHAR_SET = 173, // "hostname-char-set" - S_HOSTNAME_CHAR_REPLACEMENT = 174, // "hostname-char-replacement" - S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 175, // "early-global-reservations-lookup" - S_IP_RESERVATIONS_UNIQUE = 176, // "ip-reservations-unique" - S_RESERVATIONS_LOOKUP_FIRST = 177, // "reservations-lookup-first" - S_LOGGERS = 178, // "loggers" - S_OUTPUT_OPTIONS = 179, // "output_options" - S_OUTPUT = 180, // "output" - S_DEBUGLEVEL = 181, // "debuglevel" - S_SEVERITY = 182, // "severity" - S_FLUSH = 183, // "flush" - S_MAXSIZE = 184, // "maxsize" - S_MAXVER = 185, // "maxver" - S_PATTERN = 186, // "pattern" - S_COMPATIBILITY = 187, // "compatibility" - S_LENIENT_OPTION_PARSING = 188, // "lenient-option-parsing" - S_TOPLEVEL_JSON = 189, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP4 = 190, // TOPLEVEL_DHCP4 - S_SUB_DHCP4 = 191, // SUB_DHCP4 - S_SUB_INTERFACES4 = 192, // SUB_INTERFACES4 - S_SUB_SUBNET4 = 193, // SUB_SUBNET4 - S_SUB_POOL4 = 194, // SUB_POOL4 - S_SUB_RESERVATION = 195, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 196, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 197, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 198, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 199, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 200, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 201, // SUB_CONFIG_CONTROL - S_STRING = 202, // "constant string" - S_INTEGER = 203, // "integer" - S_FLOAT = 204, // "floating point" - S_BOOLEAN = 205, // "boolean" - S_YYACCEPT = 206, // $accept - S_start = 207, // start - S_208_1 = 208, // $@1 - S_209_2 = 209, // $@2 - S_210_3 = 210, // $@3 - S_211_4 = 211, // $@4 - S_212_5 = 212, // $@5 - S_213_6 = 213, // $@6 - S_214_7 = 214, // $@7 - S_215_8 = 215, // $@8 - S_216_9 = 216, // $@9 - S_217_10 = 217, // $@10 - S_218_11 = 218, // $@11 - S_219_12 = 219, // $@12 - S_220_13 = 220, // $@13 - S_value = 221, // value - S_sub_json = 222, // sub_json - S_map2 = 223, // map2 - S_224_14 = 224, // $@14 - S_map_value = 225, // map_value - S_map_content = 226, // map_content - S_not_empty_map = 227, // not_empty_map - S_list_generic = 228, // list_generic - S_229_15 = 229, // $@15 - S_list_content = 230, // list_content - S_not_empty_list = 231, // not_empty_list - S_list_strings = 232, // list_strings - S_233_16 = 233, // $@16 - S_list_strings_content = 234, // list_strings_content - S_not_empty_list_strings = 235, // not_empty_list_strings - S_unknown_map_entry = 236, // unknown_map_entry - S_syntax_map = 237, // syntax_map - S_238_17 = 238, // $@17 - S_global_object = 239, // global_object - S_240_18 = 240, // $@18 - S_global_object_comma = 241, // global_object_comma - S_sub_dhcp4 = 242, // sub_dhcp4 - S_243_19 = 243, // $@19 - S_global_params = 244, // global_params - S_global_param = 245, // global_param - S_valid_lifetime = 246, // valid_lifetime - S_min_valid_lifetime = 247, // min_valid_lifetime - S_max_valid_lifetime = 248, // max_valid_lifetime - S_renew_timer = 249, // renew_timer - S_rebind_timer = 250, // rebind_timer - S_calculate_tee_times = 251, // calculate_tee_times - S_t1_percent = 252, // t1_percent - S_t2_percent = 253, // t2_percent - S_cache_threshold = 254, // cache_threshold - S_cache_max_age = 255, // cache_max_age - S_decline_probation_period = 256, // decline_probation_period - S_server_tag = 257, // server_tag - S_258_20 = 258, // $@20 - S_parked_packet_limit = 259, // parked_packet_limit - S_echo_client_id = 260, // echo_client_id - S_match_client_id = 261, // match_client_id - S_authoritative = 262, // authoritative - S_ddns_send_updates = 263, // ddns_send_updates - S_ddns_override_no_update = 264, // ddns_override_no_update - S_ddns_override_client_update = 265, // ddns_override_client_update - S_ddns_replace_client_name = 266, // ddns_replace_client_name - S_267_21 = 267, // $@21 - S_ddns_replace_client_name_value = 268, // ddns_replace_client_name_value - S_ddns_generated_prefix = 269, // ddns_generated_prefix - S_270_22 = 270, // $@22 - S_ddns_qualifying_suffix = 271, // ddns_qualifying_suffix - S_272_23 = 272, // $@23 - S_ddns_update_on_renew = 273, // ddns_update_on_renew - S_ddns_use_conflict_resolution = 274, // ddns_use_conflict_resolution - S_hostname_char_set = 275, // hostname_char_set - S_276_24 = 276, // $@24 - S_hostname_char_replacement = 277, // hostname_char_replacement - S_278_25 = 278, // $@25 - S_store_extended_info = 279, // store_extended_info - S_statistic_default_sample_count = 280, // statistic_default_sample_count - S_statistic_default_sample_age = 281, // statistic_default_sample_age - S_early_global_reservations_lookup = 282, // early_global_reservations_lookup - S_ip_reservations_unique = 283, // ip_reservations_unique - S_reservations_lookup_first = 284, // reservations_lookup_first - S_interfaces_config = 285, // interfaces_config - S_286_26 = 286, // $@26 - S_interfaces_config_params = 287, // interfaces_config_params - S_interfaces_config_param = 288, // interfaces_config_param - S_sub_interfaces4 = 289, // sub_interfaces4 - S_290_27 = 290, // $@27 - S_interfaces_list = 291, // interfaces_list - S_292_28 = 292, // $@28 - S_dhcp_socket_type = 293, // dhcp_socket_type - S_294_29 = 294, // $@29 - S_socket_type = 295, // socket_type - S_outbound_interface = 296, // outbound_interface - S_297_30 = 297, // $@30 - S_outbound_interface_value = 298, // outbound_interface_value - S_re_detect = 299, // re_detect - S_service_sockets_require_all = 300, // service_sockets_require_all - S_service_sockets_retry_wait_time = 301, // service_sockets_retry_wait_time - S_service_sockets_max_retries = 302, // service_sockets_max_retries - S_lease_database = 303, // lease_database - S_304_31 = 304, // $@31 - S_sanity_checks = 305, // sanity_checks - S_306_32 = 306, // $@32 - S_sanity_checks_params = 307, // sanity_checks_params - S_sanity_checks_param = 308, // sanity_checks_param - S_lease_checks = 309, // lease_checks - S_310_33 = 310, // $@33 - S_hosts_database = 311, // hosts_database - S_312_34 = 312, // $@34 - S_hosts_databases = 313, // hosts_databases - S_314_35 = 314, // $@35 - S_database_list = 315, // database_list - S_not_empty_database_list = 316, // not_empty_database_list - S_database = 317, // database - S_318_36 = 318, // $@36 - S_database_map_params = 319, // database_map_params - S_database_map_param = 320, // database_map_param - S_database_type = 321, // database_type - S_322_37 = 322, // $@37 - S_db_type = 323, // db_type - S_user = 324, // user - S_325_38 = 325, // $@38 - S_password = 326, // password - S_327_39 = 327, // $@39 - S_host = 328, // host - S_329_40 = 329, // $@40 - S_port = 330, // port - S_name = 331, // name - S_332_41 = 332, // $@41 - S_persist = 333, // persist - S_lfc_interval = 334, // lfc_interval - S_readonly = 335, // readonly - S_connect_timeout = 336, // connect_timeout - S_max_reconnect_tries = 337, // max_reconnect_tries - S_reconnect_wait_time = 338, // reconnect_wait_time - S_on_fail = 339, // on_fail - S_340_42 = 340, // $@42 - S_on_fail_mode = 341, // on_fail_mode - S_max_row_errors = 342, // max_row_errors - S_trust_anchor = 343, // trust_anchor - S_344_43 = 344, // $@43 - S_cert_file = 345, // cert_file - S_346_44 = 346, // $@44 - S_key_file = 347, // key_file - S_348_45 = 348, // $@45 - S_cipher_list = 349, // cipher_list - S_350_46 = 350, // $@46 - S_host_reservation_identifiers = 351, // host_reservation_identifiers - S_352_47 = 352, // $@47 - S_host_reservation_identifiers_list = 353, // host_reservation_identifiers_list - S_host_reservation_identifier = 354, // host_reservation_identifier - S_duid_id = 355, // duid_id - S_hw_address_id = 356, // hw_address_id - S_circuit_id = 357, // circuit_id - S_client_id = 358, // client_id - S_flex_id = 359, // flex_id - S_dhcp_multi_threading = 360, // dhcp_multi_threading - S_361_48 = 361, // $@48 - S_multi_threading_params = 362, // multi_threading_params - S_multi_threading_param = 363, // multi_threading_param - S_enable_multi_threading = 364, // enable_multi_threading - S_thread_pool_size = 365, // thread_pool_size - S_packet_queue_size = 366, // packet_queue_size - S_hooks_libraries = 367, // hooks_libraries - S_368_49 = 368, // $@49 - S_hooks_libraries_list = 369, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 370, // not_empty_hooks_libraries_list - S_hooks_library = 371, // hooks_library - S_372_50 = 372, // $@50 - S_sub_hooks_library = 373, // sub_hooks_library - S_374_51 = 374, // $@51 - S_hooks_params = 375, // hooks_params - S_hooks_param = 376, // hooks_param - S_library = 377, // library - S_378_52 = 378, // $@52 - S_parameters = 379, // parameters - S_380_53 = 380, // $@53 - S_expired_leases_processing = 381, // expired_leases_processing - S_382_54 = 382, // $@54 - S_expired_leases_params = 383, // expired_leases_params - S_expired_leases_param = 384, // expired_leases_param - S_reclaim_timer_wait_time = 385, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 386, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 387, // hold_reclaimed_time - S_max_reclaim_leases = 388, // max_reclaim_leases - S_max_reclaim_time = 389, // max_reclaim_time - S_unwarned_reclaim_cycles = 390, // unwarned_reclaim_cycles - S_subnet4_list = 391, // subnet4_list - S_392_55 = 392, // $@55 - S_subnet4_list_content = 393, // subnet4_list_content - S_not_empty_subnet4_list = 394, // not_empty_subnet4_list - S_subnet4 = 395, // subnet4 - S_396_56 = 396, // $@56 - S_sub_subnet4 = 397, // sub_subnet4 - S_398_57 = 398, // $@57 - S_subnet4_params = 399, // subnet4_params - S_subnet4_param = 400, // subnet4_param - S_subnet = 401, // subnet - S_402_58 = 402, // $@58 - S_subnet_4o6_interface = 403, // subnet_4o6_interface - S_404_59 = 404, // $@59 - S_subnet_4o6_interface_id = 405, // subnet_4o6_interface_id - S_406_60 = 406, // $@60 - S_subnet_4o6_subnet = 407, // subnet_4o6_subnet - S_408_61 = 408, // $@61 - S_interface = 409, // interface - S_410_62 = 410, // $@62 - S_client_class = 411, // client_class - S_412_63 = 412, // $@63 - S_require_client_classes = 413, // require_client_classes - S_414_64 = 414, // $@64 - S_reservations_global = 415, // reservations_global - S_reservations_in_subnet = 416, // reservations_in_subnet - S_reservations_out_of_pool = 417, // reservations_out_of_pool - S_reservation_mode = 418, // reservation_mode - S_419_65 = 419, // $@65 - S_hr_mode = 420, // hr_mode - S_id = 421, // id - S_shared_networks = 422, // shared_networks - S_423_66 = 423, // $@66 - S_shared_networks_content = 424, // shared_networks_content - S_shared_networks_list = 425, // shared_networks_list - S_shared_network = 426, // shared_network - S_427_67 = 427, // $@67 - S_shared_network_params = 428, // shared_network_params - S_shared_network_param = 429, // shared_network_param - S_option_def_list = 430, // option_def_list - S_431_68 = 431, // $@68 - S_sub_option_def_list = 432, // sub_option_def_list - S_433_69 = 433, // $@69 - S_option_def_list_content = 434, // option_def_list_content - S_not_empty_option_def_list = 435, // not_empty_option_def_list - S_option_def_entry = 436, // option_def_entry - S_437_70 = 437, // $@70 - S_sub_option_def = 438, // sub_option_def - S_439_71 = 439, // $@71 - S_option_def_params = 440, // option_def_params - S_not_empty_option_def_params = 441, // not_empty_option_def_params - S_option_def_param = 442, // option_def_param - S_option_def_name = 443, // option_def_name - S_code = 444, // code - S_option_def_code = 445, // option_def_code - S_option_def_type = 446, // option_def_type - S_447_72 = 447, // $@72 - S_option_def_record_types = 448, // option_def_record_types - S_449_73 = 449, // $@73 - S_space = 450, // space - S_451_74 = 451, // $@74 - S_option_def_space = 452, // option_def_space - S_option_def_encapsulate = 453, // option_def_encapsulate - S_454_75 = 454, // $@75 - S_option_def_array = 455, // option_def_array - S_option_data_list = 456, // option_data_list - S_457_76 = 457, // $@76 - S_option_data_list_content = 458, // option_data_list_content - S_not_empty_option_data_list = 459, // not_empty_option_data_list - S_option_data_entry = 460, // option_data_entry - S_461_77 = 461, // $@77 - S_sub_option_data = 462, // sub_option_data - S_463_78 = 463, // $@78 - S_option_data_params = 464, // option_data_params - S_not_empty_option_data_params = 465, // not_empty_option_data_params - S_option_data_param = 466, // option_data_param - S_option_data_name = 467, // option_data_name - S_option_data_data = 468, // option_data_data - S_469_79 = 469, // $@79 - S_option_data_code = 470, // option_data_code - S_option_data_space = 471, // option_data_space - S_option_data_csv_format = 472, // option_data_csv_format - S_option_data_always_send = 473, // option_data_always_send - S_pools_list = 474, // pools_list - S_475_80 = 475, // $@80 - S_pools_list_content = 476, // pools_list_content - S_not_empty_pools_list = 477, // not_empty_pools_list - S_pool_list_entry = 478, // pool_list_entry - S_479_81 = 479, // $@81 - S_sub_pool4 = 480, // sub_pool4 - S_481_82 = 481, // $@82 - S_pool_params = 482, // pool_params - S_pool_param = 483, // pool_param - S_pool_entry = 484, // pool_entry - S_485_83 = 485, // $@83 - S_user_context = 486, // user_context - S_487_84 = 487, // $@84 - S_comment = 488, // comment - S_489_85 = 489, // $@85 - S_reservations = 490, // reservations - S_491_86 = 491, // $@86 - S_reservations_list = 492, // reservations_list - S_not_empty_reservations_list = 493, // not_empty_reservations_list - S_reservation = 494, // reservation - S_495_87 = 495, // $@87 - S_sub_reservation = 496, // sub_reservation - S_497_88 = 497, // $@88 - S_reservation_params = 498, // reservation_params - S_not_empty_reservation_params = 499, // not_empty_reservation_params - S_reservation_param = 500, // reservation_param - S_next_server = 501, // next_server - S_502_89 = 502, // $@89 - S_server_hostname = 503, // server_hostname - S_504_90 = 504, // $@90 - S_boot_file_name = 505, // boot_file_name - S_506_91 = 506, // $@91 - S_ip_address = 507, // ip_address - S_508_92 = 508, // $@92 - S_ip_addresses = 509, // ip_addresses - S_510_93 = 510, // $@93 - S_duid = 511, // duid - S_512_94 = 512, // $@94 - S_hw_address = 513, // hw_address - S_514_95 = 514, // $@95 - S_client_id_value = 515, // client_id_value - S_516_96 = 516, // $@96 - S_circuit_id_value = 517, // circuit_id_value - S_518_97 = 518, // $@97 - S_flex_id_value = 519, // flex_id_value - S_520_98 = 520, // $@98 - S_hostname = 521, // hostname - S_522_99 = 522, // $@99 - S_reservation_client_classes = 523, // reservation_client_classes - S_524_100 = 524, // $@100 - S_relay = 525, // relay - S_526_101 = 526, // $@101 - S_relay_map = 527, // relay_map - S_client_classes = 528, // client_classes - S_529_102 = 529, // $@102 - S_client_classes_list = 530, // client_classes_list - S_client_class_entry = 531, // client_class_entry - S_532_103 = 532, // $@103 - S_client_class_params = 533, // client_class_params - S_not_empty_client_class_params = 534, // not_empty_client_class_params - S_client_class_param = 535, // client_class_param - S_client_class_name = 536, // client_class_name - S_client_class_test = 537, // client_class_test - S_538_104 = 538, // $@104 - S_only_if_required = 539, // only_if_required - S_dhcp4o6_port = 540, // dhcp4o6_port - S_control_socket = 541, // control_socket - S_542_105 = 542, // $@105 - S_control_socket_params = 543, // control_socket_params - S_control_socket_param = 544, // control_socket_param - S_control_socket_type = 545, // control_socket_type - S_546_106 = 546, // $@106 - S_control_socket_name = 547, // control_socket_name - S_548_107 = 548, // $@107 - S_dhcp_queue_control = 549, // dhcp_queue_control - S_550_108 = 550, // $@108 - S_queue_control_params = 551, // queue_control_params - S_queue_control_param = 552, // queue_control_param - S_enable_queue = 553, // enable_queue - S_queue_type = 554, // queue_type - S_555_109 = 555, // $@109 - S_capacity = 556, // capacity - S_arbitrary_map_entry = 557, // arbitrary_map_entry - S_558_110 = 558, // $@110 - S_dhcp_ddns = 559, // dhcp_ddns - S_560_111 = 560, // $@111 - S_sub_dhcp_ddns = 561, // sub_dhcp_ddns - S_562_112 = 562, // $@112 - S_dhcp_ddns_params = 563, // dhcp_ddns_params - S_dhcp_ddns_param = 564, // dhcp_ddns_param - S_enable_updates = 565, // enable_updates - S_server_ip = 566, // server_ip - S_567_113 = 567, // $@113 - S_server_port = 568, // server_port - S_sender_ip = 569, // sender_ip - S_570_114 = 570, // $@114 - S_sender_port = 571, // sender_port - S_max_queue_size = 572, // max_queue_size - S_ncr_protocol = 573, // ncr_protocol - S_574_115 = 574, // $@115 - S_ncr_protocol_value = 575, // ncr_protocol_value - S_ncr_format = 576, // ncr_format - S_577_116 = 577, // $@116 - S_dep_qualifying_suffix = 578, // dep_qualifying_suffix - S_579_117 = 579, // $@117 - S_dep_override_no_update = 580, // dep_override_no_update - S_dep_override_client_update = 581, // dep_override_client_update - S_dep_replace_client_name = 582, // dep_replace_client_name - S_583_118 = 583, // $@118 - S_dep_generated_prefix = 584, // dep_generated_prefix - S_585_119 = 585, // $@119 - S_dep_hostname_char_set = 586, // dep_hostname_char_set - S_587_120 = 587, // $@120 - S_dep_hostname_char_replacement = 588, // dep_hostname_char_replacement - S_589_121 = 589, // $@121 - S_config_control = 590, // config_control - S_591_122 = 591, // $@122 - S_sub_config_control = 592, // sub_config_control - S_593_123 = 593, // $@123 - S_config_control_params = 594, // config_control_params - S_config_control_param = 595, // config_control_param - S_config_databases = 596, // config_databases - S_597_124 = 597, // $@124 - S_config_fetch_wait_time = 598, // config_fetch_wait_time - S_loggers = 599, // loggers - S_600_125 = 600, // $@125 - S_loggers_entries = 601, // loggers_entries - S_logger_entry = 602, // logger_entry - S_603_126 = 603, // $@126 - S_logger_params = 604, // logger_params - S_logger_param = 605, // logger_param - S_debuglevel = 606, // debuglevel - S_severity = 607, // severity - S_608_127 = 608, // $@127 - S_output_options_list = 609, // output_options_list - S_610_128 = 610, // $@128 - S_output_options_list_content = 611, // output_options_list_content - S_output_entry = 612, // output_entry - S_613_129 = 613, // $@129 - S_output_params_list = 614, // output_params_list - S_output_params = 615, // output_params - S_output = 616, // output - S_617_130 = 617, // $@130 - S_flush = 618, // flush - S_maxsize = 619, // maxsize - S_maxver = 620, // maxver - S_pattern = 621, // pattern - S_622_131 = 622, // $@131 - S_compatibility = 623, // compatibility - S_624_132 = 624, // $@132 - S_compatibility_params = 625, // compatibility_params - S_compatibility_param = 626, // compatibility_param - S_lenient_option_parsing = 627 // lenient_option_parsing + S_READ_TIMEOUT = 49, // "read-timeout" + S_WRITE_TIMEOUT = 50, // "write-timeout" + S_TCP_USER_TIMEOUT = 51, // "tcp-user-timeout" + S_MAX_RECONNECT_TRIES = 52, // "max-reconnect-tries" + S_RECONNECT_WAIT_TIME = 53, // "reconnect-wait-time" + S_ON_FAIL = 54, // "on-fail" + S_STOP_RETRY_EXIT = 55, // "stop-retry-exit" + S_SERVE_RETRY_EXIT = 56, // "serve-retry-exit" + S_SERVE_RETRY_CONTINUE = 57, // "serve-retry-continue" + S_MAX_ROW_ERRORS = 58, // "max-row-errors" + S_TRUST_ANCHOR = 59, // "trust-anchor" + S_CERT_FILE = 60, // "cert-file" + S_KEY_FILE = 61, // "key-file" + S_CIPHER_LIST = 62, // "cipher-list" + S_VALID_LIFETIME = 63, // "valid-lifetime" + S_MIN_VALID_LIFETIME = 64, // "min-valid-lifetime" + S_MAX_VALID_LIFETIME = 65, // "max-valid-lifetime" + S_RENEW_TIMER = 66, // "renew-timer" + S_REBIND_TIMER = 67, // "rebind-timer" + S_CALCULATE_TEE_TIMES = 68, // "calculate-tee-times" + S_T1_PERCENT = 69, // "t1-percent" + S_T2_PERCENT = 70, // "t2-percent" + S_CACHE_THRESHOLD = 71, // "cache-threshold" + S_CACHE_MAX_AGE = 72, // "cache-max-age" + S_DECLINE_PROBATION_PERIOD = 73, // "decline-probation-period" + S_SERVER_TAG = 74, // "server-tag" + S_STATISTIC_DEFAULT_SAMPLE_COUNT = 75, // "statistic-default-sample-count" + S_STATISTIC_DEFAULT_SAMPLE_AGE = 76, // "statistic-default-sample-age" + S_DDNS_SEND_UPDATES = 77, // "ddns-send-updates" + S_DDNS_OVERRIDE_NO_UPDATE = 78, // "ddns-override-no-update" + S_DDNS_OVERRIDE_CLIENT_UPDATE = 79, // "ddns-override-client-update" + S_DDNS_REPLACE_CLIENT_NAME = 80, // "ddns-replace-client-name" + S_DDNS_GENERATED_PREFIX = 81, // "ddns-generated-prefix" + S_DDNS_QUALIFYING_SUFFIX = 82, // "ddns-qualifying-suffix" + S_DDNS_UPDATE_ON_RENEW = 83, // "ddns-update-on-renew" + S_DDNS_USE_CONFLICT_RESOLUTION = 84, // "ddns-use-conflict-resolution" + S_STORE_EXTENDED_INFO = 85, // "store-extended-info" + S_SUBNET4 = 86, // "subnet4" + S_SUBNET_4O6_INTERFACE = 87, // "4o6-interface" + S_SUBNET_4O6_INTERFACE_ID = 88, // "4o6-interface-id" + S_SUBNET_4O6_SUBNET = 89, // "4o6-subnet" + S_OPTION_DEF = 90, // "option-def" + S_OPTION_DATA = 91, // "option-data" + S_NAME = 92, // "name" + S_DATA = 93, // "data" + S_CODE = 94, // "code" + S_SPACE = 95, // "space" + S_CSV_FORMAT = 96, // "csv-format" + S_ALWAYS_SEND = 97, // "always-send" + S_RECORD_TYPES = 98, // "record-types" + S_ENCAPSULATE = 99, // "encapsulate" + S_ARRAY = 100, // "array" + S_PARKED_PACKET_LIMIT = 101, // "parked-packet-limit" + S_SHARED_NETWORKS = 102, // "shared-networks" + S_POOLS = 103, // "pools" + S_POOL = 104, // "pool" + S_USER_CONTEXT = 105, // "user-context" + S_COMMENT = 106, // "comment" + S_SUBNET = 107, // "subnet" + S_INTERFACE = 108, // "interface" + S_ID = 109, // "id" + S_RESERVATION_MODE = 110, // "reservation-mode" + S_DISABLED = 111, // "disabled" + S_OUT_OF_POOL = 112, // "out-of-pool" + S_GLOBAL = 113, // "global" + S_ALL = 114, // "all" + S_RESERVATIONS_GLOBAL = 115, // "reservations-global" + S_RESERVATIONS_IN_SUBNET = 116, // "reservations-in-subnet" + S_RESERVATIONS_OUT_OF_POOL = 117, // "reservations-out-of-pool" + S_HOST_RESERVATION_IDENTIFIERS = 118, // "host-reservation-identifiers" + S_CLIENT_CLASSES = 119, // "client-classes" + S_REQUIRE_CLIENT_CLASSES = 120, // "require-client-classes" + S_TEST = 121, // "test" + S_ONLY_IF_REQUIRED = 122, // "only-if-required" + S_CLIENT_CLASS = 123, // "client-class" + S_RESERVATIONS = 124, // "reservations" + S_DUID = 125, // "duid" + S_HW_ADDRESS = 126, // "hw-address" + S_CIRCUIT_ID = 127, // "circuit-id" + S_CLIENT_ID = 128, // "client-id" + S_HOSTNAME = 129, // "hostname" + S_FLEX_ID = 130, // "flex-id" + S_RELAY = 131, // "relay" + S_IP_ADDRESS = 132, // "ip-address" + S_IP_ADDRESSES = 133, // "ip-addresses" + S_HOOKS_LIBRARIES = 134, // "hooks-libraries" + S_LIBRARY = 135, // "library" + S_PARAMETERS = 136, // "parameters" + S_EXPIRED_LEASES_PROCESSING = 137, // "expired-leases-processing" + S_RECLAIM_TIMER_WAIT_TIME = 138, // "reclaim-timer-wait-time" + S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 139, // "flush-reclaimed-timer-wait-time" + S_HOLD_RECLAIMED_TIME = 140, // "hold-reclaimed-time" + S_MAX_RECLAIM_LEASES = 141, // "max-reclaim-leases" + S_MAX_RECLAIM_TIME = 142, // "max-reclaim-time" + S_UNWARNED_RECLAIM_CYCLES = 143, // "unwarned-reclaim-cycles" + S_DHCP4O6_PORT = 144, // "dhcp4o6-port" + S_DHCP_MULTI_THREADING = 145, // "multi-threading" + S_ENABLE_MULTI_THREADING = 146, // "enable-multi-threading" + S_THREAD_POOL_SIZE = 147, // "thread-pool-size" + S_PACKET_QUEUE_SIZE = 148, // "packet-queue-size" + S_CONTROL_SOCKET = 149, // "control-socket" + S_SOCKET_TYPE = 150, // "socket-type" + S_SOCKET_NAME = 151, // "socket-name" + S_DHCP_QUEUE_CONTROL = 152, // "dhcp-queue-control" + S_ENABLE_QUEUE = 153, // "enable-queue" + S_QUEUE_TYPE = 154, // "queue-type" + S_CAPACITY = 155, // "capacity" + S_DHCP_DDNS = 156, // "dhcp-ddns" + S_ENABLE_UPDATES = 157, // "enable-updates" + S_QUALIFYING_SUFFIX = 158, // "qualifying-suffix" + S_SERVER_IP = 159, // "server-ip" + S_SERVER_PORT = 160, // "server-port" + S_SENDER_IP = 161, // "sender-ip" + S_SENDER_PORT = 162, // "sender-port" + S_MAX_QUEUE_SIZE = 163, // "max-queue-size" + S_NCR_PROTOCOL = 164, // "ncr-protocol" + S_NCR_FORMAT = 165, // "ncr-format" + S_OVERRIDE_NO_UPDATE = 166, // "override-no-update" + S_OVERRIDE_CLIENT_UPDATE = 167, // "override-client-update" + S_REPLACE_CLIENT_NAME = 168, // "replace-client-name" + S_GENERATED_PREFIX = 169, // "generated-prefix" + S_TCP = 170, // "tcp" + S_JSON = 171, // "JSON" + S_WHEN_PRESENT = 172, // "when-present" + S_NEVER = 173, // "never" + S_ALWAYS = 174, // "always" + S_WHEN_NOT_PRESENT = 175, // "when-not-present" + S_HOSTNAME_CHAR_SET = 176, // "hostname-char-set" + S_HOSTNAME_CHAR_REPLACEMENT = 177, // "hostname-char-replacement" + S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 178, // "early-global-reservations-lookup" + S_IP_RESERVATIONS_UNIQUE = 179, // "ip-reservations-unique" + S_RESERVATIONS_LOOKUP_FIRST = 180, // "reservations-lookup-first" + S_LOGGERS = 181, // "loggers" + S_OUTPUT_OPTIONS = 182, // "output_options" + S_OUTPUT = 183, // "output" + S_DEBUGLEVEL = 184, // "debuglevel" + S_SEVERITY = 185, // "severity" + S_FLUSH = 186, // "flush" + S_MAXSIZE = 187, // "maxsize" + S_MAXVER = 188, // "maxver" + S_PATTERN = 189, // "pattern" + S_COMPATIBILITY = 190, // "compatibility" + S_LENIENT_OPTION_PARSING = 191, // "lenient-option-parsing" + S_TOPLEVEL_JSON = 192, // TOPLEVEL_JSON + S_TOPLEVEL_DHCP4 = 193, // TOPLEVEL_DHCP4 + S_SUB_DHCP4 = 194, // SUB_DHCP4 + S_SUB_INTERFACES4 = 195, // SUB_INTERFACES4 + S_SUB_SUBNET4 = 196, // SUB_SUBNET4 + S_SUB_POOL4 = 197, // SUB_POOL4 + S_SUB_RESERVATION = 198, // SUB_RESERVATION + S_SUB_OPTION_DEFS = 199, // SUB_OPTION_DEFS + S_SUB_OPTION_DEF = 200, // SUB_OPTION_DEF + S_SUB_OPTION_DATA = 201, // SUB_OPTION_DATA + S_SUB_HOOKS_LIBRARY = 202, // SUB_HOOKS_LIBRARY + S_SUB_DHCP_DDNS = 203, // SUB_DHCP_DDNS + S_SUB_CONFIG_CONTROL = 204, // SUB_CONFIG_CONTROL + S_STRING = 205, // "constant string" + S_INTEGER = 206, // "integer" + S_FLOAT = 207, // "floating point" + S_BOOLEAN = 208, // "boolean" + S_YYACCEPT = 209, // $accept + S_start = 210, // start + S_211_1 = 211, // $@1 + S_212_2 = 212, // $@2 + S_213_3 = 213, // $@3 + S_214_4 = 214, // $@4 + S_215_5 = 215, // $@5 + S_216_6 = 216, // $@6 + S_217_7 = 217, // $@7 + S_218_8 = 218, // $@8 + S_219_9 = 219, // $@9 + S_220_10 = 220, // $@10 + S_221_11 = 221, // $@11 + S_222_12 = 222, // $@12 + S_223_13 = 223, // $@13 + S_value = 224, // value + S_sub_json = 225, // sub_json + S_map2 = 226, // map2 + S_227_14 = 227, // $@14 + S_map_value = 228, // map_value + S_map_content = 229, // map_content + S_not_empty_map = 230, // not_empty_map + S_list_generic = 231, // list_generic + S_232_15 = 232, // $@15 + S_list_content = 233, // list_content + S_not_empty_list = 234, // not_empty_list + S_list_strings = 235, // list_strings + S_236_16 = 236, // $@16 + S_list_strings_content = 237, // list_strings_content + S_not_empty_list_strings = 238, // not_empty_list_strings + S_unknown_map_entry = 239, // unknown_map_entry + S_syntax_map = 240, // syntax_map + S_241_17 = 241, // $@17 + S_global_object = 242, // global_object + S_243_18 = 243, // $@18 + S_global_object_comma = 244, // global_object_comma + S_sub_dhcp4 = 245, // sub_dhcp4 + S_246_19 = 246, // $@19 + S_global_params = 247, // global_params + S_global_param = 248, // global_param + S_valid_lifetime = 249, // valid_lifetime + S_min_valid_lifetime = 250, // min_valid_lifetime + S_max_valid_lifetime = 251, // max_valid_lifetime + S_renew_timer = 252, // renew_timer + S_rebind_timer = 253, // rebind_timer + S_calculate_tee_times = 254, // calculate_tee_times + S_t1_percent = 255, // t1_percent + S_t2_percent = 256, // t2_percent + S_cache_threshold = 257, // cache_threshold + S_cache_max_age = 258, // cache_max_age + S_decline_probation_period = 259, // decline_probation_period + S_server_tag = 260, // server_tag + S_261_20 = 261, // $@20 + S_parked_packet_limit = 262, // parked_packet_limit + S_echo_client_id = 263, // echo_client_id + S_match_client_id = 264, // match_client_id + S_authoritative = 265, // authoritative + S_ddns_send_updates = 266, // ddns_send_updates + S_ddns_override_no_update = 267, // ddns_override_no_update + S_ddns_override_client_update = 268, // ddns_override_client_update + S_ddns_replace_client_name = 269, // ddns_replace_client_name + S_270_21 = 270, // $@21 + S_ddns_replace_client_name_value = 271, // ddns_replace_client_name_value + S_ddns_generated_prefix = 272, // ddns_generated_prefix + S_273_22 = 273, // $@22 + S_ddns_qualifying_suffix = 274, // ddns_qualifying_suffix + S_275_23 = 275, // $@23 + S_ddns_update_on_renew = 276, // ddns_update_on_renew + S_ddns_use_conflict_resolution = 277, // ddns_use_conflict_resolution + S_hostname_char_set = 278, // hostname_char_set + S_279_24 = 279, // $@24 + S_hostname_char_replacement = 280, // hostname_char_replacement + S_281_25 = 281, // $@25 + S_store_extended_info = 282, // store_extended_info + S_statistic_default_sample_count = 283, // statistic_default_sample_count + S_statistic_default_sample_age = 284, // statistic_default_sample_age + S_early_global_reservations_lookup = 285, // early_global_reservations_lookup + S_ip_reservations_unique = 286, // ip_reservations_unique + S_reservations_lookup_first = 287, // reservations_lookup_first + S_interfaces_config = 288, // interfaces_config + S_289_26 = 289, // $@26 + S_interfaces_config_params = 290, // interfaces_config_params + S_interfaces_config_param = 291, // interfaces_config_param + S_sub_interfaces4 = 292, // sub_interfaces4 + S_293_27 = 293, // $@27 + S_interfaces_list = 294, // interfaces_list + S_295_28 = 295, // $@28 + S_dhcp_socket_type = 296, // dhcp_socket_type + S_297_29 = 297, // $@29 + S_socket_type = 298, // socket_type + S_outbound_interface = 299, // outbound_interface + S_300_30 = 300, // $@30 + S_outbound_interface_value = 301, // outbound_interface_value + S_re_detect = 302, // re_detect + S_service_sockets_require_all = 303, // service_sockets_require_all + S_service_sockets_retry_wait_time = 304, // service_sockets_retry_wait_time + S_service_sockets_max_retries = 305, // service_sockets_max_retries + S_lease_database = 306, // lease_database + S_307_31 = 307, // $@31 + S_sanity_checks = 308, // sanity_checks + S_309_32 = 309, // $@32 + S_sanity_checks_params = 310, // sanity_checks_params + S_sanity_checks_param = 311, // sanity_checks_param + S_lease_checks = 312, // lease_checks + S_313_33 = 313, // $@33 + S_hosts_database = 314, // hosts_database + S_315_34 = 315, // $@34 + S_hosts_databases = 316, // hosts_databases + S_317_35 = 317, // $@35 + S_database_list = 318, // database_list + S_not_empty_database_list = 319, // not_empty_database_list + S_database = 320, // database + S_321_36 = 321, // $@36 + S_database_map_params = 322, // database_map_params + S_database_map_param = 323, // database_map_param + S_database_type = 324, // database_type + S_325_37 = 325, // $@37 + S_db_type = 326, // db_type + S_user = 327, // user + S_328_38 = 328, // $@38 + S_password = 329, // password + S_330_39 = 330, // $@39 + S_host = 331, // host + S_332_40 = 332, // $@40 + S_port = 333, // port + S_name = 334, // name + S_335_41 = 335, // $@41 + S_persist = 336, // persist + S_lfc_interval = 337, // lfc_interval + S_readonly = 338, // readonly + S_connect_timeout = 339, // connect_timeout + S_read_timeout = 340, // read_timeout + S_write_timeout = 341, // write_timeout + S_tcp_user_timeout = 342, // tcp_user_timeout + S_max_reconnect_tries = 343, // max_reconnect_tries + S_reconnect_wait_time = 344, // reconnect_wait_time + S_on_fail = 345, // on_fail + S_346_42 = 346, // $@42 + S_on_fail_mode = 347, // on_fail_mode + S_max_row_errors = 348, // max_row_errors + S_trust_anchor = 349, // trust_anchor + S_350_43 = 350, // $@43 + S_cert_file = 351, // cert_file + S_352_44 = 352, // $@44 + S_key_file = 353, // key_file + S_354_45 = 354, // $@45 + S_cipher_list = 355, // cipher_list + S_356_46 = 356, // $@46 + S_host_reservation_identifiers = 357, // host_reservation_identifiers + S_358_47 = 358, // $@47 + S_host_reservation_identifiers_list = 359, // host_reservation_identifiers_list + S_host_reservation_identifier = 360, // host_reservation_identifier + S_duid_id = 361, // duid_id + S_hw_address_id = 362, // hw_address_id + S_circuit_id = 363, // circuit_id + S_client_id = 364, // client_id + S_flex_id = 365, // flex_id + S_dhcp_multi_threading = 366, // dhcp_multi_threading + S_367_48 = 367, // $@48 + S_multi_threading_params = 368, // multi_threading_params + S_multi_threading_param = 369, // multi_threading_param + S_enable_multi_threading = 370, // enable_multi_threading + S_thread_pool_size = 371, // thread_pool_size + S_packet_queue_size = 372, // packet_queue_size + S_hooks_libraries = 373, // hooks_libraries + S_374_49 = 374, // $@49 + S_hooks_libraries_list = 375, // hooks_libraries_list + S_not_empty_hooks_libraries_list = 376, // not_empty_hooks_libraries_list + S_hooks_library = 377, // hooks_library + S_378_50 = 378, // $@50 + S_sub_hooks_library = 379, // sub_hooks_library + S_380_51 = 380, // $@51 + S_hooks_params = 381, // hooks_params + S_hooks_param = 382, // hooks_param + S_library = 383, // library + S_384_52 = 384, // $@52 + S_parameters = 385, // parameters + S_386_53 = 386, // $@53 + S_expired_leases_processing = 387, // expired_leases_processing + S_388_54 = 388, // $@54 + S_expired_leases_params = 389, // expired_leases_params + S_expired_leases_param = 390, // expired_leases_param + S_reclaim_timer_wait_time = 391, // reclaim_timer_wait_time + S_flush_reclaimed_timer_wait_time = 392, // flush_reclaimed_timer_wait_time + S_hold_reclaimed_time = 393, // hold_reclaimed_time + S_max_reclaim_leases = 394, // max_reclaim_leases + S_max_reclaim_time = 395, // max_reclaim_time + S_unwarned_reclaim_cycles = 396, // unwarned_reclaim_cycles + S_subnet4_list = 397, // subnet4_list + S_398_55 = 398, // $@55 + S_subnet4_list_content = 399, // subnet4_list_content + S_not_empty_subnet4_list = 400, // not_empty_subnet4_list + S_subnet4 = 401, // subnet4 + S_402_56 = 402, // $@56 + S_sub_subnet4 = 403, // sub_subnet4 + S_404_57 = 404, // $@57 + S_subnet4_params = 405, // subnet4_params + S_subnet4_param = 406, // subnet4_param + S_subnet = 407, // subnet + S_408_58 = 408, // $@58 + S_subnet_4o6_interface = 409, // subnet_4o6_interface + S_410_59 = 410, // $@59 + S_subnet_4o6_interface_id = 411, // subnet_4o6_interface_id + S_412_60 = 412, // $@60 + S_subnet_4o6_subnet = 413, // subnet_4o6_subnet + S_414_61 = 414, // $@61 + S_interface = 415, // interface + S_416_62 = 416, // $@62 + S_client_class = 417, // client_class + S_418_63 = 418, // $@63 + S_require_client_classes = 419, // require_client_classes + S_420_64 = 420, // $@64 + S_reservations_global = 421, // reservations_global + S_reservations_in_subnet = 422, // reservations_in_subnet + S_reservations_out_of_pool = 423, // reservations_out_of_pool + S_reservation_mode = 424, // reservation_mode + S_425_65 = 425, // $@65 + S_hr_mode = 426, // hr_mode + S_id = 427, // id + S_shared_networks = 428, // shared_networks + S_429_66 = 429, // $@66 + S_shared_networks_content = 430, // shared_networks_content + S_shared_networks_list = 431, // shared_networks_list + S_shared_network = 432, // shared_network + S_433_67 = 433, // $@67 + S_shared_network_params = 434, // shared_network_params + S_shared_network_param = 435, // shared_network_param + S_option_def_list = 436, // option_def_list + S_437_68 = 437, // $@68 + S_sub_option_def_list = 438, // sub_option_def_list + S_439_69 = 439, // $@69 + S_option_def_list_content = 440, // option_def_list_content + S_not_empty_option_def_list = 441, // not_empty_option_def_list + S_option_def_entry = 442, // option_def_entry + S_443_70 = 443, // $@70 + S_sub_option_def = 444, // sub_option_def + S_445_71 = 445, // $@71 + S_option_def_params = 446, // option_def_params + S_not_empty_option_def_params = 447, // not_empty_option_def_params + S_option_def_param = 448, // option_def_param + S_option_def_name = 449, // option_def_name + S_code = 450, // code + S_option_def_code = 451, // option_def_code + S_option_def_type = 452, // option_def_type + S_453_72 = 453, // $@72 + S_option_def_record_types = 454, // option_def_record_types + S_455_73 = 455, // $@73 + S_space = 456, // space + S_457_74 = 457, // $@74 + S_option_def_space = 458, // option_def_space + S_option_def_encapsulate = 459, // option_def_encapsulate + S_460_75 = 460, // $@75 + S_option_def_array = 461, // option_def_array + S_option_data_list = 462, // option_data_list + S_463_76 = 463, // $@76 + S_option_data_list_content = 464, // option_data_list_content + S_not_empty_option_data_list = 465, // not_empty_option_data_list + S_option_data_entry = 466, // option_data_entry + S_467_77 = 467, // $@77 + S_sub_option_data = 468, // sub_option_data + S_469_78 = 469, // $@78 + S_option_data_params = 470, // option_data_params + S_not_empty_option_data_params = 471, // not_empty_option_data_params + S_option_data_param = 472, // option_data_param + S_option_data_name = 473, // option_data_name + S_option_data_data = 474, // option_data_data + S_475_79 = 475, // $@79 + S_option_data_code = 476, // option_data_code + S_option_data_space = 477, // option_data_space + S_option_data_csv_format = 478, // option_data_csv_format + S_option_data_always_send = 479, // option_data_always_send + S_pools_list = 480, // pools_list + S_481_80 = 481, // $@80 + S_pools_list_content = 482, // pools_list_content + S_not_empty_pools_list = 483, // not_empty_pools_list + S_pool_list_entry = 484, // pool_list_entry + S_485_81 = 485, // $@81 + S_sub_pool4 = 486, // sub_pool4 + S_487_82 = 487, // $@82 + S_pool_params = 488, // pool_params + S_pool_param = 489, // pool_param + S_pool_entry = 490, // pool_entry + S_491_83 = 491, // $@83 + S_user_context = 492, // user_context + S_493_84 = 493, // $@84 + S_comment = 494, // comment + S_495_85 = 495, // $@85 + S_reservations = 496, // reservations + S_497_86 = 497, // $@86 + S_reservations_list = 498, // reservations_list + S_not_empty_reservations_list = 499, // not_empty_reservations_list + S_reservation = 500, // reservation + S_501_87 = 501, // $@87 + S_sub_reservation = 502, // sub_reservation + S_503_88 = 503, // $@88 + S_reservation_params = 504, // reservation_params + S_not_empty_reservation_params = 505, // not_empty_reservation_params + S_reservation_param = 506, // reservation_param + S_next_server = 507, // next_server + S_508_89 = 508, // $@89 + S_server_hostname = 509, // server_hostname + S_510_90 = 510, // $@90 + S_boot_file_name = 511, // boot_file_name + S_512_91 = 512, // $@91 + S_ip_address = 513, // ip_address + S_514_92 = 514, // $@92 + S_ip_addresses = 515, // ip_addresses + S_516_93 = 516, // $@93 + S_duid = 517, // duid + S_518_94 = 518, // $@94 + S_hw_address = 519, // hw_address + S_520_95 = 520, // $@95 + S_client_id_value = 521, // client_id_value + S_522_96 = 522, // $@96 + S_circuit_id_value = 523, // circuit_id_value + S_524_97 = 524, // $@97 + S_flex_id_value = 525, // flex_id_value + S_526_98 = 526, // $@98 + S_hostname = 527, // hostname + S_528_99 = 528, // $@99 + S_reservation_client_classes = 529, // reservation_client_classes + S_530_100 = 530, // $@100 + S_relay = 531, // relay + S_532_101 = 532, // $@101 + S_relay_map = 533, // relay_map + S_client_classes = 534, // client_classes + S_535_102 = 535, // $@102 + S_client_classes_list = 536, // client_classes_list + S_client_class_entry = 537, // client_class_entry + S_538_103 = 538, // $@103 + S_client_class_params = 539, // client_class_params + S_not_empty_client_class_params = 540, // not_empty_client_class_params + S_client_class_param = 541, // client_class_param + S_client_class_name = 542, // client_class_name + S_client_class_test = 543, // client_class_test + S_544_104 = 544, // $@104 + S_only_if_required = 545, // only_if_required + S_dhcp4o6_port = 546, // dhcp4o6_port + S_control_socket = 547, // control_socket + S_548_105 = 548, // $@105 + S_control_socket_params = 549, // control_socket_params + S_control_socket_param = 550, // control_socket_param + S_control_socket_type = 551, // control_socket_type + S_552_106 = 552, // $@106 + S_control_socket_name = 553, // control_socket_name + S_554_107 = 554, // $@107 + S_dhcp_queue_control = 555, // dhcp_queue_control + S_556_108 = 556, // $@108 + S_queue_control_params = 557, // queue_control_params + S_queue_control_param = 558, // queue_control_param + S_enable_queue = 559, // enable_queue + S_queue_type = 560, // queue_type + S_561_109 = 561, // $@109 + S_capacity = 562, // capacity + S_arbitrary_map_entry = 563, // arbitrary_map_entry + S_564_110 = 564, // $@110 + S_dhcp_ddns = 565, // dhcp_ddns + S_566_111 = 566, // $@111 + S_sub_dhcp_ddns = 567, // sub_dhcp_ddns + S_568_112 = 568, // $@112 + S_dhcp_ddns_params = 569, // dhcp_ddns_params + S_dhcp_ddns_param = 570, // dhcp_ddns_param + S_enable_updates = 571, // enable_updates + S_server_ip = 572, // server_ip + S_573_113 = 573, // $@113 + S_server_port = 574, // server_port + S_sender_ip = 575, // sender_ip + S_576_114 = 576, // $@114 + S_sender_port = 577, // sender_port + S_max_queue_size = 578, // max_queue_size + S_ncr_protocol = 579, // ncr_protocol + S_580_115 = 580, // $@115 + S_ncr_protocol_value = 581, // ncr_protocol_value + S_ncr_format = 582, // ncr_format + S_583_116 = 583, // $@116 + S_dep_qualifying_suffix = 584, // dep_qualifying_suffix + S_585_117 = 585, // $@117 + S_dep_override_no_update = 586, // dep_override_no_update + S_dep_override_client_update = 587, // dep_override_client_update + S_dep_replace_client_name = 588, // dep_replace_client_name + S_589_118 = 589, // $@118 + S_dep_generated_prefix = 590, // dep_generated_prefix + S_591_119 = 591, // $@119 + S_dep_hostname_char_set = 592, // dep_hostname_char_set + S_593_120 = 593, // $@120 + S_dep_hostname_char_replacement = 594, // dep_hostname_char_replacement + S_595_121 = 595, // $@121 + S_config_control = 596, // config_control + S_597_122 = 597, // $@122 + S_sub_config_control = 598, // sub_config_control + S_599_123 = 599, // $@123 + S_config_control_params = 600, // config_control_params + S_config_control_param = 601, // config_control_param + S_config_databases = 602, // config_databases + S_603_124 = 603, // $@124 + S_config_fetch_wait_time = 604, // config_fetch_wait_time + S_loggers = 605, // loggers + S_606_125 = 606, // $@125 + S_loggers_entries = 607, // loggers_entries + S_logger_entry = 608, // logger_entry + S_609_126 = 609, // $@126 + S_logger_params = 610, // logger_params + S_logger_param = 611, // logger_param + S_debuglevel = 612, // debuglevel + S_severity = 613, // severity + S_614_127 = 614, // $@127 + S_output_options_list = 615, // output_options_list + S_616_128 = 616, // $@128 + S_output_options_list_content = 617, // output_options_list_content + S_output_entry = 618, // output_entry + S_619_129 = 619, // $@129 + S_output_params_list = 620, // output_params_list + S_output_params = 621, // output_params + S_output = 622, // output + S_623_130 = 623, // $@130 + S_flush = 624, // flush + S_maxsize = 625, // maxsize + S_maxver = 626, // maxver + S_pattern = 627, // pattern + S_628_131 = 628, // $@131 + S_compatibility = 629, // compatibility + S_630_132 = 630, // $@132 + S_compatibility_params = 631, // compatibility_params + S_compatibility_param = 632, // compatibility_param + S_lenient_option_parsing = 633 // lenient_option_parsing }; }; @@ -2489,6 +2498,51 @@ switch (yykind) return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_READ_TIMEOUT (location_type l) + { + return symbol_type (token::TOKEN_READ_TIMEOUT, std::move (l)); + } +#else + static + symbol_type + make_READ_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_READ_TIMEOUT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_WRITE_TIMEOUT (location_type l) + { + return symbol_type (token::TOKEN_WRITE_TIMEOUT, std::move (l)); + } +#else + static + symbol_type + make_WRITE_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_WRITE_TIMEOUT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_TCP_USER_TIMEOUT (location_type l) + { + return symbol_type (token::TOKEN_TCP_USER_TIMEOUT, std::move (l)); + } +#else + static + symbol_type + make_TCP_USER_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_TCP_USER_TIMEOUT, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -5174,8 +5228,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1262, ///< Last index in yytable_. - yynnts_ = 422, ///< Number of nonterminal symbols. + yylast_ = 1274, ///< Last index in yytable_. + yynnts_ = 425, ///< Number of nonterminal symbols. yyfinal_ = 28 ///< Termination state number. }; @@ -5241,10 +5295,10 @@ switch (yykind) 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205 + 205, 206, 207, 208 }; // Last valid token kind. - const int code_max = 460; + const int code_max = 463; if (t <= 0) return symbol_kind::S_YYEOF; @@ -5417,7 +5471,7 @@ switch (yykind) #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 5421 "dhcp4_parser.h" +#line 5475 "dhcp4_parser.h" diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 6e5f5519d6..0055833bb2 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -93,6 +93,9 @@ using namespace std; LFC_INTERVAL "lfc-interval" READONLY "readonly" CONNECT_TIMEOUT "connect-timeout" + READ_TIMEOUT "read-timeout" + WRITE_TIMEOUT "write-timeout" + TCP_USER_TIMEOUT "tcp-user-timeout" MAX_RECONNECT_TRIES "max-reconnect-tries" RECONNECT_WAIT_TIME "reconnect-wait-time" ON_FAIL "on-fail" @@ -988,6 +991,9 @@ database_map_param: database_type | lfc_interval | readonly | connect_timeout + | read_timeout + | write_timeout + | tcp_user_timeout | max_reconnect_tries | reconnect_wait_time | on_fail @@ -1078,6 +1084,24 @@ connect_timeout: CONNECT_TIMEOUT COLON INTEGER { ctx.stack_.back()->set("connect-timeout", n); }; +read_timeout: READ_TIMEOUT COLON INTEGER { + ctx.unique("read-timeout", ctx.loc2pos(@1)); + ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("read-timeout", n); +}; + +write_timeout: WRITE_TIMEOUT COLON INTEGER { + ctx.unique("write-timeout", ctx.loc2pos(@1)); + ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("write-timeout", n); +}; + +tcp_user_timeout: TCP_USER_TIMEOUT COLON INTEGER { + ctx.unique("tcp-user-timeout", ctx.loc2pos(@1)); + ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("tcp-user-timeout", n); +}; + max_reconnect_tries: MAX_RECONNECT_TRIES COLON INTEGER { ctx.unique("max-reconnect-tries", ctx.loc2pos(@1)); ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); diff --git a/src/bin/dhcp4/tests/parser_unittest.cc b/src/bin/dhcp4/tests/parser_unittest.cc index 9a7e0db995..e6b8c4ce2a 100644 --- a/src/bin/dhcp4/tests/parser_unittest.cc +++ b/src/bin/dhcp4/tests/parser_unittest.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,11 @@ namespace test { void compareJSON(ConstElementPtr a, ConstElementPtr b) { ASSERT_TRUE(a); ASSERT_TRUE(b); - EXPECT_EQ(a->str(), b->str()); + EXPECT_EQ(a->str(), b->str()) +#ifdef HAVE_CREATE_UNIFIED_DIFF + << "\nDiff:\n" << generateDiff(prettyPrint(a), prettyPrint(b)) << "\n" +#endif + ; } /// @brief Tests if the input string can be parsed with specific parser diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index b1c9254641..894e30a377 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 221 -#define YY_END_OF_BUFFER 222 +#define YY_NUM_RULES 224 +#define YY_END_OF_BUFFER 225 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,35 +700,35 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[2097] = +static const flex_int16_t yy_accept[2136] = { 0, - 214, 214, 0, 0, 0, 0, 0, 0, 0, 0, - 222, 220, 10, 11, 220, 1, 214, 211, 214, 214, - 220, 213, 212, 220, 220, 220, 220, 220, 207, 208, - 220, 220, 220, 209, 210, 5, 5, 5, 220, 220, - 220, 10, 11, 0, 0, 202, 0, 0, 0, 0, + 217, 217, 0, 0, 0, 0, 0, 0, 0, 0, + 225, 223, 10, 11, 223, 1, 217, 214, 217, 217, + 223, 216, 215, 223, 223, 223, 223, 223, 210, 211, + 223, 223, 223, 212, 213, 5, 5, 5, 223, 223, + 223, 10, 11, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, 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, 214, 214, - 0, 213, 214, 3, 2, 6, 0, 214, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 203, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 217, + 217, 0, 216, 217, 3, 2, 6, 0, 217, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 9, 0, + 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 0, 171, 0, 0, 172, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, 174, 0, - 0, 0, 0, 0, 0, 0, 204, 206, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 175, 0, 0, 0, 0, 0, 0, 0, 207, + 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -736,203 +736,207 @@ static const flex_int16_t yy_accept[2097] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 219, 217, 0, 216, 215, 0, 0, - 0, 0, 0, 170, 0, 28, 0, 27, 0, 0, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 220, + 0, 219, 218, 0, 0, 0, 0, 0, 173, 0, + 28, 0, 27, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 218, 215, 0, 0, 0, 0, 29, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, + 218, 0, 0, 0, 0, 29, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 112, 0, 61, 0, 0, + 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 115, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, - 0, 175, 0, 54, 0, 58, 0, 0, 0, 0, - 37, 34, 33, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, + 178, 0, 54, 0, 58, 0, 0, 0, 0, 0, + 37, 34, 33, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 141, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 144, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, - + 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, + 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 168, 138, 0, 0, 0, + 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 142, 55, 0, 0, 0, 0, - 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 144, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 171, 141, 0, 0, 0, 0, 0, 0, 0, + 145, 55, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 147, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, + 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 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, 74, 0, + 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, + 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 106, 0, 0, 0, 154, + 0, 0, 0, 59, 109, 0, 0, 0, 157, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 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, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 169, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 172, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, - 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 173, 0, 40, - 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 100, 0, 0, 0, 0, 0, 167, 0, - 57, 0, 108, 0, 194, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - - 0, 0, 0, 0, 0, 0, 0, 134, 135, 0, - 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, - 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, + 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, + 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 123, 0, 0, 0, + 0, 159, 176, 0, 40, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 0, 0, 0, 0, 0, 17, 0, 15, 0, + 0, 0, 0, 20, 0, 0, 0, 103, 0, 0, - 0, 191, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 0, 149, 0, 0, 0, + 0, 0, 0, 170, 0, 57, 0, 111, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 184, 0, 0, 193, 0, + 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, + 0, 0, 0, 137, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 153, 0, 46, 0, 0, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 83, 0, - 0, 161, 0, 0, 0, 0, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 72, 0, 113, + 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, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 137, 0, 0, 0, 200, 0, 0, 0, + 0, 0, 0, 104, 126, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 0, 0, 0, 0, 0, 17, 0, 15, 0, 0, + 194, 193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 176, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 187, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 120, 0, 156, 0, 46, 0, 0, 63, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + + 0, 0, 0, 0, 0, 0, 0, 0, 122, 65, + 86, 0, 0, 164, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 75, 0, 116, 0, 0, 0, 140, 0, 0, 0, + 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 50, 0, 0, 0, 189, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 48, 0, 0, 0, 47, 0, 0, 18, 0, - 0, 0, 71, 0, 0, 0, 0, 0, 139, 0, + 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 0, 0, 0, 150, 50, + 0, 0, 0, 192, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, + 0, 47, 0, 0, 18, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 0, 136, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 0, 166, - 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 0, 0, 0, 0, 0, + 0, 82, 0, 139, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 0, 67, 0, 0, - 0, 36, 0, 51, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 182, 0, 0, 0, 0, 151, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 0, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, + 112, 0, 0, 0, 0, 0, 169, 0, 0, 0, + 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 25, 39, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 0, 0, 13, 0, 0, 0, 0, + 0, 0, 102, 0, 70, 0, 0, 0, 0, 36, + 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, + 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, + 0, 71, 0, 0, 0, 0, 67, 190, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 181, 0, 81, 0, 80, 0, 21, - 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 184, 0, 84, 0, 83, 0, 21, 0, + + 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, + 0, 0, 183, 0, 0, 0, 0, 0, 73, 0, + 0, 89, 0, 68, 0, 23, 0, 129, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, + 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 0, 0, 180, 0, 0, 0, 0, 0, 70, + 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, + 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 0, 65, 0, 23, 0, 126, 0, - 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 0, 0, 97, 0, 0, 0, 0, 189, 0, + 0, 0, 0, 201, 204, 81, 80, 22, 0, 134, + 151, 130, 0, 0, 0, 0, 0, 0, 0, 0, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 181, + 0, 0, 0, 0, 0, 0, 186, 0, 95, 0, + 87, 0, 0, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 0, 0, 180, 0, 0, 26, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 0, 0, 94, 0, 0, 0, 0, 186, - 0, 0, 0, 0, 198, 201, 78, 77, 22, 0, - - 131, 148, 127, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, - 178, 0, 0, 0, 0, 0, 0, 183, 0, 92, - 0, 84, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 177, 0, 0, 26, - 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, - 0, 44, 42, 0, 0, 0, 96, 0, 0, 132, - 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 0, 179, 43, 197, 0 + 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, + 44, 42, 0, 0, 0, 99, 0, 0, 135, 0, + 91, 0, 0, 0, 0, 0, 0, 0, 0, 90, + 0, 182, 43, 200, 0 } ; static const YY_CHAR yy_ec[256] = @@ -979,271 +983,275 @@ static const YY_CHAR yy_meta[74] = 1, 1, 1 } ; -static const flex_int16_t yy_base[2105] = +static const flex_int16_t yy_base[2144] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2484, 2485, 34, 2480, 145, 0, 207, 2485, 214, 221, - 13, 228, 2485, 2460, 118, 25, 2, 6, 2485, 2485, - 73, 11, 17, 2485, 2485, 2485, 104, 2468, 2421, 0, - 2458, 108, 2475, 24, 256, 2485, 67, 2424, 2444, 84, - 75, 2444, 88, 226, 91, 89, 284, 196, 206, 219, - 208, 235, 241, 60, 277, 2424, 279, 291, 253, 293, - 316, 2407, 282, 317, 356, 325, 2426, 0, 378, 385, - 406, 415, 422, 2485, 0, 2485, 429, 436, 218, 219, - 287, 311, 333, 320, 2485, 2423, 2464, 2485, 342, 2485, - - 412, 340, 2421, 2462, 356, 10, 442, 349, 186, 396, - 312, 348, 2461, 0, 474, 401, 2403, 409, 2402, 2403, - 2409, 415, 2395, 2396, 2401, 436, 2411, 2394, 2403, 2393, - 439, 308, 410, 2396, 2394, 446, 2383, 2441, 455, 2386, - 2439, 2379, 422, 2400, 2400, 2394, 286, 2387, 2385, 2386, - 2378, 2383, 2377, 428, 2388, 471, 2373, 2372, 2386, 448, - 2424, 2371, 454, 2383, 361, 2371, 483, 2372, 474, 2384, - 2381, 2382, 486, 2380, 2415, 2414, 2360, 2360, 2364, 469, - 2360, 2352, 2369, 2361, 0, 472, 495, 459, 479, 496, - 489, 2360, 2485, 511, 2355, 2485, 502, 516, 2485, 2409, - - 522, 2408, 523, 2407, 519, 2406, 2485, 2485, 565, 2405, - 531, 2364, 2356, 2360, 2361, 2341, 2352, 2354, 2353, 497, - 505, 2391, 2355, 2336, 2333, 2341, 2347, 2335, 2349, 2345, - 2336, 2345, 2345, 2340, 2332, 2334, 2318, 2322, 2335, 2337, - 2334, 2326, 2316, 2319, 2333, 2485, 2319, 2327, 80, 2365, - 2311, 2320, 2362, 2309, 2319, 2359, 554, 2318, 2357, 2302, - 2304, 2315, 2353, 534, 2357, 2311, 2291, 2306, 508, 2296, - 2302, 530, 2293, 2291, 2294, 2290, 2296, 2287, 2286, 2299, - 2292, 2282, 2293, 2297, 2296, 2290, 502, 2297, 2292, 2284, - 2274, 2289, 2284, 2288, 2269, 2285, 2271, 2277, 2284, 2266, - - 524, 2271, 2268, 2267, 2262, 2276, 2275, 544, 2274, 2277, - 2259, 2267, 547, 2485, 2485, 569, 2485, 2485, 2254, 192, - 2301, 572, 2312, 2485, 532, 2485, 2311, 2485, 2305, 609, - 2485, 559, 2245, 2264, 2247, 2264, 2300, 2260, 2250, 2302, - 2257, 2260, 2251, 2254, 2240, 2251, 289, 2290, 2248, 2245, - 2246, 587, 2250, 2290, 2225, 2237, 2232, 2229, 2225, 2227, - 2278, 2235, 2224, 2240, 2274, 2220, 632, 2233, 2233, 2216, - 2217, 2230, 2228, 2226, 2226, 2225, 2220, 2227, 2222, 2207, - 540, 2216, 2219, 2214, 578, 2213, 2209, 2259, 559, 605, - 2485, 2218, 2252, 2202, 2201, 2194, 2196, 2208, 2199, 2206, - - 2187, 2204, 2193, 2198, 599, 2245, 2198, 592, 2195, 2198, - 2198, 2196, 2185, 2185, 2197, 585, 2172, 2173, 2194, 2185, - 2175, 2172, 2186, 597, 2172, 2184, 2183, 2182, 2177, 2219, - 2179, 2178, 2177, 2176, 2219, 2178, 2217, 2157, 2215, 2157, - 557, 2170, 2485, 2485, 2169, 605, 2211, 2210, 2485, 2209, - 2485, 618, 683, 617, 2208, 2202, 2155, 2157, 2159, 2146, - 2143, 2485, 2148, 2141, 2153, 2156, 2143, 2142, 2485, 2152, - 610, 2143, 2140, 2152, 568, 2137, 2139, 2485, 2184, 2144, - 2129, 2131, 2142, 2140, 2135, 643, 2142, 2130, 2123, 2174, - 2485, 2121, 2137, 2171, 2175, 2131, 2125, 2127, 2128, 2112, - - 2121, 2163, 2114, 2113, 2108, 2107, 2109, 2105, 2101, 611, - 2120, 2094, 2101, 2106, 2099, 2115, 2149, 2153, 2485, 2098, - 2094, 2150, 2101, 2100, 2094, 2101, 2086, 2096, 2084, 2098, - 2098, 2086, 2082, 2084, 2079, 2485, 2136, 2485, 2078, 2077, - 2070, 2087, 2126, 2125, 2070, 2075, 2084, 2078, 2072, 2081, - 669, 2118, 2080, 2064, 2059, 2055, 2061, 620, 2075, 2068, - 2072, 2055, 2113, 2054, 2054, 2105, 2050, 2051, 2050, 2485, - 2063, 2485, 2100, 2485, 2051, 2485, 2061, 2097, 2057, 2100, - 2485, 2485, 2485, 632, 631, 676, 2485, 620, 2059, 2039, - 2049, 2091, 2090, 2035, 2045, 2087, 2032, 2039, 2032, 2040, - - 2043, 2025, 2025, 2040, 2039, 545, 2038, 2037, 2021, 2036, - 2018, 2065, 2032, 2029, 2069, 2013, 2015, 2027, 2027, 2026, - 2485, 2011, 2008, 2066, 2021, 2013, 2019, 2010, 2018, 2485, - 2003, 2014, 2018, 2000, 2012, 2004, 640, 1995, 1994, 1988, - 1993, 1990, 2005, 2004, 2005, 1984, 1994, 2000, 2043, 1998, - 1997, 1989, 1980, 2485, 1981, 1983, 2485, 1985, 1990, 2029, - 2028, 16, 1989, 2026, 1971, 2024, 1971, 1974, 1975, 1966, - 2485, 1980, 1966, 706, 1958, 1962, 1978, 1975, 1967, 2012, - 1964, 1971, 2009, 2485, 1955, 1953, 1967, 1966, 1969, 2003, - 2002, 1949, 2000, 1960, 1944, 1997, 1996, 2485, 1941, 1955, - - 1954, 684, 1955, 1954, 1990, 1954, 1949, 1938, 1940, 2485, - 2485, 630, 666, 1932, 1949, 1941, 1928, 1922, 1934, 1933, - 1941, 1982, 1940, 670, 1971, 20, 83, 277, 355, 406, - 514, 567, 605, 635, 636, 636, 693, 655, 654, 664, - 704, 671, 665, 677, 666, 670, 676, 715, 721, 678, - 686, 2485, 689, 684, 676, 691, 696, 694, 691, 698, - 697, 685, 699, 697, 705, 741, 703, 748, 749, 694, - 707, 693, 703, 750, 708, 758, 2485, 759, 715, 713, - 715, 711, 705, 765, 761, 724, 713, 2485, 715, 726, - 715, 728, 718, 731, 775, 718, 777, 720, 735, 2485, - - 729, 723, 734, 719, 730, 743, 722, 728, 783, 747, - 731, 731, 744, 788, 789, 736, 754, 749, 754, 751, - 795, 737, 749, 750, 757, 748, 745, 2485, 811, 768, - 769, 759, 762, 773, 764, 770, 814, 790, 777, 759, - 766, 780, 825, 782, 779, 777, 2485, 781, 776, 791, - 788, 774, 776, 795, 792, 793, 781, 788, 789, 798, - 802, 838, 800, 790, 803, 789, 789, 795, 851, 798, - 793, 794, 800, 816, 799, 853, 808, 2485, 818, 818, - 811, 822, 820, 865, 807, 809, 824, 825, 813, 811, - 873, 830, 816, 822, 820, 2485, 2485, 836, 835, 836, - - 841, 829, 839, 841, 2485, 2485, 841, 843, 830, 848, - 835, 2485, 833, 851, 838, 838, 889, 836, 840, 858, - 899, 2485, 900, 2485, 845, 859, 859, 904, 852, 851, - 855, 849, 909, 862, 852, 853, 849, 859, 863, 874, - 875, 870, 872, 865, 867, 863, 880, 870, 885, 868, - 927, 884, 889, 866, 889, 875, 874, 2485, 881, 883, - 883, 896, 934, 881, 896, 914, 922, 891, 940, 902, - 942, 2485, 948, 891, 910, 900, 899, 894, 895, 907, - 902, 898, 916, 902, 903, 913, 922, 958, 905, 923, - 916, 911, 965, 971, 928, 919, 2485, 933, 924, 932, - - 934, 919, 935, 925, 937, 931, 978, 944, 928, 929, - 2485, 945, 948, 931, 933, 991, 934, 953, 2485, 952, - 955, 942, 937, 955, 943, 996, 954, 950, 947, 1000, - 949, 1002, 964, 950, 968, 967, 953, 968, 960, 956, - 974, 973, 960, 977, 2485, 2485, 969, 1016, 969, 2485, - 977, 980, 973, 1026, 2485, 976, 981, 1025, 976, 977, - 989, 983, 984, 982, 993, 1038, 982, 983, 1041, 1042, - 986, 998, 991, 2485, 987, 995, 993, 1045, 987, 1008, - 994, 995, 1001, 1009, 1000, 1014, 1015, 1031, 1036, 1018, - 1023, 1006, 1006, 2485, 1007, 1009, 1020, 1010, 1030, 1029, - - 1020, 1031, 1074, 1016, 1036, 1029, 1033, 1037, 1020, 1037, - 1028, 1083, 1030, 1034, 2485, 1081, 1030, 1050, 1032, 1032, - 1053, 1050, 1090, 1039, 1057, 1058, 1044, 1052, 1061, 1041, - 1056, 1063, 1105, 1106, 2485, 1059, 1108, 1109, 1051, 1061, - 1071, 1055, 1075, 1058, 1060, 1060, 1067, 1076, 1064, 1071, - 1066, 1073, 1085, 1126, 1073, 1072, 1089, 1130, 1080, 1084, - 1082, 1080, 1075, 1136, 1087, 1138, 1088, 1140, 1136, 1142, - 1095, 2485, 1100, 1093, 1084, 1103, 1097, 1092, 1102, 1103, - 1099, 1112, 2485, 1096, 1092, 2485, 2485, 1098, 1158, 1117, - 1098, 1117, 1118, 1120, 1159, 1112, 1166, 1167, 1117, 1115, - - 1126, 1108, 1113, 1152, 1143, 1175, 1130, 1130, 1134, 1179, - 1122, 1122, 1125, 1142, 1137, 1141, 1136, 2485, 1133, 1129, - 1146, 1126, 1147, 1137, 1188, 1141, 2485, 1154, 1153, 1156, - 1140, 1149, 1153, 1159, 1145, 1205, 1158, 1163, 1150, 1161, - 1153, 1159, 1155, 1173, 1174, 1175, 2485, 2485, 1173, 2485, - 1175, 2485, 1160, 1171, 1162, 1181, 1174, 1172, 1224, 1181, - 1178, 1222, 1186, 1175, 1182, 1187, 1184, 1190, 2485, 1183, - 1175, 1236, 2485, 1237, 1184, 1191, 1235, 1197, 2485, 1198, - 2485, 1195, 2485, 1186, 2485, 1186, 1189, 1203, 1208, 1191, - 1202, 1251, 1208, 1209, 1249, 1205, 1256, 1252, 1258, 2485, - - 1209, 1206, 1261, 1262, 1219, 1220, 1222, 2485, 2485, 1261, - 1210, 1226, 1210, 1222, 1241, 1272, 2485, 1229, 1220, 1231, - 2485, 1276, 1213, 1224, 1239, 1275, 1227, 1238, 1226, 1240, - 1241, 1238, 1282, 1245, 1235, 1245, 1251, 1239, 1239, 1294, - 1290, 1291, 1297, 1254, 2485, 1257, 1256, 1258, 1251, 1260, - 1261, 1258, 1249, 1252, 1252, 1311, 1258, 1313, 1260, 1315, - 1258, 1263, 1318, 2485, 1276, 1256, 1271, 1264, 1267, 1280, - 1283, 1282, 1280, 1329, 1283, 2485, 2485, 1279, 1289, 1274, - 1330, 1277, 1292, 1278, 1339, 1340, 1284, 1294, 1343, 1300, - 2485, 1292, 1293, 1295, 1348, 1291, 2485, 1308, 2485, 1307, - - 1297, 2485, 2485, 1310, 1293, 1313, 1300, 1359, 1309, 1361, - 1310, 1342, 2485, 1364, 1314, 1361, 2485, 1309, 1368, 1318, - 1312, 1309, 1312, 1314, 1310, 1332, 1371, 1324, 1336, 1339, - 1327, 1330, 1323, 1383, 1331, 2485, 1328, 1328, 2485, 1330, - 1389, 1342, 1333, 1348, 1348, 1351, 1351, 1348, 1392, 1354, - 2485, 1346, 2485, 1347, 2485, 1357, 1349, 2485, 1398, 1360, - 1361, 1358, 1402, 1350, 1365, 1405, 1367, 1359, 2485, 1356, - 1356, 1362, 1361, 1359, 1413, 1375, 1375, 2485, 2485, 1416, - 1363, 2485, 1380, 1365, 1366, 1372, 2485, 1381, 1428, 1376, - 1368, 1374, 1384, 1396, 1389, 1395, 1391, 2485, 1400, 2485, - - 1397, 1416, 2485, 1400, 1385, 1445, 2485, 1446, 1403, 1408, - 1390, 1450, 1451, 1447, 1411, 1408, 1404, 1397, 1452, 1410, - 1411, 2485, 1401, 1417, 1415, 1463, 2485, 1402, 1461, 1424, - 1420, 1465, 1413, 1418, 1416, 1475, 1431, 1419, 1478, 1474, - 1429, 1481, 1442, 1431, 1425, 1485, 1427, 1436, 1429, 1443, - 1446, 1491, 1433, 1450, 1446, 1444, 1437, 1452, 1436, 1494, - 1495, 1496, 1497, 1460, 1453, 1452, 1452, 1447, 2485, 1455, - 1461, 1452, 1453, 1452, 1454, 1509, 1450, 1468, 1517, 1487, - 1519, 1472, 2485, 2485, 1463, 1474, 1523, 2485, 2485, 1469, - 1474, 1472, 1522, 1480, 1485, 1473, 1489, 1478, 1477, 1477, - - 1479, 2485, 1537, 1483, 1534, 1477, 1482, 1543, 1491, 1501, - 1503, 2485, 1548, 1501, 1545, 2485, 1496, 1504, 2485, 1495, - 1510, 1498, 2485, 1508, 1509, 1510, 1559, 1517, 2485, 1556, - 1522, 1498, 1516, 1517, 1518, 1527, 1509, 1515, 1517, 1529, - 1528, 1519, 1569, 1521, 1517, 1518, 1519, 1574, 1580, 1530, - 1582, 1535, 1540, 1533, 2485, 1586, 2485, 1535, 1588, 1530, - 2485, 1533, 1543, 1587, 1535, 1550, 1537, 1552, 1538, 1545, - 1545, 1556, 1557, 2485, 1551, 1546, 1545, 1605, 1558, 2485, - 1602, 1553, 1550, 2485, 1564, 1551, 1572, 1568, 1570, 1615, - 1568, 1565, 1573, 1567, 2485, 1620, 1561, 1563, 1579, 1572, - - 1573, 1563, 1579, 1580, 1574, 1590, 1580, 1632, 1592, 1576, - 1585, 1631, 1589, 1638, 1587, 2485, 1581, 2485, 1588, 1642, - 1638, 2485, 1601, 2485, 1641, 1603, 1604, 1589, 1590, 1598, - 1652, 1600, 1649, 1650, 1605, 1600, 1618, 1615, 1606, 1613, - 2485, 1610, 1615, 1613, 1665, 1666, 1614, 1611, 1625, 1612, - 2485, 1627, 1628, 1629, 1630, 2485, 1620, 1632, 1677, 1630, - 1635, 1680, 1622, 1630, 1624, 1632, 1645, 2485, 1646, 1627, - 1628, 1635, 1637, 2485, 1651, 1648, 1688, 1649, 2485, 1653, - 1638, 1638, 1653, 1646, 1645, 1656, 1643, 2485, 1659, 1647, - 1650, 1706, 1646, 1665, 1656, 1668, 1659, 1668, 1670, 1674, - - 2485, 2485, 1667, 1658, 1658, 1718, 1661, 1720, 1662, 1722, - 1680, 1724, 2485, 1666, 1726, 2485, 1722, 1684, 1681, 1686, - 1673, 1681, 1692, 1679, 1690, 1676, 1674, 1682, 1681, 1686, - 1678, 1743, 1696, 1697, 1687, 1704, 1703, 1744, 1688, 1707, - 1708, 2485, 1713, 1706, 1755, 1712, 1713, 1758, 1715, 1718, - 1705, 1714, 1715, 2485, 1764, 2485, 1717, 2485, 1726, 2485, - 1767, 2485, 1709, 1769, 1716, 1771, 1714, 1773, 1721, 1770, - 1771, 1733, 1773, 1719, 1723, 1741, 1782, 1741, 2485, 1732, - 1722, 1781, 1747, 1740, 1736, 1790, 1733, 1735, 1734, 1741, - 2485, 1737, 1739, 2485, 1744, 1754, 1739, 1747, 1749, 2485, - - 1750, 1744, 2485, 1756, 2485, 1752, 2485, 1762, 2485, 1763, - 1763, 1754, 1810, 1754, 1764, 1749, 1762, 2485, 1764, 1772, - 1817, 1758, 1760, 1757, 1781, 2485, 1768, 1775, 1776, 1779, - 1768, 1822, 1769, 1777, 1786, 1785, 1788, 1789, 1790, 1783, - 1778, 1779, 1779, 1791, 1786, 2485, 1797, 1785, 1838, 1789, - 1801, 1846, 2485, 1792, 1804, 1849, 1798, 1800, 1798, 1799, - 1854, 1807, 1794, 1809, 1814, 1859, 1860, 1861, 1862, 1863, - 1820, 1865, 1866, 1867, 1811, 1815, 1811, 1827, 1810, 1822, - 1816, 2485, 1832, 1876, 2485, 1833, 1818, 1836, 1827, 2485, - 1828, 1842, 1838, 1831, 2485, 2485, 2485, 2485, 2485, 1885, - - 2485, 2485, 2485, 1828, 1836, 1831, 1884, 1850, 1847, 1892, - 1853, 2485, 1894, 1836, 1896, 1839, 1852, 1851, 1852, 1842, - 2485, 1843, 1903, 1856, 1865, 1858, 1902, 2485, 1849, 2485, - 1861, 2485, 1905, 1911, 1853, 1869, 1914, 1915, 2485, 1872, - 1866, 1859, 1879, 1876, 1868, 1872, 2485, 1919, 1868, 2485, - 2485, 1868, 1876, 1923, 1883, 1876, 1931, 1879, 1879, 1875, - 1877, 1936, 1937, 1879, 1895, 1880, 2485, 1941, 1888, 1895, - 1944, 2485, 2485, 1897, 1946, 1894, 2485, 1898, 1897, 2485, - 1898, 2485, 1892, 1892, 1909, 1910, 1955, 1901, 1957, 1958, - 2485, 1959, 2485, 2485, 2485, 2485, 1965, 1968, 1971, 1972, - - 1974, 1977, 1980, 1983 + 2526, 2527, 34, 2522, 145, 0, 207, 2527, 214, 221, + 13, 228, 2527, 2502, 118, 25, 2, 6, 2527, 2527, + 73, 11, 17, 2527, 2527, 2527, 104, 2510, 2463, 0, + 2500, 108, 2517, 24, 256, 2527, 67, 2466, 2486, 84, + 75, 2486, 88, 226, 91, 89, 284, 196, 206, 219, + 208, 235, 241, 60, 277, 2466, 279, 291, 253, 293, + 316, 2449, 282, 317, 356, 325, 2468, 305, 0, 378, + 385, 406, 415, 422, 2527, 0, 2527, 429, 436, 218, + 219, 287, 333, 354, 342, 2527, 2465, 2506, 2527, 382, + + 2527, 428, 346, 2463, 2504, 356, 10, 336, 409, 186, + 417, 314, 319, 2503, 0, 489, 416, 2445, 409, 2444, + 2445, 2451, 409, 2437, 2438, 2443, 412, 2453, 2436, 2445, + 2435, 415, 416, 290, 2438, 2436, 421, 2425, 2483, 412, + 2428, 2481, 2421, 440, 2442, 2442, 2436, 440, 2429, 2427, + 2428, 2420, 2425, 2419, 435, 2430, 471, 2415, 2414, 2428, + 460, 2466, 2413, 437, 2425, 446, 2413, 499, 2414, 459, + 2426, 2423, 2424, 473, 2422, 2457, 2456, 487, 2402, 2402, + 2406, 489, 2402, 2394, 2411, 2403, 2405, 0, 493, 510, + 484, 495, 511, 493, 2401, 2527, 507, 2396, 2527, 508, + + 517, 2527, 2450, 523, 2449, 524, 2448, 520, 2447, 2527, + 2527, 566, 2446, 531, 2405, 2397, 2401, 2402, 2382, 2393, + 2395, 2394, 504, 536, 2432, 2396, 2377, 2374, 2382, 2388, + 2376, 2390, 2386, 2377, 2386, 2386, 2381, 2373, 2375, 2359, + 2363, 2376, 2378, 2375, 2367, 2357, 2360, 2374, 2527, 2360, + 2368, 80, 2406, 2352, 2361, 2403, 2350, 2360, 2400, 521, + 2359, 2398, 2343, 2345, 2356, 2394, 548, 2398, 2352, 2332, + 2347, 558, 2337, 2343, 540, 2334, 2332, 2335, 2331, 2337, + 2328, 2327, 2340, 2333, 2323, 2334, 2338, 2337, 2331, 540, + 2338, 2333, 2325, 2315, 2330, 2325, 2329, 2310, 2326, 2312, + + 2318, 2325, 2307, 503, 2312, 2309, 2308, 289, 2303, 2317, + 2316, 572, 2315, 2318, 2300, 2308, 2296, 575, 2527, 2527, + 576, 2527, 2527, 2294, 192, 2341, 577, 2352, 2527, 543, + 2527, 2351, 2527, 2345, 623, 2527, 564, 2285, 2304, 2287, + 2304, 2340, 2300, 2290, 2342, 2297, 2300, 2291, 2294, 2280, + 2291, 612, 2330, 2288, 2285, 2286, 613, 2290, 2330, 2265, + 2277, 2272, 2269, 2265, 2267, 2318, 2275, 2264, 2280, 2314, + 2260, 622, 2273, 2273, 2256, 2257, 2270, 2268, 2266, 2266, + 2265, 2260, 2267, 2262, 2247, 591, 2256, 2259, 2254, 568, + 2253, 2249, 2299, 559, 596, 2527, 2258, 2292, 2242, 2241, + + 2234, 2236, 2248, 2239, 2246, 2227, 2244, 2233, 2238, 601, + 2285, 2238, 606, 2235, 2238, 2238, 2236, 597, 2226, 2238, + 603, 2213, 2214, 2235, 2226, 2216, 2213, 2227, 613, 2213, + 2225, 2224, 2223, 2218, 2260, 2220, 2219, 2218, 2217, 2200, + 2259, 2218, 2257, 2197, 2255, 2197, 669, 2210, 2208, 2527, + 2527, 2208, 619, 2250, 2249, 2527, 2248, 2527, 644, 692, + 625, 2247, 2241, 2194, 2196, 2198, 2185, 2182, 2527, 2187, + 2180, 2192, 2195, 2182, 2181, 2527, 2191, 630, 2182, 2179, + 2191, 583, 2176, 2178, 2527, 2223, 2183, 2168, 2170, 2181, + 2179, 2174, 673, 2181, 2169, 2162, 2213, 2527, 2160, 2176, + + 2210, 2214, 2170, 2164, 2166, 2167, 2151, 2160, 2202, 2153, + 2152, 2147, 2146, 2148, 2144, 2140, 561, 2159, 2133, 2140, + 2145, 2138, 2154, 2188, 2192, 2527, 2137, 2133, 2189, 2140, + 2139, 2133, 2140, 2125, 2135, 2123, 2137, 2137, 2125, 2121, + 2123, 2118, 2527, 2175, 2527, 2117, 2116, 2109, 2126, 2165, + 2164, 2109, 2108, 2113, 2122, 2116, 2110, 2119, 689, 2156, + 2118, 2102, 2097, 2093, 2099, 344, 2113, 2106, 2110, 2093, + 2151, 2092, 2092, 2143, 2088, 2089, 2088, 2086, 2527, 2100, + 2527, 2137, 2527, 2088, 2527, 2098, 2134, 2133, 2093, 2136, + 2527, 2527, 2527, 631, 650, 691, 2527, 646, 2095, 2075, + + 2085, 2127, 2126, 2071, 2081, 2123, 2068, 2075, 2068, 2076, + 2079, 2061, 2061, 2076, 2075, 637, 2074, 2073, 2057, 2072, + 2054, 2101, 2068, 2065, 2105, 2049, 2051, 2063, 2063, 2062, + 2527, 2047, 2044, 2102, 2057, 2049, 2055, 2046, 2054, 2527, + 2039, 2050, 2054, 2036, 2048, 2040, 441, 2031, 2030, 2024, + 2029, 2026, 2041, 2040, 2041, 2020, 2030, 2036, 2079, 2034, + 2033, 2025, 2016, 2527, 2017, 2019, 2527, 2021, 2026, 2065, + 2064, 16, 2025, 2062, 2007, 2060, 2007, 2010, 2011, 2002, + 2527, 2016, 2002, 715, 1994, 1998, 2014, 2011, 2006, 2002, + 2047, 1999, 2006, 2044, 2527, 1990, 1988, 2002, 2001, 2004, + + 2038, 2037, 1984, 2035, 1995, 1979, 2032, 2031, 2527, 1976, + 1990, 1989, 681, 1990, 1989, 1986, 2024, 1988, 1983, 1972, + 1974, 1965, 2527, 2527, 685, 685, 1965, 1978, 88, 333, + 346, 441, 513, 523, 603, 595, 676, 632, 633, 610, + 614, 629, 664, 677, 667, 670, 681, 681, 665, 722, + 684, 677, 687, 733, 696, 689, 689, 691, 695, 703, + 742, 748, 706, 707, 2527, 710, 705, 696, 711, 716, + 713, 710, 718, 717, 705, 719, 717, 725, 761, 723, + 768, 769, 713, 726, 712, 722, 769, 727, 777, 2527, + 778, 734, 732, 734, 730, 724, 784, 780, 743, 732, + + 2527, 734, 745, 734, 747, 737, 750, 794, 737, 796, + 739, 754, 2527, 748, 742, 753, 738, 749, 762, 753, + 742, 748, 803, 767, 751, 751, 764, 808, 809, 756, + 774, 769, 774, 771, 815, 757, 769, 770, 777, 768, + 765, 2527, 831, 788, 789, 777, 780, 783, 794, 785, + 791, 792, 836, 812, 799, 781, 788, 802, 847, 804, + 801, 799, 2527, 803, 798, 813, 810, 796, 798, 817, + 814, 815, 803, 810, 811, 820, 824, 860, 822, 812, + 825, 811, 811, 817, 873, 820, 815, 816, 822, 838, + 821, 875, 830, 2527, 840, 840, 833, 844, 842, 887, + + 829, 831, 846, 847, 835, 833, 895, 852, 838, 844, + 842, 2527, 2527, 858, 857, 858, 863, 851, 861, 863, + 2527, 2527, 863, 865, 852, 870, 857, 2527, 855, 873, + 860, 860, 911, 858, 862, 880, 921, 2527, 922, 2527, + 867, 881, 881, 926, 874, 873, 877, 871, 887, 932, + 885, 875, 876, 872, 882, 886, 897, 898, 893, 895, + 888, 890, 886, 903, 893, 908, 891, 950, 907, 912, + 889, 912, 898, 897, 2527, 904, 906, 955, 907, 920, + 958, 905, 920, 914, 939, 947, 916, 965, 927, 967, + 2527, 973, 916, 935, 925, 924, 919, 920, 932, 927, + + 923, 941, 927, 928, 938, 947, 983, 930, 948, 941, + 936, 990, 996, 953, 944, 2527, 958, 949, 957, 959, + 944, 960, 950, 962, 956, 1003, 969, 953, 954, 2527, + 970, 973, 956, 958, 1016, 959, 978, 2527, 977, 980, + 967, 962, 980, 968, 1021, 979, 975, 972, 1025, 974, + 1027, 989, 975, 993, 992, 978, 993, 985, 981, 999, + 998, 985, 1002, 2527, 2527, 994, 1041, 994, 2527, 1002, + 1005, 998, 1051, 999, 2527, 1002, 1007, 1051, 1002, 1003, + 1015, 1009, 1010, 1008, 1019, 1064, 1008, 1009, 1067, 1068, + 1012, 1024, 1017, 2527, 1013, 1021, 1020, 1071, 1013, 1034, + + 1020, 1021, 1022, 1028, 1036, 1027, 1041, 1042, 1043, 1059, + 1064, 1046, 1051, 1034, 1034, 2527, 1035, 1037, 1048, 1038, + 1058, 1057, 1048, 1059, 1102, 1044, 1064, 1057, 1061, 1065, + 1048, 1065, 1056, 1111, 1058, 1062, 2527, 1109, 1058, 1078, + 1060, 1060, 1081, 1078, 1118, 1067, 1085, 1086, 1072, 1080, + 1089, 1069, 1084, 1091, 1133, 1134, 2527, 1087, 1136, 1137, + 1079, 1089, 1099, 1083, 1103, 1086, 1088, 1088, 1095, 1104, + 1092, 1099, 1094, 1101, 1113, 1154, 1101, 1100, 1117, 1158, + 1108, 1112, 1110, 1108, 1103, 1164, 1115, 1166, 1116, 1168, + 1164, 1170, 1123, 2527, 1112, 1129, 1122, 1113, 1132, 1126, + + 1121, 1131, 1132, 1129, 1141, 2527, 1125, 1121, 2527, 2527, + 1127, 1187, 1146, 1127, 1146, 1147, 1149, 1188, 1141, 1195, + 1196, 1149, 1147, 1145, 1156, 1138, 1143, 1149, 1183, 1174, + 1206, 1161, 1161, 1165, 1210, 1153, 1153, 1156, 1173, 1168, + 1172, 1167, 2527, 1164, 1160, 1177, 1157, 1178, 1168, 1219, + 1172, 2527, 1185, 1184, 1187, 1171, 1180, 1184, 1190, 1176, + 1236, 1189, 1194, 1181, 1192, 1184, 1190, 1186, 1204, 1205, + 1206, 2527, 2527, 1204, 2527, 1206, 2527, 1191, 1202, 1193, + 1212, 1205, 1203, 1255, 1212, 1209, 1253, 1217, 1206, 1213, + 1218, 1215, 1221, 2527, 1214, 1206, 1267, 2527, 1268, 1215, + + 1222, 1266, 1228, 2527, 1229, 2527, 1226, 2527, 1217, 2527, + 1217, 1218, 1221, 1235, 1240, 1223, 1234, 1283, 1240, 1241, + 1281, 1237, 1288, 1284, 1290, 2527, 1241, 1238, 1293, 1294, + 1251, 1252, 1254, 2527, 2527, 1246, 1294, 1243, 1259, 1243, + 1255, 1244, 1275, 1306, 2527, 1263, 1254, 1265, 2527, 1310, + 1247, 1258, 1273, 1309, 1261, 1272, 1260, 1274, 1275, 1272, + 1316, 1279, 1269, 1279, 1285, 1273, 1273, 1328, 1324, 1325, + 1331, 1288, 2527, 1291, 1290, 1292, 1285, 1294, 1296, 1293, + 1283, 1286, 1286, 1345, 1292, 1347, 1294, 1349, 1292, 1297, + 1352, 2527, 1310, 1290, 1305, 1298, 1301, 1314, 1317, 1316, + + 1314, 1363, 1317, 2527, 2527, 1313, 1323, 1308, 1364, 1311, + 1326, 1312, 1373, 1374, 1375, 1319, 1329, 1378, 1335, 2527, + 1327, 1328, 1330, 1383, 1326, 2527, 1343, 2527, 1342, 1332, + 2527, 2527, 1345, 1328, 1348, 1349, 1336, 1395, 1345, 1397, + 1346, 1340, 1379, 2527, 1401, 1351, 1398, 2527, 1346, 1405, + 1355, 1349, 1346, 1349, 1351, 1347, 1369, 1408, 1361, 1373, + 1376, 1364, 1367, 1360, 1420, 1368, 2527, 1365, 1365, 2527, + 1367, 1426, 1379, 1370, 1385, 1385, 1388, 1388, 1385, 1429, + 1391, 2527, 1383, 2527, 1384, 2527, 1394, 1386, 2527, 1435, + 1397, 1398, 1395, 1439, 1387, 1402, 1442, 1404, 1396, 2527, + + 1393, 1393, 1399, 1398, 1396, 1450, 1412, 1412, 2527, 2527, + 2527, 1453, 1400, 2527, 1417, 1402, 1403, 1409, 2527, 1418, + 1465, 1413, 1405, 1411, 1421, 1433, 1426, 1432, 1422, 1429, + 2527, 1438, 2527, 1435, 1480, 1455, 2527, 1439, 1424, 1484, + 2527, 1485, 1442, 1447, 1429, 1489, 1490, 1486, 1450, 1447, + 1443, 1436, 1491, 1449, 1450, 2527, 1440, 1456, 1454, 1502, + 2527, 1441, 1500, 1463, 1459, 1504, 1452, 1457, 1455, 1514, + 1470, 1458, 1517, 1513, 1468, 1520, 1481, 1470, 1464, 1524, + 1466, 1475, 1468, 1482, 1485, 1530, 1472, 1489, 1485, 1483, + 1476, 1491, 1475, 1533, 1534, 1535, 1536, 1499, 1492, 1491, + + 1491, 1486, 2527, 1494, 1500, 1491, 1492, 1491, 1493, 1548, + 1494, 1490, 1508, 1557, 2527, 1527, 1559, 1512, 2527, 2527, + 1503, 1514, 1563, 2527, 2527, 1509, 1514, 1512, 1562, 1520, + 1525, 1513, 1529, 1519, 1517, 1517, 1519, 2527, 1577, 1523, + 1574, 1517, 1522, 1583, 1531, 1541, 1543, 2527, 1588, 1541, + 1585, 2527, 1536, 1544, 2527, 1535, 1550, 1538, 2527, 1548, + 1549, 1550, 1599, 1557, 2527, 1596, 1562, 1538, 1556, 1557, + 1558, 1567, 1549, 1555, 1557, 1569, 1568, 1559, 1609, 1561, + 1557, 1558, 1559, 1614, 1620, 1570, 1622, 1575, 1565, 1581, + 1574, 2527, 1627, 2527, 1576, 1629, 1571, 2527, 1574, 1584, + + 1628, 1576, 1591, 1578, 1593, 1579, 1586, 1586, 1597, 1598, + 2527, 1592, 1587, 1586, 1646, 1599, 2527, 1643, 1594, 1591, + 2527, 1605, 1592, 1613, 1609, 1611, 1656, 1609, 1606, 1614, + 1608, 2527, 1661, 1602, 1604, 1620, 1613, 1614, 1604, 1620, + 1621, 1615, 1631, 1621, 1673, 1633, 1617, 1626, 1672, 1630, + 1679, 1628, 2527, 1622, 2527, 1629, 1683, 1684, 1681, 2527, + 1643, 2527, 1683, 1645, 1646, 1631, 1632, 1640, 1694, 1642, + 1691, 1692, 1647, 1642, 1660, 1657, 1648, 1655, 2527, 1652, + 1657, 1655, 1707, 1708, 1656, 1653, 1667, 1654, 2527, 1669, + 1670, 1671, 1672, 2527, 1662, 1674, 1719, 1672, 1677, 1722, + + 1664, 1672, 1666, 1674, 1687, 2527, 1688, 1669, 1670, 1677, + 1679, 2527, 1693, 1690, 1730, 1691, 2527, 2527, 1695, 1680, + 1680, 1695, 1688, 1687, 1698, 1685, 2527, 1701, 1689, 1692, + 1748, 1688, 1707, 1698, 1710, 1701, 1710, 1712, 1716, 2527, + 2527, 1709, 1700, 1700, 1760, 1703, 1762, 1704, 1764, 1722, + 1766, 2527, 1708, 1768, 2527, 1764, 1726, 1723, 1728, 1715, + 1723, 1734, 1721, 1732, 1718, 1716, 1724, 1723, 1728, 1720, + 1785, 1738, 1739, 1729, 1746, 1745, 1786, 1730, 1749, 1750, + 2527, 1755, 1748, 1797, 1754, 1755, 1800, 1757, 1760, 1747, + 1756, 1757, 2527, 1806, 2527, 1759, 2527, 1768, 2527, 1809, + + 2527, 1751, 1811, 1758, 1813, 1756, 1815, 1763, 1812, 1813, + 1775, 1815, 1761, 1765, 1783, 1824, 1783, 2527, 1774, 1764, + 1823, 1789, 1782, 1778, 1832, 1775, 1777, 1776, 1783, 2527, + 1779, 1781, 2527, 1786, 1796, 1781, 1789, 1791, 2527, 1792, + 1786, 2527, 1798, 2527, 1794, 2527, 1804, 2527, 1805, 1805, + 1796, 1852, 1796, 1806, 1791, 1804, 2527, 1806, 1814, 1859, + 1800, 1802, 1799, 1823, 2527, 1810, 1817, 1818, 1821, 1810, + 1864, 1811, 1819, 1828, 1827, 1830, 1831, 1832, 1825, 1820, + 1821, 1821, 1833, 1828, 2527, 1839, 1827, 1880, 1831, 1843, + 1888, 2527, 1834, 1846, 1891, 1840, 1842, 1840, 1841, 1896, + + 1849, 1836, 1851, 1856, 1901, 1902, 1903, 1904, 1905, 1862, + 1907, 1908, 1909, 1853, 1857, 1853, 1869, 1852, 1864, 1858, + 2527, 1874, 1918, 2527, 1875, 1860, 1878, 1869, 2527, 1870, + 1884, 1880, 1873, 2527, 2527, 2527, 2527, 2527, 1927, 2527, + 2527, 2527, 1870, 1878, 1873, 1926, 1892, 1889, 1934, 1895, + 2527, 1936, 1878, 1938, 1881, 1894, 1893, 1894, 1884, 2527, + 1885, 1945, 1898, 1907, 1900, 1944, 2527, 1891, 2527, 1903, + 2527, 1947, 1953, 1895, 1911, 1956, 1957, 2527, 1914, 1908, + 1901, 1921, 1918, 1910, 1914, 2527, 1961, 1910, 2527, 2527, + 1910, 1918, 1965, 1925, 1918, 1973, 1921, 1921, 1917, 1919, + + 1978, 1979, 1921, 1937, 1922, 2527, 1983, 1930, 1937, 1986, + 2527, 2527, 1939, 1988, 1936, 2527, 1940, 1939, 2527, 1940, + 2527, 1934, 1934, 1951, 1952, 1997, 1943, 1999, 2000, 2527, + 2001, 2527, 2527, 2527, 2527, 2007, 2010, 2013, 2014, 2016, + 2019, 2022, 2025 } ; -static const flex_int16_t yy_def[2105] = +static const flex_int16_t yy_def[2144] = { 0, - 2097, 2097, 2098, 2098, 2097, 2097, 2097, 2097, 2097, 2097, - 2096, 2096, 2096, 2096, 2096, 2099, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2100, - 2096, 2096, 2096, 2101, 15, 2096, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2102, 45, 45, 45, + 2136, 2136, 2137, 2137, 2136, 2136, 2136, 2136, 2136, 2136, + 2135, 2135, 2135, 2135, 2135, 2138, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2139, + 2135, 2135, 2135, 2140, 15, 2135, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2141, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2099, 2096, 2096, - 2096, 2096, 2096, 2096, 2103, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2100, 2096, 2101, 2096, + 45, 45, 45, 45, 45, 45, 45, 45, 2138, 2135, + 2135, 2135, 2135, 2135, 2135, 2142, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2139, 2135, 2140, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2104, 45, 2102, 45, 45, 45, 45, 45, + 2135, 2135, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2143, 45, 2141, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2103, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 45, 45, 2096, 45, 45, 2096, 45, + 45, 45, 45, 45, 45, 45, 45, 2142, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 45, 45, 2135, 45, - 45, 45, 45, 45, 45, 2104, 2096, 2096, 115, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2135, 45, 45, 45, 45, 45, 45, 2143, 2135, + 2135, 116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1251,224 +1259,228 @@ static const flex_int16_t yy_def[2105] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 45, - 45, 45, 45, 2096, 45, 2096, 45, 2096, 45, 115, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 45, 45, 45, 45, 2135, 45, + 2135, 45, 2135, 45, 116, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 2096, 2096, 45, 45, 45, 2096, 45, - 2096, 45, 115, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 2096, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 2135, 2135, 45, 45, 45, 2135, 45, 2135, 45, 116, + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 45, 2096, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2135, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2096, - 45, 2096, 45, 2096, 45, 2096, 45, 45, 2096, 45, - 2096, 2096, 2096, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, + 2135, 45, 2135, 45, 2135, 45, 45, 45, 2135, 45, + 2135, 2135, 2135, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 2096, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 45, 2096, 45, 45, 45, + 45, 45, 45, 2135, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2096, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2135, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2096, - + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, + 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 2096, 45, 45, 45, + 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 2096, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2135, 2135, 45, 45, 45, 45, 45, 45, 45, + 2135, 2135, 45, 45, 45, 45, 45, 2135, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2135, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, - + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 2096, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 2096, 45, 45, 45, 2096, - 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2135, 2135, 45, 45, 45, 2135, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 45, 45, 2096, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 2135, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2096, 2096, 45, 2096, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2096, 45, - 45, 45, 2096, 45, 45, 45, 45, 45, 2096, 45, - 2096, 45, 2096, 45, 2096, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2096, - - 45, 45, 45, 45, 45, 45, 45, 2096, 2096, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, + 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, + 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 2096, 45, 45, 45, + 45, 2135, 2135, 45, 2135, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 2096, 45, 2096, 45, + 45, 45, 45, 2135, 45, 45, 45, 2135, 45, 45, - 45, 2096, 2096, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 45, 45, 45, 2096, 45, 45, 45, + 45, 45, 45, 2135, 45, 2135, 45, 2135, 45, 2135, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, + 45, 45, 45, 2135, 2135, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 2135, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 45, 45, 2096, 45, + 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 2096, 45, 2096, 45, 45, 2096, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2096, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 2096, 45, - 45, 2096, 45, 45, 45, 45, 2096, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 2096, + 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 45, 45, 45, 2096, 45, 45, 45, + 45, 45, 45, 2135, 2135, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 45, 45, 45, 45, 45, 2135, 45, 2135, 45, 45, + 2135, 2135, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2135, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 2096, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2135, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2135, 45, 2135, 45, 2135, 45, 45, 2135, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 2135, + 2135, 45, 45, 2135, 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2135, 45, 2135, 45, 45, 45, 2135, 45, 45, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 2096, 45, 45, 45, 2096, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 2096, 45, 45, 2096, 45, - 45, 45, 2096, 45, 45, 45, 45, 45, 2096, 45, + 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 2135, 2135, + 45, 45, 45, 2135, 2135, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, + 45, 2135, 45, 45, 2135, 45, 45, 45, 2135, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 45, 2096, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 45, 45, 45, 45, 2096, - 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, + 45, 2135, 45, 2135, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 45, 2096, 45, 45, - 45, 2096, 45, 2096, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 2096, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, - 45, 45, 45, 2096, 45, 45, 45, 45, 2096, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, + 2135, 45, 45, 45, 45, 45, 2135, 45, 45, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 2096, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 45, 45, 2096, 45, 45, 45, 45, + 45, 45, 2135, 45, 2135, 45, 45, 45, 45, 2135, + 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2135, 45, + 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, + 45, 2135, 45, 45, 45, 45, 2135, 2135, 45, 45, + 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2135, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2096, 45, 2096, 45, 2096, 45, 2096, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2096, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2135, 45, 2135, 45, 2135, 45, 2135, 45, + + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2135, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 45, 45, 2135, 45, 45, 45, 45, 45, 2135, 45, + 45, 2135, 45, 2135, 45, 2135, 45, 2135, 45, 45, + 45, 45, 45, 45, 45, 45, 2135, 45, 45, 45, + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 2096, 45, 45, 45, 45, 45, 2096, + 45, 45, 45, 45, 2135, 45, 45, 45, 45, 45, + 45, 2135, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2096, 45, 2096, 45, 2096, 45, 2096, 45, - 45, 45, 45, 45, 45, 45, 45, 2096, 45, 45, - 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2096, 45, 45, 45, 45, - 45, 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2135, 45, 45, 2135, 45, 45, 45, 45, 2135, 45, + 45, 45, 45, 2135, 2135, 2135, 2135, 2135, 45, 2135, + 2135, 2135, 45, 45, 45, 45, 45, 45, 45, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 45, 45, 45, 45, 45, 45, 2135, 45, 2135, 45, + 2135, 45, 45, 45, 45, 45, 45, 2135, 45, 45, + 45, 45, 45, 45, 45, 2135, 45, 45, 2135, 2135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 2096, 45, 45, 45, 45, 2096, - 45, 45, 45, 45, 2096, 2096, 2096, 2096, 2096, 45, - - 2096, 2096, 2096, 45, 45, 45, 45, 45, 45, 45, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 45, 45, 45, 45, 45, 2096, 45, 2096, - 45, 2096, 45, 45, 45, 45, 45, 45, 2096, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 2096, - 2096, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2096, 45, 45, 45, - 45, 2096, 2096, 45, 45, 45, 2096, 45, 45, 2096, - 45, 2096, 45, 45, 45, 45, 45, 45, 45, 45, - 2096, 45, 2096, 2096, 2096, 0, 2096, 2096, 2096, 2096, - - 2096, 2096, 2096, 2096 + + 45, 45, 45, 45, 45, 2135, 45, 45, 45, 45, + 2135, 2135, 45, 45, 45, 2135, 45, 45, 2135, 45, + 2135, 45, 45, 45, 45, 45, 45, 45, 45, 2135, + 45, 2135, 2135, 2135, 0, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135 } ; -static const flex_int16_t yy_nxt[2559] = +static const flex_int16_t yy_nxt[2601] = { 0, - 2096, 13, 14, 13, 2096, 15, 16, 2096, 17, 18, + 2135, 13, 14, 13, 2135, 15, 16, 2135, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, - 84, 788, 37, 14, 37, 85, 25, 26, 38, 100, - 853, 27, 37, 14, 37, 42, 28, 42, 38, 90, - 91, 29, 198, 30, 13, 14, 13, 89, 90, 25, - 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, - 789, 13, 14, 13, 33, 40, 101, 90, 91, 198, - 89, 34, 35, 13, 14, 13, 93, 15, 16, 94, + 85, 801, 37, 14, 37, 86, 25, 26, 38, 101, + 2135, 27, 37, 14, 37, 42, 28, 42, 38, 91, + 92, 29, 201, 30, 13, 14, 13, 90, 91, 25, + 31, 92, 13, 14, 13, 13, 14, 13, 32, 40, + 802, 13, 14, 13, 33, 40, 102, 91, 92, 201, + 90, 34, 35, 13, 14, 13, 94, 15, 16, 95, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, - 23, 24, 13, 14, 13, 89, 39, 102, 25, 26, + 23, 24, 13, 14, 13, 90, 39, 103, 25, 26, - 13, 14, 13, 27, 39, 42, 105, 42, 28, 42, - 106, 42, 41, 29, 108, 30, 111, 112, 92, 136, - 41, 25, 31, 102, 137, 372, 87, 138, 87, 105, - 32, 88, 88, 88, 88, 88, 33, 108, 106, 111, - 854, 112, 373, 34, 35, 44, 44, 44, 45, 45, + 13, 14, 13, 27, 39, 42, 106, 42, 28, 42, + 107, 42, 41, 29, 109, 30, 112, 113, 93, 137, + 41, 25, 31, 103, 138, 377, 88, 139, 88, 106, + 32, 89, 89, 89, 89, 89, 33, 109, 107, 112, + 857, 113, 378, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 45, 45, 48, 49, 50, 45, 51, 52, 53, 45, 45, 45, @@ -1476,284 +1488,289 @@ static const flex_int16_t yy_nxt[2559] = 58, 45, 59, 60, 61, 62, 63, 64, 65, 51, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 56, 45, 45, 45, 45, 45, 79, 202, - 80, 80, 80, 80, 80, 79, 102, 82, 82, 82, - 82, 82, 446, 81, 83, 83, 83, 83, 83, 79, - 81, 82, 82, 82, 82, 82, 202, 81, 186, 187, - 109, 118, 116, 130, 81, 119, 81, 105, 117, 120, - 110, 446, 121, 81, 124, 122, 131, 125, 126, 123, - 81, 127, 128, 109, 186, 187, 132, 81, 45, 108, - 105, 45, 45, 45, 129, 45, 45, 45, 110, 114, - 134, 133, 45, 45, 469, 45, 45, 135, 152, 470, - - 153, 45, 154, 45, 45, 45, 45, 45, 45, 45, + 76, 77, 78, 45, 45, 45, 45, 45, 80, 205, + 81, 81, 81, 81, 81, 80, 103, 83, 83, 83, + 83, 83, 453, 82, 84, 84, 84, 84, 84, 80, + 82, 83, 83, 83, 83, 83, 205, 82, 189, 190, + 110, 119, 117, 131, 82, 120, 82, 106, 118, 121, + 111, 453, 122, 82, 125, 123, 132, 126, 127, 124, + 82, 128, 129, 110, 189, 190, 133, 82, 45, 109, + 106, 45, 45, 45, 130, 45, 45, 45, 111, 115, + 135, 134, 45, 45, 331, 45, 45, 136, 153, 440, + + 154, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 188, 139, 45, 166, 143, 144, - 45, 167, 145, 256, 45, 140, 147, 141, 146, 855, - 148, 186, 45, 155, 149, 204, 45, 100, 45, 115, - 111, 156, 188, 157, 257, 235, 150, 188, 158, 159, - 151, 160, 168, 187, 161, 162, 169, 189, 236, 170, - 175, 176, 204, 111, 205, 163, 171, 172, 164, 194, - 109, 173, 174, 182, 101, 191, 197, 201, 183, 190, - 110, 83, 83, 83, 83, 83, 79, 205, 80, 80, - - 80, 80, 80, 109, 81, 177, 281, 194, 178, 179, - 282, 81, 197, 856, 87, 201, 87, 99, 180, 88, - 88, 88, 88, 88, 99, 181, 79, 81, 82, 82, - 82, 82, 82, 203, 81, 83, 83, 83, 83, 83, - 194, 81, 88, 88, 88, 88, 88, 199, 81, 88, - 88, 88, 88, 88, 99, 857, 213, 210, 99, 237, - 246, 203, 99, 219, 81, 214, 201, 251, 211, 215, - 99, 81, 220, 221, 99, 238, 99, 99, 200, 208, - 252, 266, 225, 226, 232, 315, 233, 209, 209, 209, - 209, 209, 227, 284, 264, 271, 209, 209, 209, 209, - - 209, 209, 241, 234, 247, 242, 203, 313, 315, 243, - 272, 273, 274, 277, 313, 315, 278, 279, 395, 209, - 209, 209, 209, 209, 209, 314, 314, 267, 285, 286, - 287, 300, 294, 320, 308, 313, 295, 322, 318, 288, - 296, 289, 316, 290, 291, 301, 292, 323, 325, 327, - 329, 314, 317, 320, 341, 343, 320, 342, 415, 858, - 325, 416, 576, 344, 381, 322, 450, 577, 396, 345, - 327, 325, 327, 443, 323, 399, 332, 329, 330, 330, - 330, 330, 330, 390, 430, 400, 431, 330, 330, 330, - 330, 330, 330, 327, 450, 443, 443, 475, 448, 446, - - 508, 509, 510, 476, 536, 734, 511, 438, 735, 520, - 330, 330, 330, 330, 330, 330, 610, 382, 444, 521, - 383, 448, 453, 453, 453, 453, 453, 859, 454, 611, - 692, 453, 453, 453, 453, 453, 453, 491, 515, 450, - 580, 540, 492, 549, 516, 541, 558, 550, 621, 584, - 559, 585, 580, 622, 453, 453, 453, 453, 453, 453, - 645, 601, 537, 860, 712, 713, 837, 522, 580, 602, - 646, 603, 604, 605, 684, 606, 584, 715, 585, 685, - 586, 711, 693, 861, 716, 862, 714, 764, 765, 828, - 493, 712, 838, 713, 837, 494, 45, 45, 45, 45, - - 45, 829, 863, 864, 865, 45, 45, 45, 45, 45, - 45, 800, 866, 867, 868, 838, 801, 849, 850, 869, - 851, 870, 874, 875, 876, 877, 878, 879, 45, 45, - 45, 45, 45, 45, 871, 880, 881, 882, 872, 883, - 884, 885, 873, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 802, 898, 899, 900, 901, - 903, 904, 902, 905, 906, 907, 908, 909, 910, 911, - 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, - 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, - 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, - - 942, 943, 944, 946, 947, 950, 951, 952, 953, 945, - 955, 948, 956, 957, 954, 949, 958, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, - 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, - 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 967, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1013, 1014, 1015, 1016, 1012, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1039, 1040, 1041, - - 1038, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, - 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, - 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, - 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, - 1070, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, - 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, - 1111, 1089, 1112, 1113, 1088, 1114, 1115, 1116, 1117, 1118, - 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, - 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1138, 1139, 1140, - - 1141, 1136, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, - 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, - 1160, 1161, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 1162, 1173, 1174, 1175, 1176, 1177, 1178, 1179, - 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, - 1190, 1191, 1192, 1193, 1137, 1194, 1195, 1196, 1197, 1198, - 1199, 1200, 1201, 1202, 1203, 1204, 1206, 1205, 1207, 1208, - 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, - 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, - 1229, 1230, 1231, 1204, 1205, 1232, 1233, 1234, 1235, 1236, - - 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, - 1247, 1248, 1249, 1250, 1252, 1254, 1255, 1256, 1251, 1257, - 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, - 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, - 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, - 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1253, 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, 1315, 1338, 1339, 1340, 1341, 1342, 1316, 1343, 1344, - 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, - 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, - 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, - 1416, 1417, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, - 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, - - 1437, 1438, 1439, 1440, 1412, 1441, 1442, 1443, 1444, 1445, - 1446, 1447, 1395, 1448, 1449, 1450, 1451, 1452, 1453, 1454, - 1455, 1456, 1457, 1458, 1459, 1418, 1460, 1461, 1463, 1464, - 1465, 1466, 1467, 1468, 1469, 1462, 1470, 1471, 1472, 1473, - 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, - 1484, 1485, 1486, 1487, 1489, 1490, 1492, 1491, 1488, 1493, - 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, - 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, - 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, - 1524, 1502, 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, 1569, 1566, 1570, 1571, 1567, 1572, 1573, - 1568, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, - 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1593, - 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1592, - 1603, 1604, 1605, 1606, 1580, 1607, 1608, 1609, 1610, 1611, - 1612, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, - 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, - - 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, - 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, - 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, - 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1613, 1671, - 1672, 1673, 1674, 1676, 1677, 1678, 1679, 1675, 1680, 1681, - 1682, 1656, 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, - - 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, - 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, - 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, - 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, - 1771, 1772, 1773, 1774, 1775, 1777, 1778, 1779, 1780, 1776, - 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, - 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, - 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, - 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, - 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, - - 1831, 1832, 1833, 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, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, - 1871, 1872, 1873, 1874, 1876, 1877, 1875, 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, 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, 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, 1988, 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, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, - - 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, - 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, - 2051, 2052, 2053, 2054, 2055, 2057, 2056, 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, 12, 12, 12, 36, 36, - 36, 78, 97, 78, 99, 99, 99, 113, 113, 113, - 185, 852, 185, 206, 206, 206, 848, 847, 846, 845, - 844, 843, 842, 841, 840, 839, 836, 835, 834, 833, - - 832, 831, 830, 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, 799, 798, - 797, 796, 795, 794, 793, 792, 791, 790, 787, 786, - 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, - 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, - 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, - 753, 752, 751, 750, 749, 748, 747, 746, 745, 744, - 743, 742, 741, 740, 739, 738, 737, 736, 733, 732, - 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, - - 721, 720, 719, 718, 717, 711, 710, 709, 708, 707, - 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, - 696, 695, 694, 691, 690, 689, 688, 687, 686, 683, - 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, - 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, - 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, - 652, 651, 650, 649, 648, 647, 644, 643, 642, 641, - 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, - 630, 629, 628, 627, 626, 625, 624, 623, 620, 619, - 618, 617, 616, 615, 614, 613, 612, 609, 608, 607, - - 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, - 590, 589, 588, 587, 583, 582, 581, 579, 578, 575, - 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, - 564, 563, 562, 561, 560, 557, 556, 555, 554, 553, - 552, 551, 548, 547, 546, 545, 544, 543, 542, 539, - 538, 535, 534, 533, 532, 531, 530, 529, 528, 527, - 526, 525, 524, 523, 519, 518, 517, 514, 513, 512, - 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, - 497, 496, 495, 490, 489, 488, 487, 486, 485, 484, - 483, 482, 481, 480, 479, 478, 477, 474, 473, 472, - - 471, 468, 467, 466, 465, 464, 463, 462, 461, 460, - 459, 458, 457, 456, 455, 452, 451, 449, 447, 445, - 442, 441, 440, 439, 437, 436, 435, 434, 433, 432, - 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, - 419, 418, 417, 414, 413, 412, 411, 410, 409, 408, - 407, 406, 405, 404, 403, 402, 401, 398, 397, 394, - 393, 392, 391, 389, 388, 387, 386, 385, 384, 380, - 379, 378, 377, 376, 375, 374, 371, 370, 369, 368, - 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, - 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, - - 347, 346, 340, 339, 338, 337, 336, 335, 334, 333, - 331, 207, 328, 326, 324, 321, 319, 312, 311, 310, - 309, 307, 306, 305, 304, 303, 302, 299, 298, 297, - 293, 283, 280, 276, 275, 270, 269, 268, 265, 263, - 262, 261, 260, 259, 258, 255, 254, 253, 250, 249, - 248, 245, 244, 240, 239, 231, 230, 229, 228, 224, - 223, 222, 218, 217, 216, 212, 207, 196, 195, 193, - 192, 184, 165, 142, 107, 104, 103, 43, 98, 96, - 95, 86, 43, 2096, 11, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096 + 45, 45, 45, 45, 191, 140, 45, 167, 144, 145, + 45, 168, 146, 113, 45, 141, 148, 142, 147, 240, + 149, 202, 45, 156, 150, 208, 45, 207, 45, 116, + 112, 157, 191, 158, 703, 241, 151, 113, 159, 160, + 152, 161, 169, 189, 162, 163, 170, 187, 208, 171, + 176, 177, 203, 112, 207, 164, 172, 173, 165, 191, + 110, 174, 175, 184, 190, 197, 200, 101, 185, 192, + 111, 84, 84, 84, 84, 84, 80, 858, 81, 81, + + 81, 81, 81, 178, 82, 179, 704, 194, 180, 181, + 193, 82, 200, 197, 88, 859, 88, 249, 182, 89, + 89, 89, 89, 89, 102, 183, 80, 82, 83, 83, + 83, 83, 83, 100, 82, 84, 84, 84, 84, 84, + 100, 82, 89, 89, 89, 89, 89, 204, 82, 89, + 89, 89, 89, 89, 206, 197, 216, 222, 228, 229, + 235, 250, 236, 238, 82, 217, 223, 224, 230, 218, + 100, 82, 213, 204, 100, 204, 239, 244, 100, 237, + 245, 269, 206, 214, 246, 254, 100, 259, 777, 778, + 100, 284, 100, 100, 211, 285, 280, 860, 255, 281, + + 282, 267, 212, 212, 212, 212, 212, 274, 260, 287, + 320, 212, 212, 212, 212, 212, 212, 297, 303, 320, + 205, 298, 275, 276, 277, 299, 206, 270, 318, 325, + 318, 386, 304, 320, 212, 212, 212, 212, 212, 212, + 319, 319, 323, 327, 288, 289, 290, 308, 328, 330, + 332, 334, 325, 325, 312, 291, 318, 292, 321, 293, + 294, 346, 295, 435, 347, 436, 319, 322, 400, 861, + 862, 327, 330, 332, 330, 328, 337, 457, 334, 335, + 335, 335, 335, 335, 387, 404, 348, 388, 335, 335, + 335, 335, 335, 335, 349, 405, 420, 395, 332, 421, + + 350, 450, 450, 455, 453, 457, 543, 553, 863, 527, + 655, 335, 335, 335, 335, 335, 335, 476, 401, 528, + 656, 332, 477, 482, 450, 451, 455, 498, 522, 483, + 457, 620, 499, 461, 523, 444, 460, 460, 460, 460, + 460, 864, 868, 869, 621, 460, 460, 460, 460, 460, + 460, 515, 516, 517, 590, 547, 554, 518, 529, 548, + 590, 557, 566, 725, 544, 558, 567, 870, 460, 460, + 460, 460, 460, 460, 585, 594, 871, 595, 631, 586, + 500, 611, 590, 632, 726, 501, 842, 872, 596, 612, + 725, 613, 614, 615, 695, 616, 724, 747, 843, 696, + + 748, 727, 594, 728, 595, 45, 45, 45, 45, 45, + 729, 854, 726, 873, 45, 45, 45, 45, 45, 45, + 813, 853, 874, 865, 866, 814, 867, 875, 876, 877, + 878, 879, 880, 881, 854, 882, 883, 45, 45, 45, + 45, 45, 45, 884, 885, 886, 887, 890, 891, 853, + 888, 892, 893, 894, 889, 895, 896, 897, 898, 899, + 900, 901, 902, 903, 815, 904, 905, 906, 907, 908, + 909, 910, 911, 912, 913, 914, 915, 916, 917, 919, + 920, 918, 921, 922, 923, 924, 925, 926, 927, 928, + 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, + + 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, + 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, + 959, 960, 961, 963, 964, 967, 968, 969, 970, 962, + 972, 965, 973, 974, 971, 966, 975, 976, 977, 978, + 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1009, 1010, 1011, 1012, 1013, 986, 1014, 1015, 1016, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 1032, 1033, 1034, 1035, 1031, 1036, 1037, + + 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, + 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1058, + 1059, 1060, 1057, 1061, 1062, 1063, 1064, 1065, 1066, 1067, + 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, + 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, + 1088, 1089, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, + 1099, 1100, 1101, 1090, 1102, 1103, 1104, 1105, 1106, 1107, + 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, + 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1111, 1134, 1135, 1110, + + 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, + 1156, 1157, 1160, 1161, 1162, 1163, 1158, 1164, 1165, 1166, + 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, + 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1185, 1186, 1187, + 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1184, 1195, 1196, + 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1159, + 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, + 1226, 1227, 1228, 1229, 1231, 1230, 1232, 1233, 1234, 1235, + + 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, + 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, + 1256, 1229, 1230, 1257, 1258, 1259, 1260, 1261, 1262, 1263, + 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, + 1274, 1275, 1277, 1279, 1280, 1281, 1276, 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, 1311, 1312, 1313, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1278, 1321, 1322, 1323, + 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, + + 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, + 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, + 1364, 1365, 1343, 1366, 1367, 1368, 1369, 1370, 1344, 1371, + 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, + 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, + 1422, 1423, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, + + 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, + 1443, 1444, 1445, 1446, 1447, 1448, 1450, 1451, 1452, 1453, + 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, + 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1443, 1472, + 1473, 1474, 1475, 1476, 1424, 1477, 1478, 1479, 1480, 1481, + 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1449, + 1491, 1492, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1493, + 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, + 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, + 1522, 1524, 1523, 1520, 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, 1536, 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, + 1603, 1600, 1604, 1605, 1601, 1606, 1607, 1602, 1608, 1609, + 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, + 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1629, 1630, + + 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1628, 1639, + 1640, 1641, 1642, 1616, 1643, 1644, 1645, 1646, 1647, 1648, + 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, + 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, + 1670, 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, 1649, 1707, 1708, + 1709, 1710, 1711, 1713, 1714, 1715, 1716, 1712, 1717, 1718, + 1719, 1693, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, + + 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, + 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, + 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, + 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, + 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, + 1808, 1809, 1810, 1811, 1812, 1813, 1815, 1816, 1817, 1818, + 1814, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, + + 1828, 1829, 1830, 1831, 1832, 1833, 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, 1862, 1863, 1864, 1865, 1866, 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, 1915, 1916, 1914, 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, 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, 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, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, + 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, + + 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, + 2038, 2039, 2040, 2041, 2042, 2043, 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, 2096, 2095, 2097, + 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, + 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, + 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, + + 2128, 2129, 2130, 2131, 2132, 2133, 2134, 12, 12, 12, + 36, 36, 36, 79, 98, 79, 100, 100, 100, 114, + 114, 114, 188, 856, 188, 209, 209, 209, 855, 852, + 851, 850, 849, 848, 847, 846, 845, 844, 841, 840, + 839, 838, 837, 836, 835, 834, 833, 832, 831, 830, + 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, + 819, 818, 817, 816, 812, 811, 810, 809, 808, 807, + 806, 805, 804, 803, 800, 799, 798, 797, 796, 795, + 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, + 784, 783, 782, 781, 780, 779, 776, 775, 774, 773, + + 772, 771, 770, 769, 768, 767, 766, 765, 764, 763, + 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, + 752, 751, 750, 749, 746, 745, 744, 743, 742, 741, + 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, + 730, 724, 723, 722, 721, 720, 719, 718, 717, 716, + 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, + 705, 702, 701, 700, 699, 698, 697, 694, 693, 692, + 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, + 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, + 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, + + 661, 660, 659, 658, 657, 654, 653, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, + 639, 638, 637, 636, 635, 634, 633, 630, 629, 628, + 627, 626, 625, 624, 623, 622, 619, 618, 617, 610, + 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, + 599, 598, 597, 593, 592, 591, 589, 588, 587, 584, + 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, + 573, 572, 571, 570, 569, 568, 565, 564, 563, 562, + 561, 560, 559, 556, 555, 552, 551, 550, 549, 546, + 545, 542, 541, 540, 539, 538, 537, 536, 535, 534, + + 533, 532, 531, 530, 526, 525, 524, 521, 520, 519, + 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, + 504, 503, 502, 497, 496, 495, 494, 493, 492, 491, + 490, 489, 488, 487, 486, 485, 484, 481, 480, 479, + 478, 475, 474, 473, 472, 471, 470, 469, 468, 467, + 466, 465, 464, 463, 462, 459, 458, 456, 454, 452, + 449, 448, 447, 446, 445, 443, 442, 441, 439, 438, + 437, 434, 433, 432, 431, 430, 429, 428, 427, 426, + 425, 424, 423, 422, 419, 418, 417, 416, 415, 414, + 413, 412, 411, 410, 409, 408, 407, 406, 403, 402, + + 399, 398, 397, 396, 394, 393, 392, 391, 390, 389, + 385, 384, 383, 382, 381, 380, 379, 376, 375, 374, + 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, + 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, + 353, 352, 351, 345, 344, 343, 342, 341, 340, 339, + 338, 336, 210, 333, 331, 329, 326, 324, 317, 316, + 315, 314, 313, 311, 310, 309, 307, 306, 305, 302, + 301, 300, 296, 286, 283, 279, 278, 273, 272, 271, + 268, 266, 265, 264, 263, 262, 261, 258, 257, 256, + 253, 252, 251, 248, 247, 243, 242, 234, 233, 232, + + 231, 227, 226, 225, 221, 220, 219, 215, 210, 199, + 198, 196, 195, 186, 166, 143, 108, 105, 104, 43, + 99, 97, 96, 87, 43, 2135, 11, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135 + } ; -static const flex_int16_t yy_chk[2559] = +static const flex_int16_t yy_chk[2601] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 21, 662, 3, 3, 3, 21, 1, 1, 3, 44, - 726, 1, 4, 4, 4, 13, 1, 13, 4, 27, - 28, 1, 106, 1, 5, 5, 5, 26, 32, 1, + 21, 672, 3, 3, 3, 21, 1, 1, 3, 44, + 0, 1, 4, 4, 4, 13, 1, 13, 4, 27, + 28, 1, 107, 1, 5, 5, 5, 26, 32, 1, 1, 33, 6, 6, 6, 7, 7, 7, 1, 7, - 662, 8, 8, 8, 1, 8, 44, 27, 28, 106, + 672, 8, 8, 8, 1, 8, 44, 27, 28, 107, 26, 1, 1, 2, 2, 2, 32, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, 9, 31, 5, 47, 2, 2, 10, 10, 10, 2, 6, 37, 50, 37, 2, 42, 51, 42, 9, 2, 53, 2, 55, 56, 31, 64, - 10, 2, 2, 47, 64, 249, 25, 64, 25, 50, + 10, 2, 2, 47, 64, 252, 25, 64, 25, 50, 2, 25, 25, 25, 25, 25, 2, 53, 51, 55, - 727, 56, 249, 2, 2, 15, 15, 15, 15, 15, + 729, 56, 252, 2, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1761,264 +1778,269 @@ static const flex_int16_t yy_chk[2559] = 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 17, 109, + 15, 15, 15, 15, 15, 15, 15, 15, 17, 110, 17, 17, 17, 17, 17, 19, 58, 19, 19, 19, - 19, 19, 320, 17, 20, 20, 20, 20, 20, 22, - 19, 22, 22, 22, 22, 22, 109, 20, 89, 90, + 19, 19, 325, 17, 20, 20, 20, 20, 20, 22, + 19, 22, 22, 22, 22, 22, 110, 20, 90, 91, 54, 59, 58, 61, 22, 59, 17, 62, 58, 59, - 54, 320, 59, 19, 60, 59, 61, 60, 60, 59, - 20, 60, 60, 54, 89, 90, 61, 22, 45, 69, + 54, 325, 59, 19, 60, 59, 61, 60, 60, 59, + 20, 60, 60, 54, 90, 91, 61, 22, 45, 69, 62, 45, 45, 45, 60, 45, 45, 45, 54, 57, - 63, 62, 45, 45, 347, 45, 57, 63, 69, 347, + 63, 62, 45, 45, 308, 45, 57, 63, 69, 308, 69, 45, 69, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 91, 65, 57, 73, 67, 67, - 57, 73, 67, 147, 57, 65, 68, 65, 67, 728, - 68, 92, 57, 70, 68, 111, 57, 99, 57, 57, - 76, 70, 91, 70, 147, 132, 68, 94, 70, 70, - 68, 71, 74, 93, 71, 71, 74, 92, 132, 74, - 75, 75, 111, 76, 112, 71, 74, 74, 71, 102, - 75, 74, 74, 76, 99, 94, 105, 108, 76, 93, - 75, 79, 79, 79, 79, 79, 80, 112, 80, 80, - - 80, 80, 80, 75, 79, 75, 165, 102, 75, 75, - 165, 80, 105, 729, 81, 108, 81, 101, 75, 81, - 81, 81, 81, 81, 101, 75, 82, 79, 82, 82, - 82, 82, 82, 110, 80, 83, 83, 83, 83, 83, - 116, 82, 87, 87, 87, 87, 87, 107, 83, 88, - 88, 88, 88, 88, 101, 730, 118, 116, 101, 133, - 139, 110, 101, 122, 82, 118, 154, 143, 116, 118, - 101, 83, 122, 122, 101, 133, 101, 101, 107, 115, - 143, 156, 126, 126, 131, 188, 131, 115, 115, 115, - 115, 115, 126, 167, 154, 160, 115, 115, 115, 115, - - 115, 115, 136, 131, 139, 136, 180, 186, 188, 136, - 160, 160, 160, 163, 189, 191, 163, 163, 269, 115, - 115, 115, 115, 115, 115, 187, 190, 156, 167, 167, - 167, 173, 169, 194, 180, 186, 169, 197, 191, 167, - 169, 167, 189, 167, 167, 173, 167, 198, 201, 203, - 205, 187, 190, 211, 220, 221, 194, 220, 287, 731, - 264, 287, 441, 221, 257, 197, 325, 441, 269, 221, - 308, 201, 203, 313, 198, 272, 211, 205, 209, 209, - 209, 209, 209, 264, 301, 272, 301, 209, 209, 209, - 209, 209, 209, 308, 325, 316, 313, 352, 322, 332, - - 381, 381, 381, 352, 405, 606, 381, 308, 606, 389, - 209, 209, 209, 209, 209, 209, 475, 257, 316, 389, - 257, 322, 330, 330, 330, 330, 330, 732, 332, 475, - 558, 330, 330, 330, 330, 330, 330, 367, 385, 390, - 446, 408, 367, 416, 385, 408, 424, 416, 486, 452, - 424, 452, 454, 486, 330, 330, 330, 330, 330, 330, - 510, 471, 405, 733, 584, 585, 712, 390, 446, 471, - 510, 471, 471, 471, 551, 471, 452, 588, 452, 551, - 454, 586, 558, 734, 588, 735, 586, 637, 637, 702, - 367, 584, 713, 585, 712, 367, 453, 453, 453, 453, - - 453, 702, 736, 737, 738, 453, 453, 453, 453, 453, - 453, 674, 739, 740, 741, 713, 674, 724, 724, 742, - 724, 743, 745, 746, 747, 748, 749, 750, 453, 453, - 453, 453, 453, 453, 744, 751, 753, 754, 744, 755, - 756, 757, 744, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 674, 770, 771, 772, 773, - 774, 775, 773, 776, 778, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 789, 790, 791, 792, 793, 794, - 795, 796, 797, 798, 799, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - - 816, 817, 818, 819, 820, 821, 822, 823, 824, 818, - 825, 820, 826, 827, 824, 820, 829, 830, 831, 832, - 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 844, 845, 846, 848, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, - 864, 865, 866, 838, 867, 868, 869, 870, 871, 872, - 873, 874, 875, 876, 877, 879, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 884, 889, 890, 891, 892, - 893, 894, 895, 898, 899, 900, 901, 902, 903, 904, - 907, 908, 909, 910, 911, 913, 914, 915, 916, 917, - - 914, 918, 919, 920, 921, 923, 925, 926, 927, 928, - 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, - 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 959, - 947, 960, 961, 962, 963, 964, 965, 966, 967, 968, - 969, 970, 971, 973, 974, 975, 976, 977, 978, 979, - 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, - 990, 967, 991, 992, 966, 993, 994, 995, 996, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1020, - - 1021, 1016, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, - 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 1040, 1041, 1042, 1043, 1044, 1047, 1048, 1049, 1051, 1052, - 1053, 1054, 1041, 1056, 1057, 1058, 1059, 1060, 1061, 1062, - 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, - 1073, 1075, 1076, 1077, 1016, 1078, 1079, 1080, 1081, 1082, - 1083, 1084, 1085, 1086, 1087, 1088, 1090, 1089, 1091, 1092, - 1093, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, - 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, - 1114, 1116, 1117, 1088, 1089, 1118, 1119, 1120, 1121, 1122, - - 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, - 1133, 1134, 1136, 1137, 1138, 1139, 1140, 1141, 1137, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, - 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, - 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1173, - 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1138, 1182, - 1184, 1185, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, - - 1228, 1204, 1229, 1230, 1231, 1232, 1233, 1205, 1234, 1235, - 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, - 1246, 1249, 1251, 1253, 1254, 1255, 1256, 1257, 1258, 1259, - 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1270, - 1271, 1272, 1274, 1275, 1276, 1277, 1278, 1280, 1282, 1284, - 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 1299, 1301, 1302, 1303, 1304, 1305, 1306, - 1307, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1318, 1319, - 1320, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, - 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, - - 1341, 1342, 1343, 1344, 1315, 1346, 1347, 1348, 1349, 1350, - 1351, 1352, 1295, 1353, 1354, 1355, 1356, 1357, 1358, 1359, - 1360, 1361, 1362, 1363, 1365, 1322, 1366, 1367, 1368, 1369, - 1370, 1371, 1372, 1373, 1374, 1367, 1375, 1378, 1379, 1380, - 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, - 1392, 1393, 1394, 1395, 1396, 1398, 1400, 1398, 1395, 1401, - 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1414, - 1415, 1416, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, - 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, - 1437, 1412, 1438, 1440, 1441, 1442, 1443, 1444, 1445, 1446, - - 1447, 1448, 1449, 1450, 1452, 1454, 1456, 1457, 1459, 1460, - 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1470, 1471, - 1472, 1473, 1474, 1475, 1476, 1477, 1480, 1481, 1483, 1484, - 1485, 1486, 1488, 1489, 1488, 1490, 1491, 1488, 1492, 1493, - 1488, 1494, 1495, 1496, 1497, 1499, 1501, 1502, 1504, 1505, - 1506, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, - 1517, 1518, 1519, 1520, 1521, 1523, 1524, 1525, 1526, 1515, - 1528, 1529, 1530, 1531, 1502, 1532, 1533, 1534, 1535, 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, 1570, 1571, 1572, 1573, 1574, 1575, 1576, - 1577, 1578, 1579, 1580, 1581, 1582, 1585, 1586, 1587, 1590, - 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1536, 1599, - 1600, 1601, 1603, 1604, 1605, 1606, 1607, 1603, 1608, 1609, - 1610, 1580, 1611, 1613, 1614, 1615, 1617, 1618, 1620, 1621, - 1622, 1624, 1625, 1626, 1627, 1628, 1630, 1631, 1632, 1633, - 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, - 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, - 1654, 1656, 1658, 1659, 1660, 1662, 1663, 1664, 1665, 1666, - - 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1675, 1676, 1677, - 1678, 1679, 1681, 1682, 1683, 1685, 1686, 1687, 1688, 1689, - 1690, 1691, 1692, 1693, 1694, 1696, 1697, 1698, 1699, 1700, - 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, - 1711, 1712, 1713, 1714, 1715, 1717, 1719, 1720, 1721, 1715, - 1723, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, - 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1742, 1743, 1744, - 1745, 1746, 1747, 1748, 1749, 1750, 1752, 1753, 1754, 1755, - 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, - 1767, 1769, 1770, 1771, 1772, 1773, 1775, 1776, 1777, 1778, - - 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, - 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, - 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, - 1814, 1815, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, - 1825, 1826, 1827, 1828, 1829, 1830, 1828, 1831, 1832, 1833, - 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1843, 1844, - 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1855, - 1857, 1859, 1861, 1863, 1864, 1865, 1866, 1867, 1868, 1869, - 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1880, - 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, - - 1892, 1893, 1895, 1896, 1897, 1898, 1899, 1901, 1902, 1904, - 1906, 1908, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, - 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1927, 1928, 1929, - 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, - 1940, 1941, 1942, 1943, 1944, 1945, 1947, 1948, 1949, 1950, - 1951, 1952, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, - 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, - 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, - 1983, 1984, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1994, - 2000, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013, - - 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022, 2023, 2024, - 2025, 2026, 2027, 2029, 2031, 2033, 2034, 2035, 2036, 2037, - 2038, 2040, 2041, 2042, 2043, 2044, 2043, 2045, 2046, 2048, - 2049, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, - 2061, 2062, 2063, 2064, 2065, 2066, 2068, 2069, 2070, 2071, - 2074, 2075, 2076, 2078, 2079, 2081, 2083, 2084, 2085, 2086, - 2087, 2088, 2089, 2090, 2092, 2097, 2097, 2097, 2098, 2098, - 2098, 2099, 2100, 2099, 2101, 2101, 2101, 2102, 2102, 2102, - 2103, 725, 2103, 2104, 2104, 2104, 723, 722, 721, 720, - 719, 718, 717, 716, 715, 714, 709, 708, 707, 706, - - 705, 704, 703, 701, 700, 699, 697, 696, 695, 694, - 693, 692, 691, 690, 689, 688, 687, 686, 685, 683, - 682, 681, 680, 679, 678, 677, 676, 675, 673, 672, - 670, 669, 668, 667, 666, 665, 664, 663, 661, 660, - 659, 658, 656, 655, 653, 652, 651, 650, 649, 648, - 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, - 636, 635, 634, 633, 632, 631, 629, 628, 627, 626, - 625, 624, 623, 622, 620, 619, 618, 617, 616, 615, - 614, 613, 612, 611, 610, 609, 608, 607, 605, 604, - 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, - - 593, 592, 591, 590, 589, 580, 579, 578, 577, 575, - 573, 571, 569, 568, 567, 566, 565, 564, 563, 562, - 561, 560, 559, 557, 556, 555, 554, 553, 552, 550, - 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, - 539, 537, 535, 534, 533, 532, 531, 530, 529, 528, - 527, 526, 525, 524, 523, 522, 521, 520, 518, 517, - 516, 515, 514, 513, 512, 511, 509, 508, 507, 506, - 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, - 495, 494, 493, 492, 490, 489, 488, 487, 485, 484, - 483, 482, 481, 480, 479, 477, 476, 474, 473, 472, - - 470, 468, 467, 466, 465, 464, 463, 461, 460, 459, - 458, 457, 456, 455, 450, 448, 447, 445, 442, 440, - 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, - 429, 428, 427, 426, 425, 423, 422, 421, 420, 419, - 418, 417, 415, 414, 413, 412, 411, 410, 409, 407, - 406, 404, 403, 402, 401, 400, 399, 398, 397, 396, - 395, 394, 393, 392, 388, 387, 386, 384, 383, 382, - 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, - 370, 369, 368, 366, 365, 364, 363, 362, 361, 360, - 359, 358, 357, 356, 355, 354, 353, 351, 350, 349, - - 348, 346, 345, 344, 343, 342, 341, 340, 339, 338, - 337, 336, 335, 334, 333, 329, 327, 323, 321, 319, - 312, 311, 310, 309, 307, 306, 305, 304, 303, 302, - 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, - 290, 289, 288, 286, 285, 284, 283, 282, 281, 280, - 279, 278, 277, 276, 275, 274, 273, 271, 270, 268, - 267, 266, 265, 263, 262, 261, 260, 259, 258, 256, - 255, 254, 253, 252, 251, 250, 248, 247, 245, 244, - 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, - 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, - - 223, 222, 219, 218, 217, 216, 215, 214, 213, 212, - 210, 206, 204, 202, 200, 195, 192, 184, 183, 182, - 181, 179, 178, 177, 176, 175, 174, 172, 171, 170, - 168, 166, 164, 162, 161, 159, 158, 157, 155, 153, - 152, 151, 150, 149, 148, 146, 145, 144, 142, 141, - 140, 138, 137, 135, 134, 130, 129, 128, 127, 125, - 124, 123, 121, 120, 119, 117, 113, 104, 103, 97, - 96, 77, 72, 66, 52, 49, 48, 43, 41, 39, - 38, 24, 14, 11, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096 + 45, 45, 45, 45, 92, 65, 57, 73, 67, 67, + 57, 73, 67, 78, 57, 65, 68, 65, 67, 134, + 68, 108, 57, 70, 68, 113, 57, 112, 57, 57, + 76, 70, 92, 70, 566, 134, 68, 78, 70, 70, + 68, 71, 74, 93, 71, 71, 74, 78, 113, 74, + 75, 75, 108, 76, 112, 71, 74, 74, 71, 95, + 75, 74, 74, 76, 94, 103, 106, 100, 76, 93, + 75, 80, 80, 80, 80, 80, 81, 730, 81, 81, + + 81, 81, 81, 75, 80, 75, 566, 95, 75, 75, + 94, 81, 106, 103, 82, 731, 82, 140, 75, 82, + 82, 82, 82, 82, 100, 75, 83, 80, 83, 83, + 83, 83, 83, 102, 81, 84, 84, 84, 84, 84, + 102, 83, 88, 88, 88, 88, 88, 109, 84, 89, + 89, 89, 89, 89, 111, 117, 119, 123, 127, 127, + 132, 140, 132, 133, 83, 119, 123, 123, 127, 119, + 102, 84, 117, 155, 102, 109, 133, 137, 102, 132, + 137, 157, 111, 117, 137, 144, 102, 148, 647, 647, + 102, 166, 102, 102, 116, 166, 164, 732, 144, 164, + + 164, 155, 116, 116, 116, 116, 116, 161, 148, 168, + 191, 116, 116, 116, 116, 116, 116, 170, 174, 194, + 178, 170, 161, 161, 161, 170, 182, 157, 189, 197, + 192, 260, 174, 191, 116, 116, 116, 116, 116, 116, + 190, 193, 194, 200, 168, 168, 168, 178, 201, 204, + 206, 208, 197, 214, 182, 168, 189, 168, 192, 168, + 168, 223, 168, 304, 223, 304, 190, 193, 272, 733, + 734, 200, 204, 206, 267, 201, 214, 330, 208, 212, + 212, 212, 212, 212, 260, 275, 224, 260, 212, 212, + 212, 212, 212, 212, 224, 275, 290, 267, 312, 290, + + 224, 318, 321, 327, 337, 330, 410, 418, 735, 394, + 517, 212, 212, 212, 212, 212, 212, 352, 272, 394, + 517, 312, 352, 357, 318, 321, 327, 372, 390, 357, + 395, 482, 372, 337, 390, 312, 335, 335, 335, 335, + 335, 736, 738, 739, 482, 335, 335, 335, 335, 335, + 335, 386, 386, 386, 453, 413, 418, 386, 395, 413, + 461, 421, 429, 594, 410, 421, 429, 740, 335, 335, + 335, 335, 335, 335, 447, 459, 741, 459, 493, 447, + 372, 478, 453, 493, 595, 372, 713, 742, 461, 478, + 594, 478, 478, 478, 559, 478, 596, 616, 713, 559, + + 616, 596, 459, 598, 459, 460, 460, 460, 460, 460, + 598, 726, 595, 743, 460, 460, 460, 460, 460, 460, + 684, 725, 744, 737, 737, 684, 737, 745, 746, 747, + 748, 749, 750, 751, 726, 752, 753, 460, 460, 460, + 460, 460, 460, 754, 755, 756, 757, 758, 759, 725, + 757, 760, 761, 762, 757, 763, 764, 766, 767, 768, + 769, 770, 771, 772, 684, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 788, 786, 789, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 802, 803, 804, 805, 806, 807, 808, + + 809, 810, 811, 812, 814, 815, 816, 817, 818, 819, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, + 830, 831, 832, 833, 834, 835, 836, 837, 838, 832, + 839, 834, 840, 841, 838, 834, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, + 857, 858, 859, 860, 861, 862, 864, 865, 866, 867, + 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 854, 883, 884, 885, 886, + 887, 888, 889, 890, 891, 892, 893, 895, 896, 897, + 898, 899, 900, 901, 902, 903, 904, 900, 905, 906, + + 907, 908, 909, 910, 911, 914, 915, 916, 917, 918, + 919, 920, 923, 924, 925, 926, 927, 929, 930, 931, + 932, 933, 930, 934, 935, 936, 937, 939, 941, 942, + 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, + 973, 974, 976, 964, 977, 978, 979, 980, 981, 982, + 983, 984, 985, 986, 987, 988, 989, 990, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1006, 1007, 1008, 1009, 986, 1010, 1011, 985, + + 1012, 1013, 1014, 1015, 1017, 1018, 1019, 1020, 1021, 1022, + 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1031, 1032, 1033, + 1034, 1035, 1036, 1037, 1039, 1040, 1035, 1041, 1042, 1043, + 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, + 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, + 1066, 1067, 1068, 1070, 1071, 1072, 1073, 1060, 1074, 1076, + 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, + 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1095, 1096, 1035, + 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, + 1107, 1108, 1109, 1110, 1112, 1111, 1113, 1114, 1115, 1117, + + 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1138, + 1139, 1110, 1111, 1140, 1141, 1142, 1143, 1144, 1145, 1146, + 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, + 1158, 1159, 1160, 1161, 1162, 1163, 1159, 1164, 1165, 1166, + 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, + 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, + 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1195, 1196, 1197, + 1198, 1199, 1200, 1201, 1202, 1203, 1160, 1204, 1205, 1207, + 1208, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, + + 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, + 1240, 1241, 1242, 1244, 1245, 1246, 1247, 1248, 1249, 1250, + 1251, 1253, 1229, 1254, 1255, 1256, 1257, 1258, 1230, 1259, + 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, + 1270, 1271, 1274, 1276, 1278, 1279, 1280, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, + 1295, 1296, 1297, 1299, 1300, 1301, 1302, 1303, 1305, 1307, + 1309, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1328, 1329, 1330, + + 1331, 1332, 1333, 1336, 1337, 1338, 1339, 1340, 1341, 1342, + 1343, 1344, 1346, 1347, 1348, 1350, 1351, 1352, 1353, 1354, + 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, + 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1343, 1374, + 1375, 1376, 1377, 1378, 1321, 1379, 1380, 1381, 1382, 1383, + 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1393, 1350, + 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1395, + 1403, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, + 1415, 1416, 1417, 1418, 1419, 1421, 1422, 1423, 1424, 1425, + 1427, 1429, 1427, 1424, 1430, 1433, 1434, 1435, 1436, 1437, + + 1438, 1439, 1440, 1441, 1442, 1443, 1445, 1446, 1447, 1449, + 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, + 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1468, 1443, 1469, + 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, + 1481, 1483, 1485, 1487, 1488, 1490, 1491, 1492, 1493, 1494, + 1495, 1496, 1497, 1498, 1499, 1501, 1502, 1503, 1504, 1505, + 1506, 1507, 1508, 1512, 1513, 1515, 1516, 1517, 1518, 1520, + 1521, 1520, 1522, 1523, 1520, 1524, 1525, 1520, 1526, 1527, + 1528, 1529, 1530, 1532, 1534, 1535, 1536, 1538, 1539, 1540, + 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, + + 1552, 1553, 1554, 1555, 1557, 1558, 1559, 1560, 1549, 1562, + 1563, 1564, 1565, 1536, 1566, 1567, 1568, 1569, 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, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, + 1612, 1613, 1614, 1616, 1617, 1618, 1621, 1622, 1623, 1626, + 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1570, 1634, 1635, + 1636, 1637, 1639, 1640, 1641, 1642, 1643, 1639, 1644, 1645, + 1646, 1616, 1647, 1649, 1650, 1651, 1653, 1654, 1656, 1657, + + 1658, 1660, 1661, 1662, 1663, 1664, 1666, 1667, 1668, 1669, + 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, + 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, + 1690, 1691, 1693, 1695, 1696, 1697, 1699, 1700, 1701, 1702, + 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1712, 1713, + 1714, 1715, 1716, 1718, 1719, 1720, 1722, 1723, 1724, 1725, + 1726, 1727, 1728, 1729, 1730, 1731, 1733, 1734, 1735, 1736, + 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1748, 1749, 1750, 1751, 1752, 1754, 1756, 1757, 1758, + 1752, 1759, 1761, 1763, 1764, 1765, 1766, 1767, 1768, 1769, + + 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1780, + 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1790, 1791, + 1792, 1793, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, + 1803, 1804, 1805, 1807, 1808, 1809, 1810, 1811, 1813, 1814, + 1815, 1816, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, + 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, + 1838, 1839, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, + 1850, 1851, 1853, 1854, 1856, 1857, 1858, 1859, 1860, 1861, + 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1867, 1870, + 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, + + 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, + 1892, 1894, 1896, 1898, 1900, 1902, 1903, 1904, 1905, 1906, + 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, + 1917, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, + 1928, 1929, 1931, 1932, 1934, 1935, 1936, 1937, 1938, 1940, + 1941, 1943, 1945, 1947, 1949, 1950, 1951, 1952, 1953, 1954, + 1955, 1956, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1966, + 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, + 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1986, 1987, + 1988, 1989, 1990, 1991, 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, 2022, 2023, 2025, 2026, 2027, 2028, 2030, 2031, + 2032, 2033, 2039, 2043, 2044, 2045, 2046, 2047, 2048, 2049, + 2050, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2061, + 2062, 2063, 2064, 2065, 2066, 2068, 2070, 2072, 2073, 2074, + 2075, 2076, 2077, 2079, 2080, 2081, 2082, 2083, 2082, 2084, + 2085, 2087, 2088, 2091, 2092, 2093, 2094, 2095, 2096, 2097, + 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2107, 2108, + 2109, 2110, 2113, 2114, 2115, 2117, 2118, 2120, 2122, 2123, + + 2124, 2125, 2126, 2127, 2128, 2129, 2131, 2136, 2136, 2136, + 2137, 2137, 2137, 2138, 2139, 2138, 2140, 2140, 2140, 2141, + 2141, 2141, 2142, 728, 2142, 2143, 2143, 2143, 727, 722, + 721, 720, 719, 718, 717, 716, 715, 714, 712, 711, + 710, 708, 707, 706, 705, 704, 703, 702, 701, 700, + 699, 698, 697, 696, 694, 693, 692, 691, 690, 689, + 688, 687, 686, 685, 683, 682, 680, 679, 678, 677, + 676, 675, 674, 673, 671, 670, 669, 668, 666, 665, + 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, + 653, 652, 651, 650, 649, 648, 646, 645, 644, 643, + + 642, 641, 639, 638, 637, 636, 635, 634, 633, 632, + 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, + 620, 619, 618, 617, 615, 614, 613, 612, 611, 610, + 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, + 599, 590, 589, 588, 587, 586, 584, 582, 580, 578, + 577, 576, 575, 574, 573, 572, 571, 570, 569, 568, + 567, 565, 564, 563, 562, 561, 560, 558, 557, 556, + 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, + 544, 542, 541, 540, 539, 538, 537, 536, 535, 534, + 533, 532, 531, 530, 529, 528, 527, 525, 524, 523, + + 522, 521, 520, 519, 518, 516, 515, 514, 513, 512, + 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, + 501, 500, 499, 497, 496, 495, 494, 492, 491, 490, + 489, 488, 487, 486, 484, 483, 481, 480, 479, 477, + 475, 474, 473, 472, 471, 470, 468, 467, 466, 465, + 464, 463, 462, 457, 455, 454, 452, 449, 448, 446, + 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, + 435, 434, 433, 432, 431, 430, 428, 427, 426, 425, + 424, 423, 422, 420, 419, 417, 416, 415, 414, 412, + 411, 409, 408, 407, 406, 405, 404, 403, 402, 401, + + 400, 399, 398, 397, 393, 392, 391, 389, 388, 387, + 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, + 375, 374, 373, 371, 370, 369, 368, 367, 366, 365, + 364, 363, 362, 361, 360, 359, 358, 356, 355, 354, + 353, 351, 350, 349, 348, 347, 346, 345, 344, 343, + 342, 341, 340, 339, 338, 334, 332, 328, 326, 324, + 317, 316, 315, 314, 313, 311, 310, 309, 307, 306, + 305, 303, 302, 301, 300, 299, 298, 297, 296, 295, + 294, 293, 292, 291, 289, 288, 287, 286, 285, 284, + 283, 282, 281, 280, 279, 278, 277, 276, 274, 273, + + 271, 270, 269, 268, 266, 265, 264, 263, 262, 261, + 259, 258, 257, 256, 255, 254, 253, 251, 250, 248, + 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, + 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, + 227, 226, 225, 222, 221, 220, 219, 218, 217, 216, + 215, 213, 209, 207, 205, 203, 198, 195, 187, 186, + 185, 184, 183, 181, 180, 179, 177, 176, 175, 173, + 172, 171, 169, 167, 165, 163, 162, 160, 159, 158, + 156, 154, 153, 152, 151, 150, 149, 147, 146, 145, + 143, 142, 141, 139, 138, 136, 135, 131, 130, 129, + + 128, 126, 125, 124, 122, 121, 120, 118, 114, 105, + 104, 98, 97, 77, 72, 66, 52, 49, 48, 43, + 41, 39, 38, 24, 14, 11, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135 + } ; static yy_state_type yy_last_accepting_state; @@ -2027,7 +2049,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[221] = +static const flex_int16_t yy_rule_linenum[224] = { 0, 148, 150, 152, 157, 158, 163, 164, 165, 177, 180, 185, 192, 201, 210, 219, 228, 237, 246, 255, 264, @@ -2035,24 +2057,25 @@ static const flex_int16_t yy_rule_linenum[221] = 373, 383, 392, 402, 412, 422, 432, 441, 450, 459, 468, 477, 486, 495, 504, 513, 522, 531, 540, 549, 558, 567, 576, 585, 598, 607, 616, 625, 636, 647, - 658, 669, 681, 692, 703, 714, 725, 734, 743, 752, - 763, 772, 783, 794, 805, 816, 828, 840, 852, 864, - 876, 888, 899, 910, 919, 928, 937, 946, 955, 966, - 977, 988, 999, 1010, 1021, 1032, 1044, 1054, 1065, 1074, - - 1083, 1098, 1114, 1123, 1132, 1141, 1150, 1159, 1168, 1177, - 1186, 1195, 1204, 1228, 1252, 1261, 1271, 1281, 1290, 1300, - 1311, 1320, 1329, 1338, 1347, 1356, 1367, 1378, 1389, 1399, - 1408, 1417, 1426, 1437, 1448, 1459, 1470, 1481, 1490, 1499, - 1508, 1517, 1526, 1535, 1544, 1553, 1562, 1572, 1584, 1597, - 1606, 1615, 1625, 1635, 1644, 1655, 1665, 1674, 1684, 1694, - 1703, 1712, 1721, 1730, 1740, 1749, 1758, 1767, 1776, 1785, - 1794, 1803, 1812, 1821, 1830, 1839, 1848, 1857, 1866, 1875, - 1884, 1893, 1902, 1911, 1920, 1929, 1938, 1947, 1956, 1965, - 1974, 1983, 1992, 2001, 2010, 2019, 2028, 2037, 2046, 2055, - - 2064, 2073, 2174, 2190, 2239, 2247, 2262, 2263, 2264, 2265, - 2266, 2267, 2269, 2287, 2300, 2305, 2309, 2311, 2313, 2315 + 658, 669, 681, 692, 703, 714, 725, 736, 747, 758, + 767, 776, 785, 796, 805, 816, 827, 838, 849, 861, + 873, 885, 897, 909, 921, 932, 943, 952, 961, 970, + 979, 988, 999, 1010, 1021, 1032, 1043, 1054, 1065, 1077, + + 1087, 1098, 1107, 1116, 1131, 1147, 1156, 1165, 1174, 1183, + 1192, 1201, 1210, 1219, 1228, 1237, 1261, 1285, 1294, 1304, + 1314, 1323, 1333, 1344, 1353, 1362, 1371, 1380, 1389, 1400, + 1411, 1422, 1432, 1441, 1450, 1459, 1470, 1481, 1492, 1503, + 1514, 1523, 1532, 1541, 1550, 1559, 1568, 1577, 1586, 1595, + 1605, 1617, 1630, 1639, 1648, 1658, 1668, 1677, 1688, 1698, + 1707, 1717, 1727, 1736, 1745, 1754, 1763, 1773, 1782, 1791, + 1800, 1809, 1818, 1827, 1836, 1845, 1854, 1863, 1872, 1881, + 1890, 1899, 1908, 1917, 1926, 1935, 1944, 1953, 1962, 1971, + 1980, 1989, 1998, 2007, 2016, 2025, 2034, 2043, 2052, 2061, + + 2070, 2079, 2088, 2097, 2106, 2207, 2223, 2272, 2280, 2295, + 2296, 2297, 2298, 2299, 2300, 2302, 2320, 2333, 2338, 2342, + 2344, 2346, 2348 } ; /* The intent behind this definition is that it'll catch @@ -2106,7 +2129,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 2109 "dhcp6_lexer.cc" +#line 2132 "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 @@ -2132,8 +2155,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 2135 "dhcp6_lexer.cc" -#line 2136 "dhcp6_lexer.cc" +#line 2158 "dhcp6_lexer.cc" +#line 2159 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2463,7 +2486,7 @@ YY_DECL } -#line 2466 "dhcp6_lexer.cc" +#line 2489 "dhcp6_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2492,13 +2515,13 @@ YY_DECL 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 >= 2097 ) + if ( yy_current_state >= 2136 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 2096 ); + while ( yy_current_state != 2135 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2517,13 +2540,13 @@ YY_DECL { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 221 ) + else if ( yy_act < 224 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 221 ) + else if ( yy_act == 224 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 222 ) + else if ( yy_act == 225 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -3305,9 +3328,9 @@ YY_RULE_SETUP case isc::dhcp::Parser6Context::LEASE_DATABASE: case isc::dhcp::Parser6Context::HOSTS_DATABASE: case isc::dhcp::Parser6Context::CONFIG_DATABASE: - return isc::dhcp::Dhcp6Parser::make_RECONNECT_WAIT_TIME(driver.loc_); + return isc::dhcp::Dhcp6Parser::make_READ_TIMEOUT(driver.loc_); default: - return isc::dhcp::Dhcp6Parser::make_STRING("reconnect-wait-time", driver.loc_); + return isc::dhcp::Dhcp6Parser::make_STRING("read-timeout", driver.loc_); } } YY_BREAK @@ -3319,15 +3342,57 @@ YY_RULE_SETUP case isc::dhcp::Parser6Context::LEASE_DATABASE: case isc::dhcp::Parser6Context::HOSTS_DATABASE: case isc::dhcp::Parser6Context::CONFIG_DATABASE: - return isc::dhcp::Dhcp6Parser::make_ON_FAIL(driver.loc_); + return isc::dhcp::Dhcp6Parser::make_WRITE_TIMEOUT(driver.loc_); default: - return isc::dhcp::Dhcp6Parser::make_STRING("on-fail", driver.loc_); + return isc::dhcp::Dhcp6Parser::make_STRING("write-timeout", driver.loc_); } } YY_BREAK case 67: YY_RULE_SETUP #line 725 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::LEASE_DATABASE: + case isc::dhcp::Parser6Context::HOSTS_DATABASE: + case isc::dhcp::Parser6Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp6Parser::make_TCP_USER_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("tcp-user-timeout", driver.loc_); + } +} + YY_BREAK +case 68: +YY_RULE_SETUP +#line 736 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::LEASE_DATABASE: + case isc::dhcp::Parser6Context::HOSTS_DATABASE: + case isc::dhcp::Parser6Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp6Parser::make_RECONNECT_WAIT_TIME(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("reconnect-wait-time", driver.loc_); + } +} + YY_BREAK +case 69: +YY_RULE_SETUP +#line 747 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::LEASE_DATABASE: + case isc::dhcp::Parser6Context::HOSTS_DATABASE: + case isc::dhcp::Parser6Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp6Parser::make_ON_FAIL(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("on-fail", driver.loc_); + } +} + YY_BREAK +case 70: +YY_RULE_SETUP +#line 758 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_ON_FAIL: @@ -3337,9 +3402,9 @@ YY_RULE_SETUP } } YY_BREAK -case 68: +case 71: YY_RULE_SETUP -#line 734 "dhcp6_lexer.ll" +#line 767 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_ON_FAIL: @@ -3349,9 +3414,9 @@ YY_RULE_SETUP } } YY_BREAK -case 69: +case 72: YY_RULE_SETUP -#line 743 "dhcp6_lexer.ll" +#line 776 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_ON_FAIL: @@ -3361,9 +3426,9 @@ YY_RULE_SETUP } } YY_BREAK -case 70: +case 73: YY_RULE_SETUP -#line 752 "dhcp6_lexer.ll" +#line 785 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3375,9 +3440,9 @@ YY_RULE_SETUP } } YY_BREAK -case 71: +case 74: YY_RULE_SETUP -#line 763 "dhcp6_lexer.ll" +#line 796 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3387,9 +3452,9 @@ YY_RULE_SETUP } } YY_BREAK -case 72: +case 75: YY_RULE_SETUP -#line 772 "dhcp6_lexer.ll" +#line 805 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3401,9 +3466,9 @@ YY_RULE_SETUP } } YY_BREAK -case 73: +case 76: YY_RULE_SETUP -#line 783 "dhcp6_lexer.ll" +#line 816 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3415,9 +3480,9 @@ YY_RULE_SETUP } } YY_BREAK -case 74: +case 77: YY_RULE_SETUP -#line 794 "dhcp6_lexer.ll" +#line 827 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3429,9 +3494,9 @@ YY_RULE_SETUP } } YY_BREAK -case 75: +case 78: YY_RULE_SETUP -#line 805 "dhcp6_lexer.ll" +#line 838 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3443,9 +3508,9 @@ YY_RULE_SETUP } } YY_BREAK -case 76: +case 79: YY_RULE_SETUP -#line 816 "dhcp6_lexer.ll" +#line 849 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3458,9 +3523,9 @@ YY_RULE_SETUP } } YY_BREAK -case 77: +case 80: YY_RULE_SETUP -#line 828 "dhcp6_lexer.ll" +#line 861 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3473,9 +3538,9 @@ YY_RULE_SETUP } } YY_BREAK -case 78: +case 81: YY_RULE_SETUP -#line 840 "dhcp6_lexer.ll" +#line 873 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3488,9 +3553,9 @@ YY_RULE_SETUP } } YY_BREAK -case 79: +case 82: YY_RULE_SETUP -#line 852 "dhcp6_lexer.ll" +#line 885 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3503,9 +3568,9 @@ YY_RULE_SETUP } } YY_BREAK -case 80: +case 83: YY_RULE_SETUP -#line 864 "dhcp6_lexer.ll" +#line 897 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3518,9 +3583,9 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 84: YY_RULE_SETUP -#line 876 "dhcp6_lexer.ll" +#line 909 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3533,9 +3598,9 @@ YY_RULE_SETUP } } YY_BREAK -case 82: +case 85: YY_RULE_SETUP -#line 888 "dhcp6_lexer.ll" +#line 921 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3547,9 +3612,9 @@ YY_RULE_SETUP } } YY_BREAK -case 83: +case 86: YY_RULE_SETUP -#line 899 "dhcp6_lexer.ll" +#line 932 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3561,9 +3626,9 @@ YY_RULE_SETUP } } YY_BREAK -case 84: +case 87: YY_RULE_SETUP -#line 910 "dhcp6_lexer.ll" +#line 943 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3573,9 +3638,9 @@ YY_RULE_SETUP } } YY_BREAK -case 85: +case 88: YY_RULE_SETUP -#line 919 "dhcp6_lexer.ll" +#line 952 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3585,9 +3650,9 @@ YY_RULE_SETUP } } YY_BREAK -case 86: +case 89: YY_RULE_SETUP -#line 928 "dhcp6_lexer.ll" +#line 961 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3597,9 +3662,9 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 90: YY_RULE_SETUP -#line 937 "dhcp6_lexer.ll" +#line 970 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3609,9 +3674,9 @@ YY_RULE_SETUP } } YY_BREAK -case 88: +case 91: YY_RULE_SETUP -#line 946 "dhcp6_lexer.ll" +#line 979 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3621,9 +3686,9 @@ YY_RULE_SETUP } } YY_BREAK -case 89: +case 92: YY_RULE_SETUP -#line 955 "dhcp6_lexer.ll" +#line 988 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3635,9 +3700,9 @@ YY_RULE_SETUP } } YY_BREAK -case 90: +case 93: YY_RULE_SETUP -#line 966 "dhcp6_lexer.ll" +#line 999 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3649,9 +3714,9 @@ YY_RULE_SETUP } } YY_BREAK -case 91: +case 94: YY_RULE_SETUP -#line 977 "dhcp6_lexer.ll" +#line 1010 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3663,9 +3728,9 @@ YY_RULE_SETUP } } YY_BREAK -case 92: +case 95: YY_RULE_SETUP -#line 988 "dhcp6_lexer.ll" +#line 1021 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3677,9 +3742,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 96: YY_RULE_SETUP -#line 999 "dhcp6_lexer.ll" +#line 1032 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3691,9 +3756,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 97: YY_RULE_SETUP -#line 1010 "dhcp6_lexer.ll" +#line 1043 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3705,9 +3770,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 98: YY_RULE_SETUP -#line 1021 "dhcp6_lexer.ll" +#line 1054 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3719,9 +3784,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 99: YY_RULE_SETUP -#line 1032 "dhcp6_lexer.ll" +#line 1065 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3733,9 +3798,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 100: YY_RULE_SETUP -#line 1044 "dhcp6_lexer.ll" +#line 1077 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3746,9 +3811,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 101: YY_RULE_SETUP -#line 1054 "dhcp6_lexer.ll" +#line 1087 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3760,9 +3825,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 102: YY_RULE_SETUP -#line 1065 "dhcp6_lexer.ll" +#line 1098 "dhcp6_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3772,9 +3837,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 103: YY_RULE_SETUP -#line 1074 "dhcp6_lexer.ll" +#line 1107 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3784,9 +3849,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 104: YY_RULE_SETUP -#line 1083 "dhcp6_lexer.ll" +#line 1116 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3802,9 +3867,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 105: YY_RULE_SETUP -#line 1098 "dhcp6_lexer.ll" +#line 1131 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3821,9 +3886,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 106: YY_RULE_SETUP -#line 1114 "dhcp6_lexer.ll" +#line 1147 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3833,9 +3898,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 107: YY_RULE_SETUP -#line 1123 "dhcp6_lexer.ll" +#line 1156 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3845,9 +3910,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 108: YY_RULE_SETUP -#line 1132 "dhcp6_lexer.ll" +#line 1165 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3857,9 +3922,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 109: YY_RULE_SETUP -#line 1141 "dhcp6_lexer.ll" +#line 1174 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3869,9 +3934,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 110: YY_RULE_SETUP -#line 1150 "dhcp6_lexer.ll" +#line 1183 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3881,9 +3946,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 111: YY_RULE_SETUP -#line 1159 "dhcp6_lexer.ll" +#line 1192 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3893,9 +3958,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 112: YY_RULE_SETUP -#line 1168 "dhcp6_lexer.ll" +#line 1201 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3905,9 +3970,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 113: YY_RULE_SETUP -#line 1177 "dhcp6_lexer.ll" +#line 1210 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3917,9 +3982,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 114: YY_RULE_SETUP -#line 1186 "dhcp6_lexer.ll" +#line 1219 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3929,9 +3994,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 115: YY_RULE_SETUP -#line 1195 "dhcp6_lexer.ll" +#line 1228 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::POOLS: @@ -3941,9 +4006,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 116: YY_RULE_SETUP -#line 1204 "dhcp6_lexer.ll" +#line 1237 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3968,9 +4033,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 117: YY_RULE_SETUP -#line 1228 "dhcp6_lexer.ll" +#line 1261 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3995,9 +4060,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 118: YY_RULE_SETUP -#line 1252 "dhcp6_lexer.ll" +#line 1285 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4007,9 +4072,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 119: YY_RULE_SETUP -#line 1261 "dhcp6_lexer.ll" +#line 1294 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4020,9 +4085,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 120: YY_RULE_SETUP -#line 1271 "dhcp6_lexer.ll" +#line 1304 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4033,9 +4098,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 121: YY_RULE_SETUP -#line 1281 "dhcp6_lexer.ll" +#line 1314 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4045,9 +4110,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 122: YY_RULE_SETUP -#line 1290 "dhcp6_lexer.ll" +#line 1323 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4058,9 +4123,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 123: YY_RULE_SETUP -#line 1300 "dhcp6_lexer.ll" +#line 1333 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4072,9 +4137,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 124: YY_RULE_SETUP -#line 1311 "dhcp6_lexer.ll" +#line 1344 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -4084,9 +4149,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 125: YY_RULE_SETUP -#line 1320 "dhcp6_lexer.ll" +#line 1353 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -4096,9 +4161,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 126: YY_RULE_SETUP -#line 1329 "dhcp6_lexer.ll" +#line 1362 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -4108,9 +4173,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 127: YY_RULE_SETUP -#line 1338 "dhcp6_lexer.ll" +#line 1371 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -4120,9 +4185,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 128: YY_RULE_SETUP -#line 1347 "dhcp6_lexer.ll" +#line 1380 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -4132,9 +4197,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 129: YY_RULE_SETUP -#line 1356 "dhcp6_lexer.ll" +#line 1389 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4146,9 +4211,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 130: YY_RULE_SETUP -#line 1367 "dhcp6_lexer.ll" +#line 1400 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4160,9 +4225,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 131: YY_RULE_SETUP -#line 1378 "dhcp6_lexer.ll" +#line 1411 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4174,9 +4239,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 132: YY_RULE_SETUP -#line 1389 "dhcp6_lexer.ll" +#line 1422 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4187,9 +4252,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 133: YY_RULE_SETUP -#line 1399 "dhcp6_lexer.ll" +#line 1432 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4199,9 +4264,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 134: YY_RULE_SETUP -#line 1408 "dhcp6_lexer.ll" +#line 1441 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4211,9 +4276,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 135: YY_RULE_SETUP -#line 1417 "dhcp6_lexer.ll" +#line 1450 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4223,9 +4288,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 136: YY_RULE_SETUP -#line 1426 "dhcp6_lexer.ll" +#line 1459 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4237,9 +4302,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 137: YY_RULE_SETUP -#line 1437 "dhcp6_lexer.ll" +#line 1470 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4251,9 +4316,9 @@ YY_RULE_SETUP } } YY_BREAK -case 135: +case 138: YY_RULE_SETUP -#line 1448 "dhcp6_lexer.ll" +#line 1481 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4265,9 +4330,9 @@ YY_RULE_SETUP } } YY_BREAK -case 136: +case 139: YY_RULE_SETUP -#line 1459 "dhcp6_lexer.ll" +#line 1492 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4279,9 +4344,9 @@ YY_RULE_SETUP } } YY_BREAK -case 137: +case 140: YY_RULE_SETUP -#line 1470 "dhcp6_lexer.ll" +#line 1503 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4293,9 +4358,9 @@ YY_RULE_SETUP } } YY_BREAK -case 138: +case 141: YY_RULE_SETUP -#line 1481 "dhcp6_lexer.ll" +#line 1514 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4305,9 +4370,9 @@ YY_RULE_SETUP } } YY_BREAK -case 139: +case 142: YY_RULE_SETUP -#line 1490 "dhcp6_lexer.ll" +#line 1523 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -4317,9 +4382,9 @@ YY_RULE_SETUP } } YY_BREAK -case 140: +case 143: YY_RULE_SETUP -#line 1499 "dhcp6_lexer.ll" +#line 1532 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4329,9 +4394,9 @@ YY_RULE_SETUP } } YY_BREAK -case 141: +case 144: YY_RULE_SETUP -#line 1508 "dhcp6_lexer.ll" +#line 1541 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4341,9 +4406,9 @@ YY_RULE_SETUP } } YY_BREAK -case 142: +case 145: YY_RULE_SETUP -#line 1517 "dhcp6_lexer.ll" +#line 1550 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4353,9 +4418,9 @@ YY_RULE_SETUP } } YY_BREAK -case 143: +case 146: YY_RULE_SETUP -#line 1526 "dhcp6_lexer.ll" +#line 1559 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4365,9 +4430,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 147: YY_RULE_SETUP -#line 1535 "dhcp6_lexer.ll" +#line 1568 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -4377,9 +4442,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 148: YY_RULE_SETUP -#line 1544 "dhcp6_lexer.ll" +#line 1577 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -4389,9 +4454,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 149: YY_RULE_SETUP -#line 1553 "dhcp6_lexer.ll" +#line 1586 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -4401,9 +4466,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 150: YY_RULE_SETUP -#line 1562 "dhcp6_lexer.ll" +#line 1595 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4414,9 +4479,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 151: YY_RULE_SETUP -#line 1572 "dhcp6_lexer.ll" +#line 1605 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4429,9 +4494,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 152: YY_RULE_SETUP -#line 1584 "dhcp6_lexer.ll" +#line 1617 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4445,9 +4510,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 153: YY_RULE_SETUP -#line 1597 "dhcp6_lexer.ll" +#line 1630 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -4457,9 +4522,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 154: YY_RULE_SETUP -#line 1606 "dhcp6_lexer.ll" +#line 1639 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -4469,9 +4534,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 155: YY_RULE_SETUP -#line 1615 "dhcp6_lexer.ll" +#line 1648 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4482,9 +4547,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 156: YY_RULE_SETUP -#line 1625 "dhcp6_lexer.ll" +#line 1658 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -4495,9 +4560,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 157: YY_RULE_SETUP -#line 1635 "dhcp6_lexer.ll" +#line 1668 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -4507,9 +4572,9 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 158: YY_RULE_SETUP -#line 1644 "dhcp6_lexer.ll" +#line 1677 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::MAC_SOURCES: @@ -4521,9 +4586,9 @@ YY_RULE_SETUP } } YY_BREAK -case 156: +case 159: YY_RULE_SETUP -#line 1655 "dhcp6_lexer.ll" +#line 1688 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS: @@ -4534,9 +4599,9 @@ YY_RULE_SETUP } } YY_BREAK -case 157: +case 160: YY_RULE_SETUP -#line 1665 "dhcp6_lexer.ll" +#line 1698 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -4546,9 +4611,9 @@ YY_RULE_SETUP } } YY_BREAK -case 158: +case 161: YY_RULE_SETUP -#line 1674 "dhcp6_lexer.ll" +#line 1707 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS: @@ -4559,9 +4624,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 162: YY_RULE_SETUP -#line 1684 "dhcp6_lexer.ll" +#line 1717 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4572,9 +4637,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 163: YY_RULE_SETUP -#line 1694 "dhcp6_lexer.ll" +#line 1727 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -4584,9 +4649,9 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 164: YY_RULE_SETUP -#line 1703 "dhcp6_lexer.ll" +#line 1736 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4596,9 +4661,9 @@ YY_RULE_SETUP } } YY_BREAK -case 162: +case 165: YY_RULE_SETUP -#line 1712 "dhcp6_lexer.ll" +#line 1745 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4608,9 +4673,9 @@ YY_RULE_SETUP } } YY_BREAK -case 163: +case 166: YY_RULE_SETUP -#line 1721 "dhcp6_lexer.ll" +#line 1754 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -4620,9 +4685,9 @@ YY_RULE_SETUP } } YY_BREAK -case 164: +case 167: YY_RULE_SETUP -#line 1730 "dhcp6_lexer.ll" +#line 1763 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -4633,9 +4698,9 @@ YY_RULE_SETUP } } YY_BREAK -case 165: +case 168: YY_RULE_SETUP -#line 1740 "dhcp6_lexer.ll" +#line 1773 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RELAY: @@ -4645,9 +4710,9 @@ YY_RULE_SETUP } } YY_BREAK -case 166: +case 169: YY_RULE_SETUP -#line 1749 "dhcp6_lexer.ll" +#line 1782 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4657,9 +4722,9 @@ YY_RULE_SETUP } } YY_BREAK -case 167: +case 170: YY_RULE_SETUP -#line 1758 "dhcp6_lexer.ll" +#line 1791 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: @@ -4669,9 +4734,9 @@ YY_RULE_SETUP } } YY_BREAK -case 168: +case 171: YY_RULE_SETUP -#line 1767 "dhcp6_lexer.ll" +#line 1800 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: @@ -4681,9 +4746,9 @@ YY_RULE_SETUP } } YY_BREAK -case 169: +case 172: YY_RULE_SETUP -#line 1776 "dhcp6_lexer.ll" +#line 1809 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4693,9 +4758,9 @@ YY_RULE_SETUP } } YY_BREAK -case 170: +case 173: YY_RULE_SETUP -#line 1785 "dhcp6_lexer.ll" +#line 1818 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -4705,9 +4770,9 @@ YY_RULE_SETUP } } YY_BREAK -case 171: +case 174: YY_RULE_SETUP -#line 1794 "dhcp6_lexer.ll" +#line 1827 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -4717,9 +4782,9 @@ YY_RULE_SETUP } } YY_BREAK -case 172: +case 175: YY_RULE_SETUP -#line 1803 "dhcp6_lexer.ll" +#line 1836 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -4729,9 +4794,9 @@ YY_RULE_SETUP } } YY_BREAK -case 173: +case 176: YY_RULE_SETUP -#line 1812 "dhcp6_lexer.ll" +#line 1845 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4741,9 +4806,9 @@ YY_RULE_SETUP } } YY_BREAK -case 174: +case 177: YY_RULE_SETUP -#line 1821 "dhcp6_lexer.ll" +#line 1854 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4753,9 +4818,9 @@ YY_RULE_SETUP } } YY_BREAK -case 175: +case 178: YY_RULE_SETUP -#line 1830 "dhcp6_lexer.ll" +#line 1863 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4765,9 +4830,9 @@ YY_RULE_SETUP } } YY_BREAK -case 176: +case 179: YY_RULE_SETUP -#line 1839 "dhcp6_lexer.ll" +#line 1872 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4777,9 +4842,9 @@ YY_RULE_SETUP } } YY_BREAK -case 177: +case 180: YY_RULE_SETUP -#line 1848 "dhcp6_lexer.ll" +#line 1881 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4789,9 +4854,9 @@ YY_RULE_SETUP } } YY_BREAK -case 178: +case 181: YY_RULE_SETUP -#line 1857 "dhcp6_lexer.ll" +#line 1890 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4801,9 +4866,9 @@ YY_RULE_SETUP } } YY_BREAK -case 179: +case 182: YY_RULE_SETUP -#line 1866 "dhcp6_lexer.ll" +#line 1899 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4813,9 +4878,9 @@ YY_RULE_SETUP } } YY_BREAK -case 180: +case 183: YY_RULE_SETUP -#line 1875 "dhcp6_lexer.ll" +#line 1908 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4825,9 +4890,9 @@ YY_RULE_SETUP } } YY_BREAK -case 181: +case 184: YY_RULE_SETUP -#line 1884 "dhcp6_lexer.ll" +#line 1917 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4837,9 +4902,9 @@ YY_RULE_SETUP } } YY_BREAK -case 182: +case 185: YY_RULE_SETUP -#line 1893 "dhcp6_lexer.ll" +#line 1926 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4849,9 +4914,9 @@ YY_RULE_SETUP } } YY_BREAK -case 183: +case 186: YY_RULE_SETUP -#line 1902 "dhcp6_lexer.ll" +#line 1935 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4861,9 +4926,9 @@ YY_RULE_SETUP } } YY_BREAK -case 184: +case 187: YY_RULE_SETUP -#line 1911 "dhcp6_lexer.ll" +#line 1944 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4873,9 +4938,9 @@ YY_RULE_SETUP } } YY_BREAK -case 185: +case 188: YY_RULE_SETUP -#line 1920 "dhcp6_lexer.ll" +#line 1953 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4885,9 +4950,9 @@ YY_RULE_SETUP } } YY_BREAK -case 186: +case 189: YY_RULE_SETUP -#line 1929 "dhcp6_lexer.ll" +#line 1962 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING: @@ -4897,9 +4962,9 @@ YY_RULE_SETUP } } YY_BREAK -case 187: +case 190: YY_RULE_SETUP -#line 1938 "dhcp6_lexer.ll" +#line 1971 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING: @@ -4909,9 +4974,9 @@ YY_RULE_SETUP } } YY_BREAK -case 188: +case 191: YY_RULE_SETUP -#line 1947 "dhcp6_lexer.ll" +#line 1980 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING: @@ -4921,9 +4986,9 @@ YY_RULE_SETUP } } YY_BREAK -case 189: +case 192: YY_RULE_SETUP -#line 1956 "dhcp6_lexer.ll" +#line 1989 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4933,9 +4998,9 @@ YY_RULE_SETUP } } YY_BREAK -case 190: +case 193: YY_RULE_SETUP -#line 1965 "dhcp6_lexer.ll" +#line 1998 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONTROL_SOCKET: @@ -4945,9 +5010,9 @@ YY_RULE_SETUP } } YY_BREAK -case 191: +case 194: YY_RULE_SETUP -#line 1974 "dhcp6_lexer.ll" +#line 2007 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONTROL_SOCKET: @@ -4957,9 +5022,9 @@ YY_RULE_SETUP } } YY_BREAK -case 192: +case 195: YY_RULE_SETUP -#line 1983 "dhcp6_lexer.ll" +#line 2016 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4969,9 +5034,9 @@ YY_RULE_SETUP } } YY_BREAK -case 193: +case 196: YY_RULE_SETUP -#line 1992 "dhcp6_lexer.ll" +#line 2025 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL: @@ -4981,9 +5046,9 @@ YY_RULE_SETUP } } YY_BREAK -case 194: +case 197: YY_RULE_SETUP -#line 2001 "dhcp6_lexer.ll" +#line 2034 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL: @@ -4993,9 +5058,9 @@ YY_RULE_SETUP } } YY_BREAK -case 195: +case 198: YY_RULE_SETUP -#line 2010 "dhcp6_lexer.ll" +#line 2043 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL: @@ -5005,9 +5070,9 @@ YY_RULE_SETUP } } YY_BREAK -case 196: +case 199: YY_RULE_SETUP -#line 2019 "dhcp6_lexer.ll" +#line 2052 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -5017,9 +5082,9 @@ YY_RULE_SETUP } } YY_BREAK -case 197: +case 200: YY_RULE_SETUP -#line 2028 "dhcp6_lexer.ll" +#line 2061 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -5029,9 +5094,9 @@ YY_RULE_SETUP } } YY_BREAK -case 198: +case 201: YY_RULE_SETUP -#line 2037 "dhcp6_lexer.ll" +#line 2070 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -5041,9 +5106,9 @@ YY_RULE_SETUP } } YY_BREAK -case 199: +case 202: YY_RULE_SETUP -#line 2046 "dhcp6_lexer.ll" +#line 2079 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -5053,9 +5118,9 @@ YY_RULE_SETUP } } YY_BREAK -case 200: +case 203: YY_RULE_SETUP -#line 2055 "dhcp6_lexer.ll" +#line 2088 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -5065,9 +5130,9 @@ YY_RULE_SETUP } } YY_BREAK -case 201: +case 204: YY_RULE_SETUP -#line 2064 "dhcp6_lexer.ll" +#line 2097 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::COMPATIBILITY: @@ -5077,9 +5142,9 @@ YY_RULE_SETUP } } YY_BREAK -case 202: +case 205: YY_RULE_SETUP -#line 2073 "dhcp6_lexer.ll" +#line 2106 "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. @@ -5181,10 +5246,10 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 203: -/* rule 203 can match eol */ +case 206: +/* rule 206 can match eol */ YY_RULE_SETUP -#line 2174 "dhcp6_lexer.ll" +#line 2207 "dhcp6_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5201,10 +5266,10 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 204: -/* rule 204 can match eol */ +case 207: +/* rule 207 can match eol */ YY_RULE_SETUP -#line 2190 "dhcp6_lexer.ll" +#line 2223 "dhcp6_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5254,9 +5319,9 @@ YY_RULE_SETUP pos); } YY_BREAK -case 205: +case 208: YY_RULE_SETUP -#line 2239 "dhcp6_lexer.ll" +#line 2272 "dhcp6_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5265,9 +5330,9 @@ YY_RULE_SETUP raw.size() + 1); } YY_BREAK -case 206: +case 209: YY_RULE_SETUP -#line 2247 "dhcp6_lexer.ll" +#line 2280 "dhcp6_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5283,39 +5348,39 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 207: +case 210: YY_RULE_SETUP -#line 2262 "dhcp6_lexer.ll" +#line 2295 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 208: +case 211: YY_RULE_SETUP -#line 2263 "dhcp6_lexer.ll" +#line 2296 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 209: +case 212: YY_RULE_SETUP -#line 2264 "dhcp6_lexer.ll" +#line 2297 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 210: +case 213: YY_RULE_SETUP -#line 2265 "dhcp6_lexer.ll" +#line 2298 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 211: +case 214: YY_RULE_SETUP -#line 2266 "dhcp6_lexer.ll" +#line 2299 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); } YY_BREAK -case 212: +case 215: YY_RULE_SETUP -#line 2267 "dhcp6_lexer.ll" +#line 2300 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } YY_BREAK -case 213: +case 216: YY_RULE_SETUP -#line 2269 "dhcp6_lexer.ll" +#line 2302 "dhcp6_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5334,9 +5399,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 214: +case 217: YY_RULE_SETUP -#line 2287 "dhcp6_lexer.ll" +#line 2320 "dhcp6_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5350,43 +5415,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 215: +case 218: YY_RULE_SETUP -#line 2300 "dhcp6_lexer.ll" +#line 2333 "dhcp6_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 216: +case 219: YY_RULE_SETUP -#line 2305 "dhcp6_lexer.ll" +#line 2338 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 217: +case 220: YY_RULE_SETUP -#line 2309 "dhcp6_lexer.ll" +#line 2342 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 218: +case 221: YY_RULE_SETUP -#line 2311 "dhcp6_lexer.ll" +#line 2344 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 219: +case 222: YY_RULE_SETUP -#line 2313 "dhcp6_lexer.ll" +#line 2346 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 220: +case 223: YY_RULE_SETUP -#line 2315 "dhcp6_lexer.ll" +#line 2348 "dhcp6_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2317 "dhcp6_lexer.ll" +#line 2350 "dhcp6_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp6Parser::make_END(driver.loc_); @@ -5410,12 +5475,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 221: +case 224: YY_RULE_SETUP -#line 2340 "dhcp6_lexer.ll" +#line 2373 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 5418 "dhcp6_lexer.cc" +#line 5483 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -5734,7 +5799,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 >= 2097 ) + if ( yy_current_state >= 2136 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5767,11 +5832,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 >= 2097 ) + if ( yy_current_state >= 2136 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 2096); + yy_is_jam = (yy_current_state == 2135); return yy_is_jam ? 0 : yy_current_state; } @@ -6520,7 +6585,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2340 "dhcp6_lexer.ll" +#line 2373 "dhcp6_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index 48408aade1..dc100f08a2 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -699,6 +699,39 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"read-timeout\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::LEASE_DATABASE: + case isc::dhcp::Parser6Context::HOSTS_DATABASE: + case isc::dhcp::Parser6Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp6Parser::make_READ_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("read-timeout", driver.loc_); + } +} + +\"write-timeout\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::LEASE_DATABASE: + case isc::dhcp::Parser6Context::HOSTS_DATABASE: + case isc::dhcp::Parser6Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp6Parser::make_WRITE_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("write-timeout", driver.loc_); + } +} + +\"tcp-user-timeout\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::LEASE_DATABASE: + case isc::dhcp::Parser6Context::HOSTS_DATABASE: + case isc::dhcp::Parser6Context::CONFIG_DATABASE: + return isc::dhcp::Dhcp6Parser::make_TCP_USER_TIMEOUT(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("tcp-user-timeout", driver.loc_); + } +} + \"reconnect-wait-time\" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 07b11ee67f..b999959062 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -398,73 +398,73 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } #line 404 "dhcp6_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } #line 410 "dhcp6_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < double > (); } #line 416 "dhcp6_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < bool > (); } #line 422 "dhcp6_parser.cc" break; case symbol_kind::S_value: // value -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 428 "dhcp6_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 434 "dhcp6_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 440 "dhcp6_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 446 "dhcp6_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 452 "dhcp6_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 458 "dhcp6_parser.cc" break; case symbol_kind::S_duid_type: // duid_type -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 464 "dhcp6_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 293 "dhcp6_parser.yy" +#line 296 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 470 "dhcp6_parser.cc" break; @@ -744,133 +744,133 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 302 "dhcp6_parser.yy" +#line 305 "dhcp6_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } #line 750 "dhcp6_parser.cc" break; case 4: // $@2: %empty -#line 303 "dhcp6_parser.yy" +#line 306 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG; } #line 756 "dhcp6_parser.cc" break; case 6: // $@3: %empty -#line 304 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } #line 762 "dhcp6_parser.cc" break; case 8: // $@4: %empty -#line 305 "dhcp6_parser.yy" +#line 308 "dhcp6_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 768 "dhcp6_parser.cc" break; case 10: // $@5: %empty -#line 306 "dhcp6_parser.yy" +#line 309 "dhcp6_parser.yy" { ctx.ctx_ = ctx.SUBNET6; } #line 774 "dhcp6_parser.cc" break; case 12: // $@6: %empty -#line 307 "dhcp6_parser.yy" +#line 310 "dhcp6_parser.yy" { ctx.ctx_ = ctx.POOLS; } #line 780 "dhcp6_parser.cc" break; case 14: // $@7: %empty -#line 308 "dhcp6_parser.yy" +#line 311 "dhcp6_parser.yy" { ctx.ctx_ = ctx.PD_POOLS; } #line 786 "dhcp6_parser.cc" break; case 16: // $@8: %empty -#line 309 "dhcp6_parser.yy" +#line 312 "dhcp6_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } #line 792 "dhcp6_parser.cc" break; case 18: // $@9: %empty -#line 310 "dhcp6_parser.yy" +#line 313 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } #line 798 "dhcp6_parser.cc" break; case 20: // $@10: %empty -#line 311 "dhcp6_parser.yy" +#line 314 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } #line 804 "dhcp6_parser.cc" break; case 22: // $@11: %empty -#line 312 "dhcp6_parser.yy" +#line 315 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } #line 810 "dhcp6_parser.cc" break; case 24: // $@12: %empty -#line 313 "dhcp6_parser.yy" +#line 316 "dhcp6_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 816 "dhcp6_parser.cc" break; case 26: // $@13: %empty -#line 314 "dhcp6_parser.yy" +#line 317 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } #line 822 "dhcp6_parser.cc" break; case 28: // $@14: %empty -#line 315 "dhcp6_parser.yy" +#line 318 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } #line 828 "dhcp6_parser.cc" break; case 30: // value: "integer" -#line 323 "dhcp6_parser.yy" +#line 326 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 834 "dhcp6_parser.cc" break; case 31: // value: "floating point" -#line 324 "dhcp6_parser.yy" +#line 327 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } #line 840 "dhcp6_parser.cc" break; case 32: // value: "boolean" -#line 325 "dhcp6_parser.yy" +#line 328 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } #line 846 "dhcp6_parser.cc" break; case 33: // value: "constant string" -#line 326 "dhcp6_parser.yy" +#line 329 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 852 "dhcp6_parser.cc" break; case 34: // value: "null" -#line 327 "dhcp6_parser.yy" +#line 330 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 858 "dhcp6_parser.cc" break; case 35: // value: map2 -#line 328 "dhcp6_parser.yy" +#line 331 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 864 "dhcp6_parser.cc" break; case 36: // value: list_generic -#line 329 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 870 "dhcp6_parser.cc" break; case 37: // sub_json: value -#line 332 "dhcp6_parser.yy" +#line 335 "dhcp6_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); @@ -879,7 +879,7 @@ namespace isc { namespace dhcp { break; case 38: // $@15: %empty -#line 337 "dhcp6_parser.yy" +#line 340 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -890,7 +890,7 @@ namespace isc { namespace dhcp { break; case 39: // map2: "{" $@15 map_content "}" -#line 342 "dhcp6_parser.yy" +#line 345 "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 @@ -900,13 +900,13 @@ namespace isc { namespace dhcp { break; case 40: // map_value: map2 -#line 348 "dhcp6_parser.yy" +#line 351 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 906 "dhcp6_parser.cc" break; case 43: // not_empty_map: "constant string" ":" value -#line 355 "dhcp6_parser.yy" +#line 358 "dhcp6_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); @@ -916,7 +916,7 @@ namespace isc { namespace dhcp { break; case 44: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 360 "dhcp6_parser.yy" +#line 363 "dhcp6_parser.yy" { // map consisting of a shorter map followed by // comma and string:value @@ -927,7 +927,7 @@ namespace isc { namespace dhcp { break; case 45: // not_empty_map: not_empty_map "," -#line 366 "dhcp6_parser.yy" +#line 369 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -935,7 +935,7 @@ namespace isc { namespace dhcp { break; case 46: // $@16: %empty -#line 371 "dhcp6_parser.yy" +#line 374 "dhcp6_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -944,7 +944,7 @@ namespace isc { namespace dhcp { break; case 47: // list_generic: "[" $@16 list_content "]" -#line 374 "dhcp6_parser.yy" +#line 377 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here } @@ -952,7 +952,7 @@ namespace isc { namespace dhcp { break; case 50: // not_empty_list: value -#line 382 "dhcp6_parser.yy" +#line 385 "dhcp6_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -961,7 +961,7 @@ namespace isc { namespace dhcp { break; case 51: // not_empty_list: not_empty_list "," value -#line 386 "dhcp6_parser.yy" +#line 389 "dhcp6_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -970,7 +970,7 @@ namespace isc { namespace dhcp { break; case 52: // not_empty_list: not_empty_list "," -#line 390 "dhcp6_parser.yy" +#line 393 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -978,7 +978,7 @@ namespace isc { namespace dhcp { break; case 53: // $@17: %empty -#line 396 "dhcp6_parser.yy" +#line 399 "dhcp6_parser.yy" { // List parsing about to start } @@ -986,7 +986,7 @@ namespace isc { namespace dhcp { break; case 54: // list_strings: "[" $@17 list_strings_content "]" -#line 398 "dhcp6_parser.yy" +#line 401 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -995,7 +995,7 @@ namespace isc { namespace dhcp { break; case 57: // not_empty_list_strings: "constant string" -#line 407 "dhcp6_parser.yy" +#line 410 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1004,7 +1004,7 @@ namespace isc { namespace dhcp { break; case 58: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 411 "dhcp6_parser.yy" +#line 414 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1013,7 +1013,7 @@ namespace isc { namespace dhcp { break; case 59: // not_empty_list_strings: not_empty_list_strings "," -#line 415 "dhcp6_parser.yy" +#line 418 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1021,7 +1021,7 @@ namespace isc { namespace dhcp { break; case 60: // unknown_map_entry: "constant string" ":" -#line 425 "dhcp6_parser.yy" +#line 428 "dhcp6_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); @@ -1032,7 +1032,7 @@ namespace isc { namespace dhcp { break; case 61: // $@18: %empty -#line 434 "dhcp6_parser.yy" +#line 437 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1043,7 +1043,7 @@ namespace isc { namespace dhcp { break; case 62: // syntax_map: "{" $@18 global_object "}" -#line 439 "dhcp6_parser.yy" +#line 442 "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 @@ -1056,7 +1056,7 @@ namespace isc { namespace dhcp { break; case 63: // $@19: %empty -#line 449 "dhcp6_parser.yy" +#line 452 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1071,7 +1071,7 @@ namespace isc { namespace dhcp { break; case 64: // global_object: "Dhcp6" $@19 ":" "{" global_params "}" -#line 458 "dhcp6_parser.yy" +#line 461 "dhcp6_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); @@ -1081,7 +1081,7 @@ namespace isc { namespace dhcp { break; case 66: // global_object_comma: global_object "," -#line 466 "dhcp6_parser.yy" +#line 469 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1089,7 +1089,7 @@ namespace isc { namespace dhcp { break; case 67: // $@20: %empty -#line 472 "dhcp6_parser.yy" +#line 475 "dhcp6_parser.yy" { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1099,7 +1099,7 @@ namespace isc { namespace dhcp { break; case 68: // sub_dhcp6: "{" $@20 global_params "}" -#line 476 "dhcp6_parser.yy" +#line 479 "dhcp6_parser.yy" { // No global parameter is required // parsing completed @@ -1108,7 +1108,7 @@ namespace isc { namespace dhcp { break; case 71: // global_params: global_params "," -#line 483 "dhcp6_parser.yy" +#line 486 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1116,7 +1116,7 @@ namespace isc { namespace dhcp { break; case 137: // $@21: %empty -#line 557 "dhcp6_parser.yy" +#line 560 "dhcp6_parser.yy" { ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1125,7 +1125,7 @@ namespace isc { namespace dhcp { break; case 138: // data_directory: "data-directory" $@21 ":" "constant string" -#line 560 "dhcp6_parser.yy" +#line 563 "dhcp6_parser.yy" { ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data-directory", datadir); @@ -1135,7 +1135,7 @@ namespace isc { namespace dhcp { break; case 139: // preferred_lifetime: "preferred-lifetime" ":" "integer" -#line 566 "dhcp6_parser.yy" +#line 569 "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))); @@ -1145,7 +1145,7 @@ namespace isc { namespace dhcp { break; case 140: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" -#line 572 "dhcp6_parser.yy" +#line 575 "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))); @@ -1155,7 +1155,7 @@ namespace isc { namespace dhcp { break; case 141: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" -#line 578 "dhcp6_parser.yy" +#line 581 "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))); @@ -1165,7 +1165,7 @@ namespace isc { namespace dhcp { break; case 142: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 584 "dhcp6_parser.yy" +#line 587 "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))); @@ -1175,7 +1175,7 @@ namespace isc { namespace dhcp { break; case 143: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 590 "dhcp6_parser.yy" +#line 593 "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))); @@ -1185,7 +1185,7 @@ namespace isc { namespace dhcp { break; case 144: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 596 "dhcp6_parser.yy" +#line 599 "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))); @@ -1195,7 +1195,7 @@ namespace isc { namespace dhcp { break; case 145: // renew_timer: "renew-timer" ":" "integer" -#line 602 "dhcp6_parser.yy" +#line 605 "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))); @@ -1205,7 +1205,7 @@ namespace isc { namespace dhcp { break; case 146: // rebind_timer: "rebind-timer" ":" "integer" -#line 608 "dhcp6_parser.yy" +#line 611 "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))); @@ -1215,7 +1215,7 @@ namespace isc { namespace dhcp { break; case 147: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 614 "dhcp6_parser.yy" +#line 617 "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))); @@ -1225,7 +1225,7 @@ namespace isc { namespace dhcp { break; case 148: // t1_percent: "t1-percent" ":" "floating point" -#line 620 "dhcp6_parser.yy" +#line 623 "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))); @@ -1235,7 +1235,7 @@ namespace isc { namespace dhcp { break; case 149: // t2_percent: "t2-percent" ":" "floating point" -#line 626 "dhcp6_parser.yy" +#line 629 "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))); @@ -1245,7 +1245,7 @@ namespace isc { namespace dhcp { break; case 150: // cache_threshold: "cache-threshold" ":" "floating point" -#line 632 "dhcp6_parser.yy" +#line 635 "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))); @@ -1255,7 +1255,7 @@ namespace isc { namespace dhcp { break; case 151: // cache_max_age: "cache-max-age" ":" "integer" -#line 638 "dhcp6_parser.yy" +#line 641 "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))); @@ -1265,7 +1265,7 @@ namespace isc { namespace dhcp { break; case 152: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 644 "dhcp6_parser.yy" +#line 647 "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))); @@ -1275,7 +1275,7 @@ namespace isc { namespace dhcp { break; case 153: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 650 "dhcp6_parser.yy" +#line 653 "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))); @@ -1285,7 +1285,7 @@ namespace isc { namespace dhcp { break; case 154: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 656 "dhcp6_parser.yy" +#line 659 "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))); @@ -1295,7 +1295,7 @@ namespace isc { namespace dhcp { break; case 155: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 662 "dhcp6_parser.yy" +#line 665 "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))); @@ -1305,7 +1305,7 @@ namespace isc { namespace dhcp { break; case 156: // $@22: %empty -#line 668 "dhcp6_parser.yy" +#line 671 "dhcp6_parser.yy" { ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); @@ -1314,7 +1314,7 @@ namespace isc { namespace dhcp { break; case 157: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value -#line 671 "dhcp6_parser.yy" +#line 674 "dhcp6_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1323,7 +1323,7 @@ namespace isc { namespace dhcp { break; case 158: // ddns_replace_client_name_value: "when-present" -#line 677 "dhcp6_parser.yy" +#line 680 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } @@ -1331,7 +1331,7 @@ namespace isc { namespace dhcp { break; case 159: // ddns_replace_client_name_value: "never" -#line 680 "dhcp6_parser.yy" +#line 683 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } @@ -1339,7 +1339,7 @@ namespace isc { namespace dhcp { break; case 160: // ddns_replace_client_name_value: "always" -#line 683 "dhcp6_parser.yy" +#line 686 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } @@ -1347,7 +1347,7 @@ namespace isc { namespace dhcp { break; case 161: // ddns_replace_client_name_value: "when-not-present" -#line 686 "dhcp6_parser.yy" +#line 689 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } @@ -1355,7 +1355,7 @@ namespace isc { namespace dhcp { break; case 162: // ddns_replace_client_name_value: "boolean" -#line 689 "dhcp6_parser.yy" +#line 692 "dhcp6_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -1364,7 +1364,7 @@ namespace isc { namespace dhcp { break; case 163: // $@23: %empty -#line 695 "dhcp6_parser.yy" +#line 698 "dhcp6_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1373,7 +1373,7 @@ namespace isc { namespace dhcp { break; case 164: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" -#line 698 "dhcp6_parser.yy" +#line 701 "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); @@ -1383,7 +1383,7 @@ namespace isc { namespace dhcp { break; case 165: // $@24: %empty -#line 704 "dhcp6_parser.yy" +#line 707 "dhcp6_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1392,7 +1392,7 @@ namespace isc { namespace dhcp { break; case 166: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" -#line 707 "dhcp6_parser.yy" +#line 710 "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); @@ -1402,7 +1402,7 @@ namespace isc { namespace dhcp { break; case 167: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 713 "dhcp6_parser.yy" +#line 716 "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))); @@ -1412,7 +1412,7 @@ namespace isc { namespace dhcp { break; case 168: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 719 "dhcp6_parser.yy" +#line 722 "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))); @@ -1422,7 +1422,7 @@ namespace isc { namespace dhcp { break; case 169: // $@25: %empty -#line 725 "dhcp6_parser.yy" +#line 728 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1431,7 +1431,7 @@ namespace isc { namespace dhcp { break; case 170: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" -#line 728 "dhcp6_parser.yy" +#line 731 "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); @@ -1441,7 +1441,7 @@ namespace isc { namespace dhcp { break; case 171: // $@26: %empty -#line 734 "dhcp6_parser.yy" +#line 737 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1450,7 +1450,7 @@ namespace isc { namespace dhcp { break; case 172: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" -#line 737 "dhcp6_parser.yy" +#line 740 "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); @@ -1460,7 +1460,7 @@ namespace isc { namespace dhcp { break; case 173: // store_extended_info: "store-extended-info" ":" "boolean" -#line 743 "dhcp6_parser.yy" +#line 746 "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))); @@ -1470,7 +1470,7 @@ namespace isc { namespace dhcp { break; case 174: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 749 "dhcp6_parser.yy" +#line 752 "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))); @@ -1480,7 +1480,7 @@ namespace isc { namespace dhcp { break; case 175: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 755 "dhcp6_parser.yy" +#line 758 "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))); @@ -1490,7 +1490,7 @@ namespace isc { namespace dhcp { break; case 176: // $@27: %empty -#line 761 "dhcp6_parser.yy" +#line 764 "dhcp6_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1499,7 +1499,7 @@ namespace isc { namespace dhcp { break; case 177: // server_tag: "server-tag" $@27 ":" "constant string" -#line 764 "dhcp6_parser.yy" +#line 767 "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); @@ -1509,7 +1509,7 @@ namespace isc { namespace dhcp { break; case 178: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 770 "dhcp6_parser.yy" +#line 773 "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))); @@ -1519,7 +1519,7 @@ namespace isc { namespace dhcp { break; case 179: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" -#line 776 "dhcp6_parser.yy" +#line 779 "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))); @@ -1529,7 +1529,7 @@ namespace isc { namespace dhcp { break; case 180: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 782 "dhcp6_parser.yy" +#line 785 "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))); @@ -1539,7 +1539,7 @@ namespace isc { namespace dhcp { break; case 181: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" -#line 788 "dhcp6_parser.yy" +#line 791 "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))); @@ -1549,7 +1549,7 @@ namespace isc { namespace dhcp { break; case 182: // $@28: %empty -#line 794 "dhcp6_parser.yy" +#line 797 "dhcp6_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1561,7 +1561,7 @@ namespace isc { namespace dhcp { break; case 183: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}" -#line 800 "dhcp6_parser.yy" +#line 803 "dhcp6_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); @@ -1571,7 +1571,7 @@ namespace isc { namespace dhcp { break; case 184: // $@29: %empty -#line 806 "dhcp6_parser.yy" +#line 809 "dhcp6_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1581,7 +1581,7 @@ namespace isc { namespace dhcp { break; case 185: // sub_interfaces6: "{" $@29 interfaces_config_params "}" -#line 810 "dhcp6_parser.yy" +#line 813 "dhcp6_parser.yy" { // No interfaces config param is required // parsing completed @@ -1590,7 +1590,7 @@ namespace isc { namespace dhcp { break; case 188: // interfaces_config_params: interfaces_config_params "," -#line 817 "dhcp6_parser.yy" +#line 820 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1598,7 +1598,7 @@ namespace isc { namespace dhcp { break; case 197: // $@30: %empty -#line 832 "dhcp6_parser.yy" +#line 835 "dhcp6_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1610,7 +1610,7 @@ namespace isc { namespace dhcp { break; case 198: // interfaces_list: "interfaces" $@30 ":" list_strings -#line 838 "dhcp6_parser.yy" +#line 841 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); @@ -1619,7 +1619,7 @@ namespace isc { namespace dhcp { break; case 199: // re_detect: "re-detect" ":" "boolean" -#line 843 "dhcp6_parser.yy" +#line 846 "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))); @@ -1629,7 +1629,7 @@ namespace isc { namespace dhcp { break; case 200: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" -#line 849 "dhcp6_parser.yy" +#line 852 "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))); @@ -1639,7 +1639,7 @@ namespace isc { namespace dhcp { break; case 201: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" -#line 855 "dhcp6_parser.yy" +#line 858 "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))); @@ -1649,7 +1649,7 @@ namespace isc { namespace dhcp { break; case 202: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" -#line 861 "dhcp6_parser.yy" +#line 864 "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))); @@ -1659,7 +1659,7 @@ namespace isc { namespace dhcp { break; case 203: // $@31: %empty -#line 867 "dhcp6_parser.yy" +#line 870 "dhcp6_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1671,7 +1671,7 @@ namespace isc { namespace dhcp { break; case 204: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 873 "dhcp6_parser.yy" +#line 876 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1682,7 +1682,7 @@ namespace isc { namespace dhcp { break; case 205: // $@32: %empty -#line 880 "dhcp6_parser.yy" +#line 883 "dhcp6_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1694,7 +1694,7 @@ namespace isc { namespace dhcp { break; case 206: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}" -#line 886 "dhcp6_parser.yy" +#line 889 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1705,7 +1705,7 @@ namespace isc { namespace dhcp { break; case 207: // $@33: %empty -#line 893 "dhcp6_parser.yy" +#line 896 "dhcp6_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1717,7 +1717,7 @@ namespace isc { namespace dhcp { break; case 208: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]" -#line 899 "dhcp6_parser.yy" +#line 902 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); @@ -1726,7 +1726,7 @@ namespace isc { namespace dhcp { break; case 213: // not_empty_database_list: not_empty_database_list "," -#line 910 "dhcp6_parser.yy" +#line 913 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1734,7 +1734,7 @@ namespace isc { namespace dhcp { break; case 214: // $@34: %empty -#line 915 "dhcp6_parser.yy" +#line 918 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1744,7 +1744,7 @@ namespace isc { namespace dhcp { break; case 215: // database: "{" $@34 database_map_params "}" -#line 919 "dhcp6_parser.yy" +#line 922 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1754,15 +1754,15 @@ namespace isc { namespace dhcp { break; case 218: // database_map_params: database_map_params "," -#line 927 "dhcp6_parser.yy" +#line 930 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } #line 1762 "dhcp6_parser.cc" break; - case 238: // $@35: %empty -#line 953 "dhcp6_parser.yy" + case 241: // $@35: %empty +#line 959 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); @@ -1770,8 +1770,8 @@ namespace isc { namespace dhcp { #line 1771 "dhcp6_parser.cc" break; - case 239: // database_type: "type" $@35 ":" db_type -#line 956 "dhcp6_parser.yy" + case 242: // database_type: "type" $@35 ":" db_type +#line 962 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1779,26 +1779,26 @@ namespace isc { namespace dhcp { #line 1780 "dhcp6_parser.cc" break; - case 240: // db_type: "memfile" -#line 961 "dhcp6_parser.yy" + case 243: // db_type: "memfile" +#line 967 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } #line 1786 "dhcp6_parser.cc" break; - case 241: // db_type: "mysql" -#line 962 "dhcp6_parser.yy" + case 244: // db_type: "mysql" +#line 968 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } #line 1792 "dhcp6_parser.cc" break; - case 242: // db_type: "postgresql" -#line 963 "dhcp6_parser.yy" + case 245: // db_type: "postgresql" +#line 969 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } #line 1798 "dhcp6_parser.cc" break; - case 243: // $@36: %empty -#line 966 "dhcp6_parser.yy" + case 246: // $@36: %empty +#line 972 "dhcp6_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1806,8 +1806,8 @@ namespace isc { namespace dhcp { #line 1807 "dhcp6_parser.cc" break; - case 244: // user: "user" $@36 ":" "constant string" -#line 969 "dhcp6_parser.yy" + case 247: // user: "user" $@36 ":" "constant string" +#line 975 "dhcp6_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); @@ -1816,8 +1816,8 @@ namespace isc { namespace dhcp { #line 1817 "dhcp6_parser.cc" break; - case 245: // $@37: %empty -#line 975 "dhcp6_parser.yy" + case 248: // $@37: %empty +#line 981 "dhcp6_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1825,8 +1825,8 @@ namespace isc { namespace dhcp { #line 1826 "dhcp6_parser.cc" break; - case 246: // password: "password" $@37 ":" "constant string" -#line 978 "dhcp6_parser.yy" + case 249: // password: "password" $@37 ":" "constant string" +#line 984 "dhcp6_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); @@ -1835,8 +1835,8 @@ namespace isc { namespace dhcp { #line 1836 "dhcp6_parser.cc" break; - case 247: // $@38: %empty -#line 984 "dhcp6_parser.yy" + case 250: // $@38: %empty +#line 990 "dhcp6_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1844,8 +1844,8 @@ namespace isc { namespace dhcp { #line 1845 "dhcp6_parser.cc" break; - case 248: // host: "host" $@38 ":" "constant string" -#line 987 "dhcp6_parser.yy" + case 251: // host: "host" $@38 ":" "constant string" +#line 993 "dhcp6_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); @@ -1854,8 +1854,8 @@ namespace isc { namespace dhcp { #line 1855 "dhcp6_parser.cc" break; - case 249: // port: "port" ":" "integer" -#line 993 "dhcp6_parser.yy" + case 252: // port: "port" ":" "integer" +#line 999 "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))); @@ -1864,8 +1864,8 @@ namespace isc { namespace dhcp { #line 1865 "dhcp6_parser.cc" break; - case 250: // $@39: %empty -#line 999 "dhcp6_parser.yy" + case 253: // $@39: %empty +#line 1005 "dhcp6_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1873,8 +1873,8 @@ namespace isc { namespace dhcp { #line 1874 "dhcp6_parser.cc" break; - case 251: // name: "name" $@39 ":" "constant string" -#line 1002 "dhcp6_parser.yy" + case 254: // name: "name" $@39 ":" "constant string" +#line 1008 "dhcp6_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); @@ -1883,8 +1883,8 @@ namespace isc { namespace dhcp { #line 1884 "dhcp6_parser.cc" break; - case 252: // persist: "persist" ":" "boolean" -#line 1008 "dhcp6_parser.yy" + case 255: // persist: "persist" ":" "boolean" +#line 1014 "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))); @@ -1893,8 +1893,8 @@ namespace isc { namespace dhcp { #line 1894 "dhcp6_parser.cc" break; - case 253: // lfc_interval: "lfc-interval" ":" "integer" -#line 1014 "dhcp6_parser.yy" + case 256: // lfc_interval: "lfc-interval" ":" "integer" +#line 1020 "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))); @@ -1903,8 +1903,8 @@ namespace isc { namespace dhcp { #line 1904 "dhcp6_parser.cc" break; - case 254: // readonly: "readonly" ":" "boolean" -#line 1020 "dhcp6_parser.yy" + case 257: // readonly: "readonly" ":" "boolean" +#line 1026 "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))); @@ -1913,8 +1913,8 @@ namespace isc { namespace dhcp { #line 1914 "dhcp6_parser.cc" break; - case 255: // connect_timeout: "connect-timeout" ":" "integer" -#line 1026 "dhcp6_parser.yy" + case 258: // connect_timeout: "connect-timeout" ":" "integer" +#line 1032 "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))); @@ -1923,150 +1923,180 @@ namespace isc { namespace dhcp { #line 1924 "dhcp6_parser.cc" break; - case 256: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1032 "dhcp6_parser.yy" + case 259: // read_timeout: "read-timeout" ":" "integer" +#line 1038 "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 1934 "dhcp6_parser.cc" + break; + + case 260: // write_timeout: "write-timeout" ":" "integer" +#line 1044 "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 1944 "dhcp6_parser.cc" + break; + + case 261: // tcp_user_timeout: "tcp-user-timeout" ":" "integer" +#line 1050 "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 1954 "dhcp6_parser.cc" + break; + + case 262: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" +#line 1057 "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 1934 "dhcp6_parser.cc" +#line 1964 "dhcp6_parser.cc" break; - case 257: // $@40: %empty -#line 1038 "dhcp6_parser.yy" + case 263: // $@40: %empty +#line 1063 "dhcp6_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 1943 "dhcp6_parser.cc" +#line 1973 "dhcp6_parser.cc" break; - case 258: // on_fail: "on-fail" $@40 ":" on_fail_mode -#line 1041 "dhcp6_parser.yy" + case 264: // on_fail: "on-fail" $@40 ":" on_fail_mode +#line 1066 "dhcp6_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1952 "dhcp6_parser.cc" +#line 1982 "dhcp6_parser.cc" break; - case 259: // on_fail_mode: "stop-retry-exit" -#line 1046 "dhcp6_parser.yy" + case 265: // on_fail_mode: "stop-retry-exit" +#line 1071 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 1958 "dhcp6_parser.cc" +#line 1988 "dhcp6_parser.cc" break; - case 260: // on_fail_mode: "serve-retry-exit" -#line 1047 "dhcp6_parser.yy" + case 266: // on_fail_mode: "serve-retry-exit" +#line 1072 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 1964 "dhcp6_parser.cc" +#line 1994 "dhcp6_parser.cc" break; - case 261: // on_fail_mode: "serve-retry-continue" -#line 1048 "dhcp6_parser.yy" + case 267: // on_fail_mode: "serve-retry-continue" +#line 1073 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 1970 "dhcp6_parser.cc" +#line 2000 "dhcp6_parser.cc" break; - case 262: // max_row_errors: "max-row-errors" ":" "integer" -#line 1051 "dhcp6_parser.yy" + case 268: // max_row_errors: "max-row-errors" ":" "integer" +#line 1076 "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 1980 "dhcp6_parser.cc" +#line 2010 "dhcp6_parser.cc" break; - case 263: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1057 "dhcp6_parser.yy" + case 269: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" +#line 1082 "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 1990 "dhcp6_parser.cc" +#line 2020 "dhcp6_parser.cc" break; - case 264: // $@41: %empty -#line 1063 "dhcp6_parser.yy" + case 270: // $@41: %empty +#line 1088 "dhcp6_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1999 "dhcp6_parser.cc" +#line 2029 "dhcp6_parser.cc" break; - case 265: // trust_anchor: "trust-anchor" $@41 ":" "constant string" -#line 1066 "dhcp6_parser.yy" + case 271: // trust_anchor: "trust-anchor" $@41 ":" "constant string" +#line 1091 "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 2009 "dhcp6_parser.cc" +#line 2039 "dhcp6_parser.cc" break; - case 266: // $@42: %empty -#line 1072 "dhcp6_parser.yy" + case 272: // $@42: %empty +#line 1097 "dhcp6_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2018 "dhcp6_parser.cc" +#line 2048 "dhcp6_parser.cc" break; - case 267: // cert_file: "cert-file" $@42 ":" "constant string" -#line 1075 "dhcp6_parser.yy" + case 273: // cert_file: "cert-file" $@42 ":" "constant string" +#line 1100 "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 2028 "dhcp6_parser.cc" +#line 2058 "dhcp6_parser.cc" break; - case 268: // $@43: %empty -#line 1081 "dhcp6_parser.yy" + case 274: // $@43: %empty +#line 1106 "dhcp6_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2037 "dhcp6_parser.cc" +#line 2067 "dhcp6_parser.cc" break; - case 269: // key_file: "key-file" $@43 ":" "constant string" -#line 1084 "dhcp6_parser.yy" + case 275: // key_file: "key-file" $@43 ":" "constant string" +#line 1109 "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 2047 "dhcp6_parser.cc" +#line 2077 "dhcp6_parser.cc" break; - case 270: // $@44: %empty -#line 1090 "dhcp6_parser.yy" + case 276: // $@44: %empty +#line 1115 "dhcp6_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2056 "dhcp6_parser.cc" +#line 2086 "dhcp6_parser.cc" break; - case 271: // cipher_list: "cipher-list" $@44 ":" "constant string" -#line 1093 "dhcp6_parser.yy" + case 277: // cipher_list: "cipher-list" $@44 ":" "constant string" +#line 1118 "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 2066 "dhcp6_parser.cc" +#line 2096 "dhcp6_parser.cc" break; - case 272: // $@45: %empty -#line 1099 "dhcp6_parser.yy" + case 278: // $@45: %empty +#line 1124 "dhcp6_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2074,37 +2104,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 2078 "dhcp6_parser.cc" +#line 2108 "dhcp6_parser.cc" break; - case 273: // sanity_checks: "sanity-checks" $@45 ":" "{" sanity_checks_params "}" -#line 1105 "dhcp6_parser.yy" + case 279: // sanity_checks: "sanity-checks" $@45 ":" "{" sanity_checks_params "}" +#line 1130 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2087 "dhcp6_parser.cc" +#line 2117 "dhcp6_parser.cc" break; - case 276: // sanity_checks_params: sanity_checks_params "," -#line 1112 "dhcp6_parser.yy" + case 282: // sanity_checks_params: sanity_checks_params "," +#line 1137 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2095 "dhcp6_parser.cc" +#line 2125 "dhcp6_parser.cc" break; - case 278: // $@46: %empty -#line 1119 "dhcp6_parser.yy" + case 284: // $@46: %empty +#line 1144 "dhcp6_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2104 "dhcp6_parser.cc" +#line 2134 "dhcp6_parser.cc" break; - case 279: // lease_checks: "lease-checks" $@46 ":" "constant string" -#line 1122 "dhcp6_parser.yy" + case 285: // lease_checks: "lease-checks" $@46 ":" "constant string" +#line 1147 "dhcp6_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -2120,11 +2150,11 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 2124 "dhcp6_parser.cc" +#line 2154 "dhcp6_parser.cc" break; - case 280: // $@47: %empty -#line 1138 "dhcp6_parser.yy" + case 286: // $@47: %empty +#line 1163 "dhcp6_parser.yy" { ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2132,46 +2162,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.MAC_SOURCES); } -#line 2136 "dhcp6_parser.cc" +#line 2166 "dhcp6_parser.cc" break; - case 281: // mac_sources: "mac-sources" $@47 ":" "[" mac_sources_list "]" -#line 1144 "dhcp6_parser.yy" + case 287: // mac_sources: "mac-sources" $@47 ":" "[" mac_sources_list "]" +#line 1169 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2145 "dhcp6_parser.cc" +#line 2175 "dhcp6_parser.cc" break; - case 284: // mac_sources_list: mac_sources_list "," -#line 1151 "dhcp6_parser.yy" + case 290: // mac_sources_list: mac_sources_list "," +#line 1176 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2153 "dhcp6_parser.cc" +#line 2183 "dhcp6_parser.cc" break; - case 287: // duid_id: "duid" -#line 1160 "dhcp6_parser.yy" + case 293: // duid_id: "duid" +#line 1185 "dhcp6_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2162 "dhcp6_parser.cc" +#line 2192 "dhcp6_parser.cc" break; - case 288: // string_id: "constant string" -#line 1165 "dhcp6_parser.yy" + case 294: // string_id: "constant string" +#line 1190 "dhcp6_parser.yy" { ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2171 "dhcp6_parser.cc" +#line 2201 "dhcp6_parser.cc" break; - case 289: // $@48: %empty -#line 1170 "dhcp6_parser.yy" + case 295: // $@48: %empty +#line 1195 "dhcp6_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2179,46 +2209,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2183 "dhcp6_parser.cc" +#line 2213 "dhcp6_parser.cc" break; - case 290: // host_reservation_identifiers: "host-reservation-identifiers" $@48 ":" "[" host_reservation_identifiers_list "]" -#line 1176 "dhcp6_parser.yy" + case 296: // host_reservation_identifiers: "host-reservation-identifiers" $@48 ":" "[" host_reservation_identifiers_list "]" +#line 1201 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2192 "dhcp6_parser.cc" +#line 2222 "dhcp6_parser.cc" break; - case 293: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1183 "dhcp6_parser.yy" + case 299: // host_reservation_identifiers_list: host_reservation_identifiers_list "," +#line 1208 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2200 "dhcp6_parser.cc" +#line 2230 "dhcp6_parser.cc" break; - case 297: // hw_address_id: "hw-address" -#line 1193 "dhcp6_parser.yy" + case 303: // hw_address_id: "hw-address" +#line 1218 "dhcp6_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2209 "dhcp6_parser.cc" +#line 2239 "dhcp6_parser.cc" break; - case 298: // flex_id: "flex-id" -#line 1198 "dhcp6_parser.yy" + case 304: // flex_id: "flex-id" +#line 1223 "dhcp6_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2218 "dhcp6_parser.cc" +#line 2248 "dhcp6_parser.cc" break; - case 299: // $@49: %empty -#line 1205 "dhcp6_parser.yy" + case 305: // $@49: %empty +#line 1230 "dhcp6_parser.yy" { ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2226,20 +2256,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2230 "dhcp6_parser.cc" +#line 2260 "dhcp6_parser.cc" break; - case 300: // relay_supplied_options: "relay-supplied-options" $@49 ":" "[" list_content "]" -#line 1211 "dhcp6_parser.yy" + case 306: // relay_supplied_options: "relay-supplied-options" $@49 ":" "[" list_content "]" +#line 1236 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2239 "dhcp6_parser.cc" +#line 2269 "dhcp6_parser.cc" break; - case 301: // $@50: %empty -#line 1218 "dhcp6_parser.yy" + case 307: // $@50: %empty +#line 1243 "dhcp6_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2247,60 +2277,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2251 "dhcp6_parser.cc" +#line 2281 "dhcp6_parser.cc" break; - case 302: // dhcp_multi_threading: "multi-threading" $@50 ":" "{" multi_threading_params "}" -#line 1224 "dhcp6_parser.yy" + case 308: // dhcp_multi_threading: "multi-threading" $@50 ":" "{" multi_threading_params "}" +#line 1249 "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 2262 "dhcp6_parser.cc" +#line 2292 "dhcp6_parser.cc" break; - case 305: // multi_threading_params: multi_threading_params "," -#line 1233 "dhcp6_parser.yy" + case 311: // multi_threading_params: multi_threading_params "," +#line 1258 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2270 "dhcp6_parser.cc" +#line 2300 "dhcp6_parser.cc" break; - case 312: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1246 "dhcp6_parser.yy" + case 318: // enable_multi_threading: "enable-multi-threading" ":" "boolean" +#line 1271 "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 2280 "dhcp6_parser.cc" +#line 2310 "dhcp6_parser.cc" break; - case 313: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1252 "dhcp6_parser.yy" + case 319: // thread_pool_size: "thread-pool-size" ":" "integer" +#line 1277 "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 2290 "dhcp6_parser.cc" +#line 2320 "dhcp6_parser.cc" break; - case 314: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1258 "dhcp6_parser.yy" + case 320: // packet_queue_size: "packet-queue-size" ":" "integer" +#line 1283 "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 2300 "dhcp6_parser.cc" +#line 2330 "dhcp6_parser.cc" break; - case 315: // $@51: %empty -#line 1264 "dhcp6_parser.yy" + case 321: // $@51: %empty +#line 1289 "dhcp6_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2308,113 +2338,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2312 "dhcp6_parser.cc" +#line 2342 "dhcp6_parser.cc" break; - case 316: // hooks_libraries: "hooks-libraries" $@51 ":" "[" hooks_libraries_list "]" -#line 1270 "dhcp6_parser.yy" + case 322: // hooks_libraries: "hooks-libraries" $@51 ":" "[" hooks_libraries_list "]" +#line 1295 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2321 "dhcp6_parser.cc" +#line 2351 "dhcp6_parser.cc" break; - case 321: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1281 "dhcp6_parser.yy" + case 327: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," +#line 1306 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2329 "dhcp6_parser.cc" +#line 2359 "dhcp6_parser.cc" break; - case 322: // $@52: %empty -#line 1286 "dhcp6_parser.yy" + case 328: // $@52: %empty +#line 1311 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2339 "dhcp6_parser.cc" +#line 2369 "dhcp6_parser.cc" break; - case 323: // hooks_library: "{" $@52 hooks_params "}" -#line 1290 "dhcp6_parser.yy" + case 329: // hooks_library: "{" $@52 hooks_params "}" +#line 1315 "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 2349 "dhcp6_parser.cc" +#line 2379 "dhcp6_parser.cc" break; - case 324: // $@53: %empty -#line 1296 "dhcp6_parser.yy" + case 330: // $@53: %empty +#line 1321 "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 2359 "dhcp6_parser.cc" +#line 2389 "dhcp6_parser.cc" break; - case 325: // sub_hooks_library: "{" $@53 hooks_params "}" -#line 1300 "dhcp6_parser.yy" + case 331: // sub_hooks_library: "{" $@53 hooks_params "}" +#line 1325 "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 2369 "dhcp6_parser.cc" +#line 2399 "dhcp6_parser.cc" break; - case 328: // hooks_params: hooks_params "," -#line 1308 "dhcp6_parser.yy" + case 334: // hooks_params: hooks_params "," +#line 1333 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2377 "dhcp6_parser.cc" +#line 2407 "dhcp6_parser.cc" break; - case 332: // $@54: %empty -#line 1318 "dhcp6_parser.yy" + case 338: // $@54: %empty +#line 1343 "dhcp6_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2386 "dhcp6_parser.cc" +#line 2416 "dhcp6_parser.cc" break; - case 333: // library: "library" $@54 ":" "constant string" -#line 1321 "dhcp6_parser.yy" + case 339: // library: "library" $@54 ":" "constant string" +#line 1346 "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 2396 "dhcp6_parser.cc" +#line 2426 "dhcp6_parser.cc" break; - case 334: // $@55: %empty -#line 1327 "dhcp6_parser.yy" + case 340: // $@55: %empty +#line 1352 "dhcp6_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2405 "dhcp6_parser.cc" +#line 2435 "dhcp6_parser.cc" break; - case 335: // parameters: "parameters" $@55 ":" map_value -#line 1330 "dhcp6_parser.yy" + case 341: // parameters: "parameters" $@55 ":" map_value +#line 1355 "dhcp6_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2414 "dhcp6_parser.cc" +#line 2444 "dhcp6_parser.cc" break; - case 336: // $@56: %empty -#line 1336 "dhcp6_parser.yy" + case 342: // $@56: %empty +#line 1361 "dhcp6_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2422,89 +2452,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2426 "dhcp6_parser.cc" +#line 2456 "dhcp6_parser.cc" break; - case 337: // expired_leases_processing: "expired-leases-processing" $@56 ":" "{" expired_leases_params "}" -#line 1342 "dhcp6_parser.yy" + case 343: // expired_leases_processing: "expired-leases-processing" $@56 ":" "{" expired_leases_params "}" +#line 1367 "dhcp6_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2436 "dhcp6_parser.cc" +#line 2466 "dhcp6_parser.cc" break; - case 340: // expired_leases_params: expired_leases_params "," -#line 1350 "dhcp6_parser.yy" + case 346: // expired_leases_params: expired_leases_params "," +#line 1375 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2444 "dhcp6_parser.cc" +#line 2474 "dhcp6_parser.cc" break; - case 347: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1363 "dhcp6_parser.yy" + case 353: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" +#line 1388 "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 2454 "dhcp6_parser.cc" +#line 2484 "dhcp6_parser.cc" break; - case 348: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1369 "dhcp6_parser.yy" + case 354: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" +#line 1394 "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 2464 "dhcp6_parser.cc" +#line 2494 "dhcp6_parser.cc" break; - case 349: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1375 "dhcp6_parser.yy" + case 355: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" +#line 1400 "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 2474 "dhcp6_parser.cc" +#line 2504 "dhcp6_parser.cc" break; - case 350: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1381 "dhcp6_parser.yy" + case 356: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" +#line 1406 "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 2484 "dhcp6_parser.cc" +#line 2514 "dhcp6_parser.cc" break; - case 351: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1387 "dhcp6_parser.yy" + case 357: // max_reclaim_time: "max-reclaim-time" ":" "integer" +#line 1412 "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 2494 "dhcp6_parser.cc" +#line 2524 "dhcp6_parser.cc" break; - case 352: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1393 "dhcp6_parser.yy" + case 358: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" +#line 1418 "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 2504 "dhcp6_parser.cc" +#line 2534 "dhcp6_parser.cc" break; - case 353: // $@57: %empty -#line 1402 "dhcp6_parser.yy" + case 359: // $@57: %empty +#line 1427 "dhcp6_parser.yy" { ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2512,38 +2542,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET6); } -#line 2516 "dhcp6_parser.cc" +#line 2546 "dhcp6_parser.cc" break; - case 354: // subnet6_list: "subnet6" $@57 ":" "[" subnet6_list_content "]" -#line 1408 "dhcp6_parser.yy" + case 360: // subnet6_list: "subnet6" $@57 ":" "[" subnet6_list_content "]" +#line 1433 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2525 "dhcp6_parser.cc" +#line 2555 "dhcp6_parser.cc" break; - case 359: // not_empty_subnet6_list: not_empty_subnet6_list "," -#line 1422 "dhcp6_parser.yy" + case 365: // not_empty_subnet6_list: not_empty_subnet6_list "," +#line 1447 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2533 "dhcp6_parser.cc" +#line 2563 "dhcp6_parser.cc" break; - case 360: // $@58: %empty -#line 1431 "dhcp6_parser.yy" + case 366: // $@58: %empty +#line 1456 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2543 "dhcp6_parser.cc" +#line 2573 "dhcp6_parser.cc" break; - case 361: // subnet6: "{" $@58 subnet6_params "}" -#line 1435 "dhcp6_parser.yy" + case 367: // subnet6: "{" $@58 subnet6_params "}" +#line 1460 "dhcp6_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2565,115 +2595,115 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2569 "dhcp6_parser.cc" +#line 2599 "dhcp6_parser.cc" break; - case 362: // $@59: %empty -#line 1457 "dhcp6_parser.yy" + case 368: // $@59: %empty +#line 1482 "dhcp6_parser.yy" { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2579 "dhcp6_parser.cc" +#line 2609 "dhcp6_parser.cc" break; - case 363: // sub_subnet6: "{" $@59 subnet6_params "}" -#line 1461 "dhcp6_parser.yy" + case 369: // sub_subnet6: "{" $@59 subnet6_params "}" +#line 1486 "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 2589 "dhcp6_parser.cc" +#line 2619 "dhcp6_parser.cc" break; - case 366: // subnet6_params: subnet6_params "," -#line 1470 "dhcp6_parser.yy" + case 372: // subnet6_params: subnet6_params "," +#line 1495 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2597 "dhcp6_parser.cc" +#line 2627 "dhcp6_parser.cc" break; - case 410: // $@60: %empty -#line 1521 "dhcp6_parser.yy" + case 416: // $@60: %empty +#line 1546 "dhcp6_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2606 "dhcp6_parser.cc" +#line 2636 "dhcp6_parser.cc" break; - case 411: // subnet: "subnet" $@60 ":" "constant string" -#line 1524 "dhcp6_parser.yy" + case 417: // subnet: "subnet" $@60 ":" "constant string" +#line 1549 "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 2616 "dhcp6_parser.cc" +#line 2646 "dhcp6_parser.cc" break; - case 412: // $@61: %empty -#line 1530 "dhcp6_parser.yy" + case 418: // $@61: %empty +#line 1555 "dhcp6_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2625 "dhcp6_parser.cc" +#line 2655 "dhcp6_parser.cc" break; - case 413: // interface: "interface" $@61 ":" "constant string" -#line 1533 "dhcp6_parser.yy" + case 419: // interface: "interface" $@61 ":" "constant string" +#line 1558 "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 2635 "dhcp6_parser.cc" +#line 2665 "dhcp6_parser.cc" break; - case 414: // $@62: %empty -#line 1539 "dhcp6_parser.yy" + case 420: // $@62: %empty +#line 1564 "dhcp6_parser.yy" { ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2644 "dhcp6_parser.cc" +#line 2674 "dhcp6_parser.cc" break; - case 415: // interface_id: "interface-id" $@62 ":" "constant string" -#line 1542 "dhcp6_parser.yy" + case 421: // interface_id: "interface-id" $@62 ":" "constant string" +#line 1567 "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 2654 "dhcp6_parser.cc" +#line 2684 "dhcp6_parser.cc" break; - case 416: // $@63: %empty -#line 1548 "dhcp6_parser.yy" + case 422: // $@63: %empty +#line 1573 "dhcp6_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2663 "dhcp6_parser.cc" +#line 2693 "dhcp6_parser.cc" break; - case 417: // client_class: "client-class" $@63 ":" "constant string" -#line 1551 "dhcp6_parser.yy" + case 423: // client_class: "client-class" $@63 ":" "constant string" +#line 1576 "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 2673 "dhcp6_parser.cc" +#line 2703 "dhcp6_parser.cc" break; - case 418: // $@64: %empty -#line 1557 "dhcp6_parser.yy" + case 424: // $@64: %empty +#line 1582 "dhcp6_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2681,112 +2711,112 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2685 "dhcp6_parser.cc" +#line 2715 "dhcp6_parser.cc" break; - case 419: // require_client_classes: "require-client-classes" $@64 ":" list_strings -#line 1563 "dhcp6_parser.yy" + case 425: // require_client_classes: "require-client-classes" $@64 ":" list_strings +#line 1588 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2694 "dhcp6_parser.cc" +#line 2724 "dhcp6_parser.cc" break; - case 420: // reservations_global: "reservations-global" ":" "boolean" -#line 1568 "dhcp6_parser.yy" + case 426: // reservations_global: "reservations-global" ":" "boolean" +#line 1593 "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 2704 "dhcp6_parser.cc" +#line 2734 "dhcp6_parser.cc" break; - case 421: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1574 "dhcp6_parser.yy" + case 427: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" +#line 1599 "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 2714 "dhcp6_parser.cc" +#line 2744 "dhcp6_parser.cc" break; - case 422: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1580 "dhcp6_parser.yy" + case 428: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" +#line 1605 "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 2724 "dhcp6_parser.cc" +#line 2754 "dhcp6_parser.cc" break; - case 423: // $@65: %empty -#line 1586 "dhcp6_parser.yy" + case 429: // $@65: %empty +#line 1611 "dhcp6_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2733 "dhcp6_parser.cc" +#line 2763 "dhcp6_parser.cc" break; - case 424: // reservation_mode: "reservation-mode" $@65 ":" hr_mode -#line 1589 "dhcp6_parser.yy" + case 430: // reservation_mode: "reservation-mode" $@65 ":" hr_mode +#line 1614 "dhcp6_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2742 "dhcp6_parser.cc" +#line 2772 "dhcp6_parser.cc" break; - case 425: // hr_mode: "disabled" -#line 1594 "dhcp6_parser.yy" + case 431: // hr_mode: "disabled" +#line 1619 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2748 "dhcp6_parser.cc" +#line 2778 "dhcp6_parser.cc" break; - case 426: // hr_mode: "out-of-pool" -#line 1595 "dhcp6_parser.yy" + case 432: // hr_mode: "out-of-pool" +#line 1620 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2754 "dhcp6_parser.cc" +#line 2784 "dhcp6_parser.cc" break; - case 427: // hr_mode: "global" -#line 1596 "dhcp6_parser.yy" + case 433: // hr_mode: "global" +#line 1621 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2760 "dhcp6_parser.cc" +#line 2790 "dhcp6_parser.cc" break; - case 428: // hr_mode: "all" -#line 1597 "dhcp6_parser.yy" + case 434: // hr_mode: "all" +#line 1622 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2766 "dhcp6_parser.cc" +#line 2796 "dhcp6_parser.cc" break; - case 429: // id: "id" ":" "integer" -#line 1600 "dhcp6_parser.yy" + case 435: // id: "id" ":" "integer" +#line 1625 "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 2776 "dhcp6_parser.cc" +#line 2806 "dhcp6_parser.cc" break; - case 430: // rapid_commit: "rapid-commit" ":" "boolean" -#line 1606 "dhcp6_parser.yy" + case 436: // rapid_commit: "rapid-commit" ":" "boolean" +#line 1631 "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 2786 "dhcp6_parser.cc" +#line 2816 "dhcp6_parser.cc" break; - case 431: // $@66: %empty -#line 1614 "dhcp6_parser.yy" + case 437: // $@66: %empty +#line 1639 "dhcp6_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2794,54 +2824,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2798 "dhcp6_parser.cc" +#line 2828 "dhcp6_parser.cc" break; - case 432: // shared_networks: "shared-networks" $@66 ":" "[" shared_networks_content "]" -#line 1620 "dhcp6_parser.yy" + case 438: // shared_networks: "shared-networks" $@66 ":" "[" shared_networks_content "]" +#line 1645 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2807 "dhcp6_parser.cc" +#line 2837 "dhcp6_parser.cc" break; - case 437: // shared_networks_list: shared_networks_list "," -#line 1633 "dhcp6_parser.yy" + case 443: // shared_networks_list: shared_networks_list "," +#line 1658 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2815 "dhcp6_parser.cc" +#line 2845 "dhcp6_parser.cc" break; - case 438: // $@67: %empty -#line 1638 "dhcp6_parser.yy" + case 444: // $@67: %empty +#line 1663 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2825 "dhcp6_parser.cc" +#line 2855 "dhcp6_parser.cc" break; - case 439: // shared_network: "{" $@67 shared_network_params "}" -#line 1642 "dhcp6_parser.yy" + case 445: // shared_network: "{" $@67 shared_network_params "}" +#line 1667 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 2833 "dhcp6_parser.cc" +#line 2863 "dhcp6_parser.cc" break; - case 442: // shared_network_params: shared_network_params "," -#line 1648 "dhcp6_parser.yy" + case 448: // shared_network_params: shared_network_params "," +#line 1673 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2841 "dhcp6_parser.cc" +#line 2871 "dhcp6_parser.cc" break; - case 483: // $@68: %empty -#line 1699 "dhcp6_parser.yy" + case 489: // $@68: %empty +#line 1724 "dhcp6_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2849,55 +2879,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2853 "dhcp6_parser.cc" +#line 2883 "dhcp6_parser.cc" break; - case 484: // option_def_list: "option-def" $@68 ":" "[" option_def_list_content "]" -#line 1705 "dhcp6_parser.yy" + case 490: // option_def_list: "option-def" $@68 ":" "[" option_def_list_content "]" +#line 1730 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2862 "dhcp6_parser.cc" +#line 2892 "dhcp6_parser.cc" break; - case 485: // $@69: %empty -#line 1713 "dhcp6_parser.yy" + case 491: // $@69: %empty +#line 1738 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2871 "dhcp6_parser.cc" +#line 2901 "dhcp6_parser.cc" break; - case 486: // sub_option_def_list: "{" $@69 option_def_list "}" -#line 1716 "dhcp6_parser.yy" + case 492: // sub_option_def_list: "{" $@69 option_def_list "}" +#line 1741 "dhcp6_parser.yy" { // parsing completed } -#line 2879 "dhcp6_parser.cc" +#line 2909 "dhcp6_parser.cc" break; - case 491: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1728 "dhcp6_parser.yy" + case 497: // not_empty_option_def_list: not_empty_option_def_list "," +#line 1753 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2887 "dhcp6_parser.cc" +#line 2917 "dhcp6_parser.cc" break; - case 492: // $@70: %empty -#line 1735 "dhcp6_parser.yy" + case 498: // $@70: %empty +#line 1760 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2897 "dhcp6_parser.cc" +#line 2927 "dhcp6_parser.cc" break; - case 493: // option_def_entry: "{" $@70 option_def_params "}" -#line 1739 "dhcp6_parser.yy" + case 499: // option_def_entry: "{" $@70 option_def_params "}" +#line 1764 "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)); @@ -2905,21 +2935,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2909 "dhcp6_parser.cc" +#line 2939 "dhcp6_parser.cc" break; - case 494: // $@71: %empty -#line 1750 "dhcp6_parser.yy" + case 500: // $@71: %empty +#line 1775 "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 2919 "dhcp6_parser.cc" +#line 2949 "dhcp6_parser.cc" break; - case 495: // sub_option_def: "{" $@71 option_def_params "}" -#line 1754 "dhcp6_parser.yy" + case 501: // sub_option_def: "{" $@71 option_def_params "}" +#line 1779 "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)); @@ -2927,115 +2957,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2931 "dhcp6_parser.cc" +#line 2961 "dhcp6_parser.cc" break; - case 500: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1770 "dhcp6_parser.yy" + case 506: // not_empty_option_def_params: not_empty_option_def_params "," +#line 1795 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2939 "dhcp6_parser.cc" +#line 2969 "dhcp6_parser.cc" break; - case 512: // code: "code" ":" "integer" -#line 1789 "dhcp6_parser.yy" + case 518: // code: "code" ":" "integer" +#line 1814 "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 2949 "dhcp6_parser.cc" +#line 2979 "dhcp6_parser.cc" break; - case 514: // $@72: %empty -#line 1797 "dhcp6_parser.yy" + case 520: // $@72: %empty +#line 1822 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2958 "dhcp6_parser.cc" +#line 2988 "dhcp6_parser.cc" break; - case 515: // option_def_type: "type" $@72 ":" "constant string" -#line 1800 "dhcp6_parser.yy" + case 521: // option_def_type: "type" $@72 ":" "constant string" +#line 1825 "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 2968 "dhcp6_parser.cc" +#line 2998 "dhcp6_parser.cc" break; - case 516: // $@73: %empty -#line 1806 "dhcp6_parser.yy" + case 522: // $@73: %empty +#line 1831 "dhcp6_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2977 "dhcp6_parser.cc" +#line 3007 "dhcp6_parser.cc" break; - case 517: // option_def_record_types: "record-types" $@73 ":" "constant string" -#line 1809 "dhcp6_parser.yy" + case 523: // option_def_record_types: "record-types" $@73 ":" "constant string" +#line 1834 "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 2987 "dhcp6_parser.cc" +#line 3017 "dhcp6_parser.cc" break; - case 518: // $@74: %empty -#line 1815 "dhcp6_parser.yy" + case 524: // $@74: %empty +#line 1840 "dhcp6_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2996 "dhcp6_parser.cc" +#line 3026 "dhcp6_parser.cc" break; - case 519: // space: "space" $@74 ":" "constant string" -#line 1818 "dhcp6_parser.yy" + case 525: // space: "space" $@74 ":" "constant string" +#line 1843 "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 3006 "dhcp6_parser.cc" +#line 3036 "dhcp6_parser.cc" break; - case 521: // $@75: %empty -#line 1826 "dhcp6_parser.yy" + case 527: // $@75: %empty +#line 1851 "dhcp6_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3015 "dhcp6_parser.cc" +#line 3045 "dhcp6_parser.cc" break; - case 522: // option_def_encapsulate: "encapsulate" $@75 ":" "constant string" -#line 1829 "dhcp6_parser.yy" + case 528: // option_def_encapsulate: "encapsulate" $@75 ":" "constant string" +#line 1854 "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 3025 "dhcp6_parser.cc" +#line 3055 "dhcp6_parser.cc" break; - case 523: // option_def_array: "array" ":" "boolean" -#line 1835 "dhcp6_parser.yy" + case 529: // option_def_array: "array" ":" "boolean" +#line 1860 "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 3035 "dhcp6_parser.cc" +#line 3065 "dhcp6_parser.cc" break; - case 524: // $@76: %empty -#line 1845 "dhcp6_parser.yy" + case 530: // $@76: %empty +#line 1870 "dhcp6_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3043,113 +3073,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3047 "dhcp6_parser.cc" +#line 3077 "dhcp6_parser.cc" break; - case 525: // option_data_list: "option-data" $@76 ":" "[" option_data_list_content "]" -#line 1851 "dhcp6_parser.yy" + case 531: // option_data_list: "option-data" $@76 ":" "[" option_data_list_content "]" +#line 1876 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3056 "dhcp6_parser.cc" +#line 3086 "dhcp6_parser.cc" break; - case 530: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1866 "dhcp6_parser.yy" + case 536: // not_empty_option_data_list: not_empty_option_data_list "," +#line 1891 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3064 "dhcp6_parser.cc" +#line 3094 "dhcp6_parser.cc" break; - case 531: // $@77: %empty -#line 1873 "dhcp6_parser.yy" + case 537: // $@77: %empty +#line 1898 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3074 "dhcp6_parser.cc" +#line 3104 "dhcp6_parser.cc" break; - case 532: // option_data_entry: "{" $@77 option_data_params "}" -#line 1877 "dhcp6_parser.yy" + case 538: // option_data_entry: "{" $@77 option_data_params "}" +#line 1902 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3083 "dhcp6_parser.cc" +#line 3113 "dhcp6_parser.cc" break; - case 533: // $@78: %empty -#line 1885 "dhcp6_parser.yy" + case 539: // $@78: %empty +#line 1910 "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 3093 "dhcp6_parser.cc" +#line 3123 "dhcp6_parser.cc" break; - case 534: // sub_option_data: "{" $@78 option_data_params "}" -#line 1889 "dhcp6_parser.yy" + case 540: // sub_option_data: "{" $@78 option_data_params "}" +#line 1914 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3102 "dhcp6_parser.cc" +#line 3132 "dhcp6_parser.cc" break; - case 539: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1905 "dhcp6_parser.yy" + case 545: // not_empty_option_data_params: not_empty_option_data_params "," +#line 1930 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3110 "dhcp6_parser.cc" +#line 3140 "dhcp6_parser.cc" break; - case 550: // $@79: %empty -#line 1925 "dhcp6_parser.yy" + case 556: // $@79: %empty +#line 1950 "dhcp6_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3119 "dhcp6_parser.cc" +#line 3149 "dhcp6_parser.cc" break; - case 551: // option_data_data: "data" $@79 ":" "constant string" -#line 1928 "dhcp6_parser.yy" + case 557: // option_data_data: "data" $@79 ":" "constant string" +#line 1953 "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 3129 "dhcp6_parser.cc" +#line 3159 "dhcp6_parser.cc" break; - case 554: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1938 "dhcp6_parser.yy" + case 560: // option_data_csv_format: "csv-format" ":" "boolean" +#line 1963 "dhcp6_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 3139 "dhcp6_parser.cc" +#line 3169 "dhcp6_parser.cc" break; - case 555: // option_data_always_send: "always-send" ":" "boolean" -#line 1944 "dhcp6_parser.yy" + case 561: // option_data_always_send: "always-send" ":" "boolean" +#line 1969 "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 3149 "dhcp6_parser.cc" +#line 3179 "dhcp6_parser.cc" break; - case 556: // $@80: %empty -#line 1953 "dhcp6_parser.yy" + case 562: // $@80: %empty +#line 1978 "dhcp6_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3157,103 +3187,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3161 "dhcp6_parser.cc" +#line 3191 "dhcp6_parser.cc" break; - case 557: // pools_list: "pools" $@80 ":" "[" pools_list_content "]" -#line 1959 "dhcp6_parser.yy" + case 563: // pools_list: "pools" $@80 ":" "[" pools_list_content "]" +#line 1984 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3170 "dhcp6_parser.cc" +#line 3200 "dhcp6_parser.cc" break; - case 562: // not_empty_pools_list: not_empty_pools_list "," -#line 1972 "dhcp6_parser.yy" + case 568: // not_empty_pools_list: not_empty_pools_list "," +#line 1997 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3178 "dhcp6_parser.cc" +#line 3208 "dhcp6_parser.cc" break; - case 563: // $@81: %empty -#line 1977 "dhcp6_parser.yy" + case 569: // $@81: %empty +#line 2002 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3188 "dhcp6_parser.cc" +#line 3218 "dhcp6_parser.cc" break; - case 564: // pool_list_entry: "{" $@81 pool_params "}" -#line 1981 "dhcp6_parser.yy" + case 570: // pool_list_entry: "{" $@81 pool_params "}" +#line 2006 "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 3198 "dhcp6_parser.cc" +#line 3228 "dhcp6_parser.cc" break; - case 565: // $@82: %empty -#line 1987 "dhcp6_parser.yy" + case 571: // $@82: %empty +#line 2012 "dhcp6_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3208 "dhcp6_parser.cc" +#line 3238 "dhcp6_parser.cc" break; - case 566: // sub_pool6: "{" $@82 pool_params "}" -#line 1991 "dhcp6_parser.yy" + case 572: // sub_pool6: "{" $@82 pool_params "}" +#line 2016 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3218 "dhcp6_parser.cc" +#line 3248 "dhcp6_parser.cc" break; - case 569: // pool_params: pool_params "," -#line 1999 "dhcp6_parser.yy" + case 575: // pool_params: pool_params "," +#line 2024 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3226 "dhcp6_parser.cc" +#line 3256 "dhcp6_parser.cc" break; - case 577: // $@83: %empty -#line 2013 "dhcp6_parser.yy" + case 583: // $@83: %empty +#line 2038 "dhcp6_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3235 "dhcp6_parser.cc" +#line 3265 "dhcp6_parser.cc" break; - case 578: // pool_entry: "pool" $@83 ":" "constant string" -#line 2016 "dhcp6_parser.yy" + case 584: // pool_entry: "pool" $@83 ":" "constant string" +#line 2041 "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 3245 "dhcp6_parser.cc" +#line 3275 "dhcp6_parser.cc" break; - case 579: // $@84: %empty -#line 2022 "dhcp6_parser.yy" + case 585: // $@84: %empty +#line 2047 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3253 "dhcp6_parser.cc" +#line 3283 "dhcp6_parser.cc" break; - case 580: // user_context: "user-context" $@84 ":" map_value -#line 2024 "dhcp6_parser.yy" + case 586: // user_context: "user-context" $@84 ":" map_value +#line 2049 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3276,19 +3306,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3280 "dhcp6_parser.cc" +#line 3310 "dhcp6_parser.cc" break; - case 581: // $@85: %empty -#line 2047 "dhcp6_parser.yy" + case 587: // $@85: %empty +#line 2072 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3288 "dhcp6_parser.cc" +#line 3318 "dhcp6_parser.cc" break; - case 582: // comment: "comment" $@85 ":" "constant string" -#line 2049 "dhcp6_parser.yy" + case 588: // comment: "comment" $@85 ":" "constant string" +#line 2074 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3313,11 +3343,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3317 "dhcp6_parser.cc" +#line 3347 "dhcp6_parser.cc" break; - case 583: // $@86: %empty -#line 2077 "dhcp6_parser.yy" + case 589: // $@86: %empty +#line 2102 "dhcp6_parser.yy" { ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3325,38 +3355,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.PD_POOLS); } -#line 3329 "dhcp6_parser.cc" +#line 3359 "dhcp6_parser.cc" break; - case 584: // pd_pools_list: "pd-pools" $@86 ":" "[" pd_pools_list_content "]" -#line 2083 "dhcp6_parser.yy" + case 590: // pd_pools_list: "pd-pools" $@86 ":" "[" pd_pools_list_content "]" +#line 2108 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3338 "dhcp6_parser.cc" +#line 3368 "dhcp6_parser.cc" break; - case 589: // not_empty_pd_pools_list: not_empty_pd_pools_list "," -#line 2096 "dhcp6_parser.yy" + case 595: // not_empty_pd_pools_list: not_empty_pd_pools_list "," +#line 2121 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3346 "dhcp6_parser.cc" +#line 3376 "dhcp6_parser.cc" break; - case 590: // $@87: %empty -#line 2101 "dhcp6_parser.yy" + case 596: // $@87: %empty +#line 2126 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3356 "dhcp6_parser.cc" +#line 3386 "dhcp6_parser.cc" break; - case 591: // pd_pool_entry: "{" $@87 pd_pool_params "}" -#line 2105 "dhcp6_parser.yy" + case 597: // pd_pool_entry: "{" $@87 pd_pool_params "}" +#line 2130 "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)); @@ -3364,21 +3394,21 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3368 "dhcp6_parser.cc" +#line 3398 "dhcp6_parser.cc" break; - case 592: // $@88: %empty -#line 2113 "dhcp6_parser.yy" + case 598: // $@88: %empty +#line 2138 "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 3378 "dhcp6_parser.cc" +#line 3408 "dhcp6_parser.cc" break; - case 593: // sub_pd_pool: "{" $@88 pd_pool_params "}" -#line 2117 "dhcp6_parser.yy" + case 599: // sub_pd_pool: "{" $@88 pd_pool_params "}" +#line 2142 "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)); @@ -3386,87 +3416,87 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3390 "dhcp6_parser.cc" +#line 3420 "dhcp6_parser.cc" break; - case 596: // pd_pool_params: pd_pool_params "," -#line 2127 "dhcp6_parser.yy" + case 602: // pd_pool_params: pd_pool_params "," +#line 2152 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3398 "dhcp6_parser.cc" +#line 3428 "dhcp6_parser.cc" break; - case 608: // $@89: %empty -#line 2145 "dhcp6_parser.yy" + case 614: // $@89: %empty +#line 2170 "dhcp6_parser.yy" { ctx.unique("prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3407 "dhcp6_parser.cc" +#line 3437 "dhcp6_parser.cc" break; - case 609: // pd_prefix: "prefix" $@89 ":" "constant string" -#line 2148 "dhcp6_parser.yy" + case 615: // pd_prefix: "prefix" $@89 ":" "constant string" +#line 2173 "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 3417 "dhcp6_parser.cc" +#line 3447 "dhcp6_parser.cc" break; - case 610: // pd_prefix_len: "prefix-len" ":" "integer" -#line 2154 "dhcp6_parser.yy" + case 616: // pd_prefix_len: "prefix-len" ":" "integer" +#line 2179 "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 3427 "dhcp6_parser.cc" +#line 3457 "dhcp6_parser.cc" break; - case 611: // $@90: %empty -#line 2160 "dhcp6_parser.yy" + case 617: // $@90: %empty +#line 2185 "dhcp6_parser.yy" { ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3436 "dhcp6_parser.cc" +#line 3466 "dhcp6_parser.cc" break; - case 612: // excluded_prefix: "excluded-prefix" $@90 ":" "constant string" -#line 2163 "dhcp6_parser.yy" + case 618: // excluded_prefix: "excluded-prefix" $@90 ":" "constant string" +#line 2188 "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 3446 "dhcp6_parser.cc" +#line 3476 "dhcp6_parser.cc" break; - case 613: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" -#line 2169 "dhcp6_parser.yy" + case 619: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" +#line 2194 "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 3456 "dhcp6_parser.cc" +#line 3486 "dhcp6_parser.cc" break; - case 614: // pd_delegated_len: "delegated-len" ":" "integer" -#line 2175 "dhcp6_parser.yy" + case 620: // pd_delegated_len: "delegated-len" ":" "integer" +#line 2200 "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 3466 "dhcp6_parser.cc" +#line 3496 "dhcp6_parser.cc" break; - case 615: // $@91: %empty -#line 2184 "dhcp6_parser.yy" + case 621: // $@91: %empty +#line 2209 "dhcp6_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3474,74 +3504,74 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3478 "dhcp6_parser.cc" +#line 3508 "dhcp6_parser.cc" break; - case 616: // reservations: "reservations" $@91 ":" "[" reservations_list "]" -#line 2190 "dhcp6_parser.yy" + case 622: // reservations: "reservations" $@91 ":" "[" reservations_list "]" +#line 2215 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3487 "dhcp6_parser.cc" +#line 3517 "dhcp6_parser.cc" break; - case 621: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2201 "dhcp6_parser.yy" + case 627: // not_empty_reservations_list: not_empty_reservations_list "," +#line 2226 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3495 "dhcp6_parser.cc" +#line 3525 "dhcp6_parser.cc" break; - case 622: // $@92: %empty -#line 2206 "dhcp6_parser.yy" + case 628: // $@92: %empty +#line 2231 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3505 "dhcp6_parser.cc" +#line 3535 "dhcp6_parser.cc" break; - case 623: // reservation: "{" $@92 reservation_params "}" -#line 2210 "dhcp6_parser.yy" + case 629: // reservation: "{" $@92 reservation_params "}" +#line 2235 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3514 "dhcp6_parser.cc" +#line 3544 "dhcp6_parser.cc" break; - case 624: // $@93: %empty -#line 2215 "dhcp6_parser.yy" + case 630: // $@93: %empty +#line 2240 "dhcp6_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3524 "dhcp6_parser.cc" +#line 3554 "dhcp6_parser.cc" break; - case 625: // sub_reservation: "{" $@93 reservation_params "}" -#line 2219 "dhcp6_parser.yy" + case 631: // sub_reservation: "{" $@93 reservation_params "}" +#line 2244 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3533 "dhcp6_parser.cc" +#line 3563 "dhcp6_parser.cc" break; - case 630: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2230 "dhcp6_parser.yy" + case 636: // not_empty_reservation_params: not_empty_reservation_params "," +#line 2255 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3541 "dhcp6_parser.cc" +#line 3571 "dhcp6_parser.cc" break; - case 642: // $@94: %empty -#line 2249 "dhcp6_parser.yy" + case 648: // $@94: %empty +#line 2274 "dhcp6_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3549,20 +3579,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3553 "dhcp6_parser.cc" +#line 3583 "dhcp6_parser.cc" break; - case 643: // ip_addresses: "ip-addresses" $@94 ":" list_strings -#line 2255 "dhcp6_parser.yy" + case 649: // ip_addresses: "ip-addresses" $@94 ":" list_strings +#line 2280 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3562 "dhcp6_parser.cc" +#line 3592 "dhcp6_parser.cc" break; - case 644: // $@95: %empty -#line 2260 "dhcp6_parser.yy" + case 650: // $@95: %empty +#line 2285 "dhcp6_parser.yy" { ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3570,96 +3600,96 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3574 "dhcp6_parser.cc" +#line 3604 "dhcp6_parser.cc" break; - case 645: // prefixes: "prefixes" $@95 ":" list_strings -#line 2266 "dhcp6_parser.yy" + case 651: // prefixes: "prefixes" $@95 ":" list_strings +#line 2291 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3583 "dhcp6_parser.cc" +#line 3613 "dhcp6_parser.cc" break; - case 646: // $@96: %empty -#line 2271 "dhcp6_parser.yy" + case 652: // $@96: %empty +#line 2296 "dhcp6_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3592 "dhcp6_parser.cc" +#line 3622 "dhcp6_parser.cc" break; - case 647: // duid: "duid" $@96 ":" "constant string" -#line 2274 "dhcp6_parser.yy" + case 653: // duid: "duid" $@96 ":" "constant string" +#line 2299 "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 3602 "dhcp6_parser.cc" +#line 3632 "dhcp6_parser.cc" break; - case 648: // $@97: %empty -#line 2280 "dhcp6_parser.yy" + case 654: // $@97: %empty +#line 2305 "dhcp6_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3611 "dhcp6_parser.cc" +#line 3641 "dhcp6_parser.cc" break; - case 649: // hw_address: "hw-address" $@97 ":" "constant string" -#line 2283 "dhcp6_parser.yy" + case 655: // hw_address: "hw-address" $@97 ":" "constant string" +#line 2308 "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 3621 "dhcp6_parser.cc" +#line 3651 "dhcp6_parser.cc" break; - case 650: // $@98: %empty -#line 2289 "dhcp6_parser.yy" + case 656: // $@98: %empty +#line 2314 "dhcp6_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3630 "dhcp6_parser.cc" +#line 3660 "dhcp6_parser.cc" break; - case 651: // hostname: "hostname" $@98 ":" "constant string" -#line 2292 "dhcp6_parser.yy" + case 657: // hostname: "hostname" $@98 ":" "constant string" +#line 2317 "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 3640 "dhcp6_parser.cc" +#line 3670 "dhcp6_parser.cc" break; - case 652: // $@99: %empty -#line 2298 "dhcp6_parser.yy" + case 658: // $@99: %empty +#line 2323 "dhcp6_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3649 "dhcp6_parser.cc" +#line 3679 "dhcp6_parser.cc" break; - case 653: // flex_id_value: "flex-id" $@99 ":" "constant string" -#line 2301 "dhcp6_parser.yy" + case 659: // flex_id_value: "flex-id" $@99 ":" "constant string" +#line 2326 "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 3659 "dhcp6_parser.cc" +#line 3689 "dhcp6_parser.cc" break; - case 654: // $@100: %empty -#line 2307 "dhcp6_parser.yy" + case 660: // $@100: %empty +#line 2332 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3667,20 +3697,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3671 "dhcp6_parser.cc" +#line 3701 "dhcp6_parser.cc" break; - case 655: // reservation_client_classes: "client-classes" $@100 ":" list_strings -#line 2313 "dhcp6_parser.yy" + case 661: // reservation_client_classes: "client-classes" $@100 ":" list_strings +#line 2338 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3680 "dhcp6_parser.cc" +#line 3710 "dhcp6_parser.cc" break; - case 656: // $@101: %empty -#line 2321 "dhcp6_parser.yy" + case 662: // $@101: %empty +#line 2346 "dhcp6_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3688,39 +3718,39 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3692 "dhcp6_parser.cc" +#line 3722 "dhcp6_parser.cc" break; - case 657: // relay: "relay" $@101 ":" "{" relay_map "}" -#line 2327 "dhcp6_parser.yy" + case 663: // relay: "relay" $@101 ":" "{" relay_map "}" +#line 2352 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3701 "dhcp6_parser.cc" +#line 3731 "dhcp6_parser.cc" break; - case 660: // $@102: %empty -#line 2336 "dhcp6_parser.yy" + case 666: // $@102: %empty +#line 2361 "dhcp6_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3710 "dhcp6_parser.cc" +#line 3740 "dhcp6_parser.cc" break; - case 661: // ip_address: "ip-address" $@102 ":" "constant string" -#line 2339 "dhcp6_parser.yy" + case 667: // ip_address: "ip-address" $@102 ":" "constant string" +#line 2364 "dhcp6_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3720 "dhcp6_parser.cc" +#line 3750 "dhcp6_parser.cc" break; - case 662: // $@103: %empty -#line 2348 "dhcp6_parser.yy" + case 668: // $@103: %empty +#line 2373 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3728,85 +3758,85 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3732 "dhcp6_parser.cc" +#line 3762 "dhcp6_parser.cc" break; - case 663: // client_classes: "client-classes" $@103 ":" "[" client_classes_list "]" -#line 2354 "dhcp6_parser.yy" + case 669: // client_classes: "client-classes" $@103 ":" "[" client_classes_list "]" +#line 2379 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3741 "dhcp6_parser.cc" +#line 3771 "dhcp6_parser.cc" break; - case 666: // client_classes_list: client_classes_list "," -#line 2361 "dhcp6_parser.yy" + case 672: // client_classes_list: client_classes_list "," +#line 2386 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3749 "dhcp6_parser.cc" +#line 3779 "dhcp6_parser.cc" break; - case 667: // $@104: %empty -#line 2366 "dhcp6_parser.yy" + case 673: // $@104: %empty +#line 2391 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3759 "dhcp6_parser.cc" +#line 3789 "dhcp6_parser.cc" break; - case 668: // client_class_entry: "{" $@104 client_class_params "}" -#line 2370 "dhcp6_parser.yy" + case 674: // client_class_entry: "{" $@104 client_class_params "}" +#line 2395 "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 3769 "dhcp6_parser.cc" +#line 3799 "dhcp6_parser.cc" break; - case 673: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2382 "dhcp6_parser.yy" + case 679: // not_empty_client_class_params: not_empty_client_class_params "," +#line 2407 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3777 "dhcp6_parser.cc" +#line 3807 "dhcp6_parser.cc" break; - case 688: // $@105: %empty -#line 2404 "dhcp6_parser.yy" + case 694: // $@105: %empty +#line 2429 "dhcp6_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3786 "dhcp6_parser.cc" +#line 3816 "dhcp6_parser.cc" break; - case 689: // client_class_test: "test" $@105 ":" "constant string" -#line 2407 "dhcp6_parser.yy" + case 695: // client_class_test: "test" $@105 ":" "constant string" +#line 2432 "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 3796 "dhcp6_parser.cc" +#line 3826 "dhcp6_parser.cc" break; - case 690: // only_if_required: "only-if-required" ":" "boolean" -#line 2413 "dhcp6_parser.yy" + case 696: // only_if_required: "only-if-required" ":" "boolean" +#line 2438 "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 3806 "dhcp6_parser.cc" +#line 3836 "dhcp6_parser.cc" break; - case 691: // $@106: %empty -#line 2422 "dhcp6_parser.yy" + case 697: // $@106: %empty +#line 2447 "dhcp6_parser.yy" { ctx.unique("server-id", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3814,125 +3844,125 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER_ID); } -#line 3818 "dhcp6_parser.cc" +#line 3848 "dhcp6_parser.cc" break; - case 692: // server_id: "server-id" $@106 ":" "{" server_id_params "}" -#line 2428 "dhcp6_parser.yy" + case 698: // server_id: "server-id" $@106 ":" "{" server_id_params "}" +#line 2453 "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 3829 "dhcp6_parser.cc" +#line 3859 "dhcp6_parser.cc" break; - case 695: // server_id_params: server_id_params "," -#line 2437 "dhcp6_parser.yy" + case 701: // server_id_params: server_id_params "," +#line 2462 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3837 "dhcp6_parser.cc" +#line 3867 "dhcp6_parser.cc" break; - case 705: // $@107: %empty -#line 2453 "dhcp6_parser.yy" + case 711: // $@107: %empty +#line 2478 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DUID_TYPE); } -#line 3846 "dhcp6_parser.cc" +#line 3876 "dhcp6_parser.cc" break; - case 706: // server_id_type: "type" $@107 ":" duid_type -#line 2456 "dhcp6_parser.yy" + case 712: // server_id_type: "type" $@107 ":" duid_type +#line 2481 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 3855 "dhcp6_parser.cc" +#line 3885 "dhcp6_parser.cc" break; - case 707: // duid_type: "LLT" -#line 2461 "dhcp6_parser.yy" + case 713: // duid_type: "LLT" +#line 2486 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 3861 "dhcp6_parser.cc" +#line 3891 "dhcp6_parser.cc" break; - case 708: // duid_type: "EN" -#line 2462 "dhcp6_parser.yy" + case 714: // duid_type: "EN" +#line 2487 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 3867 "dhcp6_parser.cc" +#line 3897 "dhcp6_parser.cc" break; - case 709: // duid_type: "LL" -#line 2463 "dhcp6_parser.yy" + case 715: // duid_type: "LL" +#line 2488 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 3873 "dhcp6_parser.cc" +#line 3903 "dhcp6_parser.cc" break; - case 710: // htype: "htype" ":" "integer" -#line 2466 "dhcp6_parser.yy" + case 716: // htype: "htype" ":" "integer" +#line 2491 "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 3883 "dhcp6_parser.cc" +#line 3913 "dhcp6_parser.cc" break; - case 711: // $@108: %empty -#line 2472 "dhcp6_parser.yy" + case 717: // $@108: %empty +#line 2497 "dhcp6_parser.yy" { ctx.unique("identifier", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3892 "dhcp6_parser.cc" +#line 3922 "dhcp6_parser.cc" break; - case 712: // identifier: "identifier" $@108 ":" "constant string" -#line 2475 "dhcp6_parser.yy" + case 718: // identifier: "identifier" $@108 ":" "constant string" +#line 2500 "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 3902 "dhcp6_parser.cc" +#line 3932 "dhcp6_parser.cc" break; - case 713: // time: "time" ":" "integer" -#line 2481 "dhcp6_parser.yy" + case 719: // time: "time" ":" "integer" +#line 2506 "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 3912 "dhcp6_parser.cc" +#line 3942 "dhcp6_parser.cc" break; - case 714: // enterprise_id: "enterprise-id" ":" "integer" -#line 2487 "dhcp6_parser.yy" + case 720: // enterprise_id: "enterprise-id" ":" "integer" +#line 2512 "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 3922 "dhcp6_parser.cc" +#line 3952 "dhcp6_parser.cc" break; - case 715: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2495 "dhcp6_parser.yy" + case 721: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" +#line 2520 "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 3932 "dhcp6_parser.cc" +#line 3962 "dhcp6_parser.cc" break; - case 716: // $@109: %empty -#line 2503 "dhcp6_parser.yy" + case 722: // $@109: %empty +#line 2528 "dhcp6_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3940,66 +3970,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3944 "dhcp6_parser.cc" +#line 3974 "dhcp6_parser.cc" break; - case 717: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}" -#line 2509 "dhcp6_parser.yy" + case 723: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}" +#line 2534 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3953 "dhcp6_parser.cc" +#line 3983 "dhcp6_parser.cc" break; - case 720: // control_socket_params: control_socket_params "," -#line 2516 "dhcp6_parser.yy" + case 726: // control_socket_params: control_socket_params "," +#line 2541 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3961 "dhcp6_parser.cc" +#line 3991 "dhcp6_parser.cc" break; - case 726: // $@110: %empty -#line 2528 "dhcp6_parser.yy" + case 732: // $@110: %empty +#line 2553 "dhcp6_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3970 "dhcp6_parser.cc" +#line 4000 "dhcp6_parser.cc" break; - case 727: // socket_type: "socket-type" $@110 ":" "constant string" -#line 2531 "dhcp6_parser.yy" + case 733: // socket_type: "socket-type" $@110 ":" "constant string" +#line 2556 "dhcp6_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3980 "dhcp6_parser.cc" +#line 4010 "dhcp6_parser.cc" break; - case 728: // $@111: %empty -#line 2537 "dhcp6_parser.yy" + case 734: // $@111: %empty +#line 2562 "dhcp6_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3989 "dhcp6_parser.cc" +#line 4019 "dhcp6_parser.cc" break; - case 729: // socket_name: "socket-name" $@111 ":" "constant string" -#line 2540 "dhcp6_parser.yy" + case 735: // socket_name: "socket-name" $@111 ":" "constant string" +#line 2565 "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 3999 "dhcp6_parser.cc" +#line 4029 "dhcp6_parser.cc" break; - case 730: // $@112: %empty -#line 2549 "dhcp6_parser.yy" + case 736: // $@112: %empty +#line 2574 "dhcp6_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4007,87 +4037,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 4011 "dhcp6_parser.cc" +#line 4041 "dhcp6_parser.cc" break; - case 731: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}" -#line 2555 "dhcp6_parser.yy" + case 737: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}" +#line 2580 "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 4022 "dhcp6_parser.cc" +#line 4052 "dhcp6_parser.cc" break; - case 734: // queue_control_params: queue_control_params "," -#line 2564 "dhcp6_parser.yy" + case 740: // queue_control_params: queue_control_params "," +#line 2589 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4030 "dhcp6_parser.cc" +#line 4060 "dhcp6_parser.cc" break; - case 741: // enable_queue: "enable-queue" ":" "boolean" -#line 2577 "dhcp6_parser.yy" + case 747: // enable_queue: "enable-queue" ":" "boolean" +#line 2602 "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 4040 "dhcp6_parser.cc" +#line 4070 "dhcp6_parser.cc" break; - case 742: // $@113: %empty -#line 2583 "dhcp6_parser.yy" + case 748: // $@113: %empty +#line 2608 "dhcp6_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4049 "dhcp6_parser.cc" +#line 4079 "dhcp6_parser.cc" break; - case 743: // queue_type: "queue-type" $@113 ":" "constant string" -#line 2586 "dhcp6_parser.yy" + case 749: // queue_type: "queue-type" $@113 ":" "constant string" +#line 2611 "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 4059 "dhcp6_parser.cc" +#line 4089 "dhcp6_parser.cc" break; - case 744: // capacity: "capacity" ":" "integer" -#line 2592 "dhcp6_parser.yy" + case 750: // capacity: "capacity" ":" "integer" +#line 2617 "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 4069 "dhcp6_parser.cc" +#line 4099 "dhcp6_parser.cc" break; - case 745: // $@114: %empty -#line 2598 "dhcp6_parser.yy" + case 751: // $@114: %empty +#line 2623 "dhcp6_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4078 "dhcp6_parser.cc" +#line 4108 "dhcp6_parser.cc" break; - case 746: // arbitrary_map_entry: "constant string" $@114 ":" value -#line 2601 "dhcp6_parser.yy" + case 752: // arbitrary_map_entry: "constant string" $@114 ":" value +#line 2626 "dhcp6_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4087 "dhcp6_parser.cc" +#line 4117 "dhcp6_parser.cc" break; - case 747: // $@115: %empty -#line 2608 "dhcp6_parser.yy" + case 753: // $@115: %empty +#line 2633 "dhcp6_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4095,291 +4125,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 4099 "dhcp6_parser.cc" +#line 4129 "dhcp6_parser.cc" break; - case 748: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}" -#line 2614 "dhcp6_parser.yy" + case 754: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}" +#line 2639 "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 4110 "dhcp6_parser.cc" +#line 4140 "dhcp6_parser.cc" break; - case 749: // $@116: %empty -#line 2621 "dhcp6_parser.yy" + case 755: // $@116: %empty +#line 2646 "dhcp6_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4120 "dhcp6_parser.cc" +#line 4150 "dhcp6_parser.cc" break; - case 750: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}" -#line 2625 "dhcp6_parser.yy" + case 756: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}" +#line 2650 "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 4130 "dhcp6_parser.cc" +#line 4160 "dhcp6_parser.cc" break; - case 753: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2633 "dhcp6_parser.yy" + case 759: // dhcp_ddns_params: dhcp_ddns_params "," +#line 2658 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4138 "dhcp6_parser.cc" +#line 4168 "dhcp6_parser.cc" break; - case 772: // enable_updates: "enable-updates" ":" "boolean" -#line 2658 "dhcp6_parser.yy" + case 778: // enable_updates: "enable-updates" ":" "boolean" +#line 2683 "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 4148 "dhcp6_parser.cc" +#line 4178 "dhcp6_parser.cc" break; - case 773: // $@117: %empty -#line 2665 "dhcp6_parser.yy" + case 779: // $@117: %empty +#line 2690 "dhcp6_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4157 "dhcp6_parser.cc" +#line 4187 "dhcp6_parser.cc" break; - case 774: // dep_qualifying_suffix: "qualifying-suffix" $@117 ":" "constant string" -#line 2668 "dhcp6_parser.yy" + case 780: // dep_qualifying_suffix: "qualifying-suffix" $@117 ":" "constant string" +#line 2693 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4167 "dhcp6_parser.cc" +#line 4197 "dhcp6_parser.cc" break; - case 775: // $@118: %empty -#line 2674 "dhcp6_parser.yy" + case 781: // $@118: %empty +#line 2699 "dhcp6_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4176 "dhcp6_parser.cc" +#line 4206 "dhcp6_parser.cc" break; - case 776: // server_ip: "server-ip" $@118 ":" "constant string" -#line 2677 "dhcp6_parser.yy" + case 782: // server_ip: "server-ip" $@118 ":" "constant string" +#line 2702 "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 4186 "dhcp6_parser.cc" +#line 4216 "dhcp6_parser.cc" break; - case 777: // server_port: "server-port" ":" "integer" -#line 2683 "dhcp6_parser.yy" + case 783: // server_port: "server-port" ":" "integer" +#line 2708 "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 4196 "dhcp6_parser.cc" +#line 4226 "dhcp6_parser.cc" break; - case 778: // $@119: %empty -#line 2689 "dhcp6_parser.yy" + case 784: // $@119: %empty +#line 2714 "dhcp6_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4205 "dhcp6_parser.cc" +#line 4235 "dhcp6_parser.cc" break; - case 779: // sender_ip: "sender-ip" $@119 ":" "constant string" -#line 2692 "dhcp6_parser.yy" + case 785: // sender_ip: "sender-ip" $@119 ":" "constant string" +#line 2717 "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 4215 "dhcp6_parser.cc" +#line 4245 "dhcp6_parser.cc" break; - case 780: // sender_port: "sender-port" ":" "integer" -#line 2698 "dhcp6_parser.yy" + case 786: // sender_port: "sender-port" ":" "integer" +#line 2723 "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 4225 "dhcp6_parser.cc" +#line 4255 "dhcp6_parser.cc" break; - case 781: // max_queue_size: "max-queue-size" ":" "integer" -#line 2704 "dhcp6_parser.yy" + case 787: // max_queue_size: "max-queue-size" ":" "integer" +#line 2729 "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 4235 "dhcp6_parser.cc" +#line 4265 "dhcp6_parser.cc" break; - case 782: // $@120: %empty -#line 2710 "dhcp6_parser.yy" + case 788: // $@120: %empty +#line 2735 "dhcp6_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4244 "dhcp6_parser.cc" +#line 4274 "dhcp6_parser.cc" break; - case 783: // ncr_protocol: "ncr-protocol" $@120 ":" ncr_protocol_value -#line 2713 "dhcp6_parser.yy" + case 789: // ncr_protocol: "ncr-protocol" $@120 ":" ncr_protocol_value +#line 2738 "dhcp6_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4253 "dhcp6_parser.cc" +#line 4283 "dhcp6_parser.cc" break; - case 784: // ncr_protocol_value: "UDP" -#line 2719 "dhcp6_parser.yy" + case 790: // ncr_protocol_value: "UDP" +#line 2744 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4259 "dhcp6_parser.cc" +#line 4289 "dhcp6_parser.cc" break; - case 785: // ncr_protocol_value: "TCP" -#line 2720 "dhcp6_parser.yy" + case 791: // ncr_protocol_value: "TCP" +#line 2745 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4265 "dhcp6_parser.cc" +#line 4295 "dhcp6_parser.cc" break; - case 786: // $@121: %empty -#line 2723 "dhcp6_parser.yy" + case 792: // $@121: %empty +#line 2748 "dhcp6_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4274 "dhcp6_parser.cc" +#line 4304 "dhcp6_parser.cc" break; - case 787: // ncr_format: "ncr-format" $@121 ":" "JSON" -#line 2726 "dhcp6_parser.yy" + case 793: // ncr_format: "ncr-format" $@121 ":" "JSON" +#line 2751 "dhcp6_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4284 "dhcp6_parser.cc" +#line 4314 "dhcp6_parser.cc" break; - case 788: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2733 "dhcp6_parser.yy" + case 794: // dep_override_no_update: "override-no-update" ":" "boolean" +#line 2758 "dhcp6_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4294 "dhcp6_parser.cc" +#line 4324 "dhcp6_parser.cc" break; - case 789: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2740 "dhcp6_parser.yy" + case 795: // dep_override_client_update: "override-client-update" ":" "boolean" +#line 2765 "dhcp6_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4304 "dhcp6_parser.cc" +#line 4334 "dhcp6_parser.cc" break; - case 790: // $@122: %empty -#line 2747 "dhcp6_parser.yy" + case 796: // $@122: %empty +#line 2772 "dhcp6_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4313 "dhcp6_parser.cc" +#line 4343 "dhcp6_parser.cc" break; - case 791: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value -#line 2750 "dhcp6_parser.yy" + case 797: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value +#line 2775 "dhcp6_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4322 "dhcp6_parser.cc" +#line 4352 "dhcp6_parser.cc" break; - case 792: // $@123: %empty -#line 2756 "dhcp6_parser.yy" + case 798: // $@123: %empty +#line 2781 "dhcp6_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4331 "dhcp6_parser.cc" +#line 4361 "dhcp6_parser.cc" break; - case 793: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string" -#line 2759 "dhcp6_parser.yy" + case 799: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string" +#line 2784 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4341 "dhcp6_parser.cc" +#line 4371 "dhcp6_parser.cc" break; - case 794: // $@124: %empty -#line 2766 "dhcp6_parser.yy" + case 800: // $@124: %empty +#line 2791 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4350 "dhcp6_parser.cc" +#line 4380 "dhcp6_parser.cc" break; - case 795: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string" -#line 2769 "dhcp6_parser.yy" + case 801: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string" +#line 2794 "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); ctx.leave(); } -#line 4360 "dhcp6_parser.cc" +#line 4390 "dhcp6_parser.cc" break; - case 796: // $@125: %empty -#line 2776 "dhcp6_parser.yy" + case 802: // $@125: %empty +#line 2801 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4369 "dhcp6_parser.cc" +#line 4399 "dhcp6_parser.cc" break; - case 797: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string" -#line 2779 "dhcp6_parser.yy" + case 803: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string" +#line 2804 "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); ctx.leave(); } -#line 4379 "dhcp6_parser.cc" +#line 4409 "dhcp6_parser.cc" break; - case 798: // $@126: %empty -#line 2788 "dhcp6_parser.yy" + case 804: // $@126: %empty +#line 2813 "dhcp6_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4387,48 +4417,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4391 "dhcp6_parser.cc" +#line 4421 "dhcp6_parser.cc" break; - case 799: // config_control: "config-control" $@126 ":" "{" config_control_params "}" -#line 2794 "dhcp6_parser.yy" + case 805: // config_control: "config-control" $@126 ":" "{" config_control_params "}" +#line 2819 "dhcp6_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4401 "dhcp6_parser.cc" +#line 4431 "dhcp6_parser.cc" break; - case 800: // $@127: %empty -#line 2800 "dhcp6_parser.yy" + case 806: // $@127: %empty +#line 2825 "dhcp6_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4411 "dhcp6_parser.cc" +#line 4441 "dhcp6_parser.cc" break; - case 801: // sub_config_control: "{" $@127 config_control_params "}" -#line 2804 "dhcp6_parser.yy" + case 807: // sub_config_control: "{" $@127 config_control_params "}" +#line 2829 "dhcp6_parser.yy" { // No config_control params are required // parsing completed } -#line 4420 "dhcp6_parser.cc" +#line 4450 "dhcp6_parser.cc" break; - case 804: // config_control_params: config_control_params "," -#line 2812 "dhcp6_parser.yy" + case 810: // config_control_params: config_control_params "," +#line 2837 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4428 "dhcp6_parser.cc" +#line 4458 "dhcp6_parser.cc" break; - case 807: // $@128: %empty -#line 2822 "dhcp6_parser.yy" + case 813: // $@128: %empty +#line 2847 "dhcp6_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4436,30 +4466,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4440 "dhcp6_parser.cc" +#line 4470 "dhcp6_parser.cc" break; - case 808: // config_databases: "config-databases" $@128 ":" "[" database_list "]" -#line 2828 "dhcp6_parser.yy" + case 814: // config_databases: "config-databases" $@128 ":" "[" database_list "]" +#line 2853 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4449 "dhcp6_parser.cc" +#line 4479 "dhcp6_parser.cc" break; - case 809: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2833 "dhcp6_parser.yy" + case 815: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" +#line 2858 "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 4459 "dhcp6_parser.cc" +#line 4489 "dhcp6_parser.cc" break; - case 810: // $@129: %empty -#line 2841 "dhcp6_parser.yy" + case 816: // $@129: %empty +#line 2866 "dhcp6_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4467,83 +4497,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4471 "dhcp6_parser.cc" +#line 4501 "dhcp6_parser.cc" break; - case 811: // loggers: "loggers" $@129 ":" "[" loggers_entries "]" -#line 2847 "dhcp6_parser.yy" + case 817: // loggers: "loggers" $@129 ":" "[" loggers_entries "]" +#line 2872 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4480 "dhcp6_parser.cc" +#line 4510 "dhcp6_parser.cc" break; - case 814: // loggers_entries: loggers_entries "," -#line 2856 "dhcp6_parser.yy" + case 820: // loggers_entries: loggers_entries "," +#line 2881 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4488 "dhcp6_parser.cc" +#line 4518 "dhcp6_parser.cc" break; - case 815: // $@130: %empty -#line 2862 "dhcp6_parser.yy" + case 821: // $@130: %empty +#line 2887 "dhcp6_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4498 "dhcp6_parser.cc" +#line 4528 "dhcp6_parser.cc" break; - case 816: // logger_entry: "{" $@130 logger_params "}" -#line 2866 "dhcp6_parser.yy" + case 822: // logger_entry: "{" $@130 logger_params "}" +#line 2891 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4506 "dhcp6_parser.cc" +#line 4536 "dhcp6_parser.cc" break; - case 819: // logger_params: logger_params "," -#line 2872 "dhcp6_parser.yy" + case 825: // logger_params: logger_params "," +#line 2897 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4514 "dhcp6_parser.cc" +#line 4544 "dhcp6_parser.cc" break; - case 827: // debuglevel: "debuglevel" ":" "integer" -#line 2886 "dhcp6_parser.yy" + case 833: // debuglevel: "debuglevel" ":" "integer" +#line 2911 "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 4524 "dhcp6_parser.cc" +#line 4554 "dhcp6_parser.cc" break; - case 828: // $@131: %empty -#line 2892 "dhcp6_parser.yy" + case 834: // $@131: %empty +#line 2917 "dhcp6_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4533 "dhcp6_parser.cc" +#line 4563 "dhcp6_parser.cc" break; - case 829: // severity: "severity" $@131 ":" "constant string" -#line 2895 "dhcp6_parser.yy" + case 835: // severity: "severity" $@131 ":" "constant string" +#line 2920 "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 4543 "dhcp6_parser.cc" +#line 4573 "dhcp6_parser.cc" break; - case 830: // $@132: %empty -#line 2901 "dhcp6_parser.yy" + case 836: // $@132: %empty +#line 2926 "dhcp6_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4551,122 +4581,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4555 "dhcp6_parser.cc" +#line 4585 "dhcp6_parser.cc" break; - case 831: // output_options_list: "output_options" $@132 ":" "[" output_options_list_content "]" -#line 2907 "dhcp6_parser.yy" + case 837: // output_options_list: "output_options" $@132 ":" "[" output_options_list_content "]" +#line 2932 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4564 "dhcp6_parser.cc" +#line 4594 "dhcp6_parser.cc" break; - case 834: // output_options_list_content: output_options_list_content "," -#line 2914 "dhcp6_parser.yy" + case 840: // output_options_list_content: output_options_list_content "," +#line 2939 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4572 "dhcp6_parser.cc" +#line 4602 "dhcp6_parser.cc" break; - case 835: // $@133: %empty -#line 2919 "dhcp6_parser.yy" + case 841: // $@133: %empty +#line 2944 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4582 "dhcp6_parser.cc" +#line 4612 "dhcp6_parser.cc" break; - case 836: // output_entry: "{" $@133 output_params_list "}" -#line 2923 "dhcp6_parser.yy" + case 842: // output_entry: "{" $@133 output_params_list "}" +#line 2948 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4590 "dhcp6_parser.cc" +#line 4620 "dhcp6_parser.cc" break; - case 839: // output_params_list: output_params_list "," -#line 2929 "dhcp6_parser.yy" + case 845: // output_params_list: output_params_list "," +#line 2954 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4598 "dhcp6_parser.cc" +#line 4628 "dhcp6_parser.cc" break; - case 845: // $@134: %empty -#line 2941 "dhcp6_parser.yy" + case 851: // $@134: %empty +#line 2966 "dhcp6_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4607 "dhcp6_parser.cc" +#line 4637 "dhcp6_parser.cc" break; - case 846: // output: "output" $@134 ":" "constant string" -#line 2944 "dhcp6_parser.yy" + case 852: // output: "output" $@134 ":" "constant string" +#line 2969 "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 4617 "dhcp6_parser.cc" +#line 4647 "dhcp6_parser.cc" break; - case 847: // flush: "flush" ":" "boolean" -#line 2950 "dhcp6_parser.yy" + case 853: // flush: "flush" ":" "boolean" +#line 2975 "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 4627 "dhcp6_parser.cc" +#line 4657 "dhcp6_parser.cc" break; - case 848: // maxsize: "maxsize" ":" "integer" -#line 2956 "dhcp6_parser.yy" + case 854: // maxsize: "maxsize" ":" "integer" +#line 2981 "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 4637 "dhcp6_parser.cc" +#line 4667 "dhcp6_parser.cc" break; - case 849: // maxver: "maxver" ":" "integer" -#line 2962 "dhcp6_parser.yy" + case 855: // maxver: "maxver" ":" "integer" +#line 2987 "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 4647 "dhcp6_parser.cc" +#line 4677 "dhcp6_parser.cc" break; - case 850: // $@135: %empty -#line 2968 "dhcp6_parser.yy" + case 856: // $@135: %empty +#line 2993 "dhcp6_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4656 "dhcp6_parser.cc" +#line 4686 "dhcp6_parser.cc" break; - case 851: // pattern: "pattern" $@135 ":" "constant string" -#line 2971 "dhcp6_parser.yy" + case 857: // pattern: "pattern" $@135 ":" "constant string" +#line 2996 "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 4666 "dhcp6_parser.cc" +#line 4696 "dhcp6_parser.cc" break; - case 852: // $@136: %empty -#line 2977 "dhcp6_parser.yy" + case 858: // $@136: %empty +#line 3002 "dhcp6_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4674,38 +4704,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4678 "dhcp6_parser.cc" +#line 4708 "dhcp6_parser.cc" break; - case 853: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}" -#line 2983 "dhcp6_parser.yy" + case 859: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}" +#line 3008 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4687 "dhcp6_parser.cc" +#line 4717 "dhcp6_parser.cc" break; - case 856: // compatibility_params: compatibility_params "," -#line 2990 "dhcp6_parser.yy" + case 862: // compatibility_params: compatibility_params "," +#line 3015 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4695 "dhcp6_parser.cc" +#line 4725 "dhcp6_parser.cc" break; - case 859: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 2999 "dhcp6_parser.yy" + case 865: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" +#line 3024 "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 4705 "dhcp6_parser.cc" +#line 4735 "dhcp6_parser.cc" break; -#line 4709 "dhcp6_parser.cc" +#line 4739 "dhcp6_parser.cc" default: break; @@ -5057,146 +5087,147 @@ namespace isc { namespace dhcp { } - const short Dhcp6Parser::yypact_ninf_ = -996; + const short Dhcp6Parser::yypact_ninf_ = -1005; const signed char Dhcp6Parser::yytable_ninf_ = -1; const short Dhcp6Parser::yypact_[] = { - 437, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, 36, 30, 93, 94, 106, - 108, 137, 155, 171, 173, 180, 182, 192, 193, 199, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, 30, -166, - 130, 160, 78, 668, 42, 296, 71, -2, 81, -25, - -90, 451, 35, -996, 244, 248, 260, 257, 297, -996, - 65, -996, -996, -996, -996, -996, -996, -996, 306, 328, - 329, 335, 349, 359, 362, 369, 370, 377, 379, 389, - 397, 398, -996, 399, 416, 434, 436, 439, -996, -996, - -996, 440, 441, 442, -996, -996, -996, 443, -996, -996, - -996, -996, 444, 445, 446, -996, -996, -996, -996, -996, - -996, -996, -996, -996, 447, -996, -996, -996, -996, -996, - -996, 448, 449, 452, -996, -996, 455, -996, 96, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, 456, 457, 459, 463, -996, - 100, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, 464, 465, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, 113, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, 123, - -996, -996, -996, -996, -996, 467, -996, 468, 471, -996, - -996, -996, -996, -996, -996, 133, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, 323, 438, -996, -996, -996, -996, -996, - -996, -996, -996, 357, -996, -996, 472, -996, -996, -996, - 473, -996, -996, 470, 476, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, 477, 479, - -996, -996, -996, -996, 478, 482, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, 176, -996, - -996, -996, 483, -996, -996, 484, -996, 487, 488, -996, - -996, 499, 500, -996, -996, -996, -996, -996, -996, -996, - 236, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, 503, 246, - -996, -996, -996, -996, 30, 30, -996, 245, 504, -996, - -996, 508, 510, 513, 514, 516, 517, 315, 316, 317, - 319, 320, 324, 325, 331, 321, 312, 326, 338, 340, - 341, 518, 342, 344, 348, 351, 352, 536, 550, 552, - 354, 356, 358, 553, 556, 566, 365, 568, 569, 571, - 574, 373, 375, 376, 578, 579, 581, 586, 588, 589, - 592, 594, 595, 393, 596, 598, 601, 602, 603, 605, - 412, 415, 417, 620, 622, -996, 160, -996, 623, 435, - 450, 418, 453, 78, -996, 643, 645, 646, 647, 649, - 454, 460, 650, 652, 653, 668, -996, 654, 42, -996, - 655, 458, 656, 461, 466, 296, -996, 658, 662, 663, - 664, 666, 670, 671, -996, 71, -996, 672, 674, 469, - 675, 677, 678, 474, -996, 81, 679, 480, 481, -996, - -25, 680, 681, -73, -996, 485, 682, 687, 486, 691, - 489, 490, 695, 698, 496, 497, 699, 707, 709, 724, - 451, -996, 725, 519, 35, -996, -996, -996, 727, 734, - 532, 737, 738, 739, 745, 748, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - 544, -996, -996, -996, -996, -996, -95, 546, 548, -996, - -996, -996, 754, 755, 756, -996, 766, 765, 563, 327, - -996, -996, -996, 769, 773, 774, 775, 776, 778, 780, - 779, 782, -996, 783, 784, 785, 786, 570, 584, -996, - -996, -996, 791, 790, -996, 793, -996, -996, -996, -996, - -996, 794, 795, 591, 593, 607, -996, -996, 793, 608, - 812, -996, 610, -996, 621, -996, 624, -996, -996, -996, - 793, 793, 793, 625, 626, 627, 628, -996, 629, 630, - -996, 631, 632, 633, -996, -996, 634, -996, -996, -996, - 635, 765, -996, -996, 636, 637, -996, 640, -996, -996, - -50, 587, -996, -996, -95, 641, 644, 651, -996, 797, - -996, -996, 30, 160, -996, 35, 78, 292, 292, 850, - -996, -996, -996, -996, -996, -996, -996, -996, -996, 853, - 855, 856, 860, -996, -996, -996, -996, -996, -996, -996, - -996, -91, 30, 313, 758, 861, 862, 863, 273, 252, - 152, -20, -5, 451, -996, -996, 864, -145, -996, -996, - 867, 868, -996, -996, -996, -996, -996, -19, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, 850, -996, 250, - 271, 274, -996, -996, -996, -996, 873, 875, 876, 877, - 878, 879, 881, -996, 882, -996, -996, -996, -996, -996, - 275, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - 290, -996, 883, 884, -996, -996, 885, 887, -996, -996, - 886, 890, -996, -996, 888, 892, -996, -996, 891, 893, - -996, -996, -996, 185, -996, -996, -996, 894, -996, -996, - -996, 284, -996, -996, -996, -996, 301, -996, -996, -996, - 291, -996, -996, 895, 896, -996, -996, 897, 899, -996, - 900, 901, 902, 903, 904, 905, 303, -996, -996, -996, - -996, -996, -996, -996, -996, -996, 906, 907, 908, -996, - -996, -996, -996, 310, -996, -996, -996, -996, -996, -996, - 909, 910, 911, -996, 343, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, 347, -996, -996, -996, - 912, -996, 913, -996, -996, -996, 361, -996, -996, -996, - -996, -996, 364, -996, 311, -996, 914, -996, 372, -996, - -996, 688, -996, 915, 916, -996, -996, 917, 919, -996, - -996, -996, 880, -996, 918, -996, -996, -996, 921, 922, - 923, 924, 718, 717, 720, 719, 722, 723, 728, 931, - 730, 932, 938, 940, 941, 292, -996, -996, 292, -996, - 850, 668, -996, 853, 81, -996, 855, -25, -996, 856, - 757, -996, 860, -91, -996, -996, 313, -996, 943, 758, - -996, 309, 861, -996, 71, -996, 862, -90, -996, 863, - 743, 744, 746, 747, 753, 759, 273, -996, 944, 967, - 762, 763, 767, 252, -996, 788, 799, 800, 152, -996, - 991, 992, -20, -996, 801, 1014, 809, 1017, -5, -996, - -996, 190, 864, -996, 816, -145, -996, -996, 1027, 1031, - 42, -996, 867, 296, -996, 868, 1033, -996, -996, 129, - 710, 832, 845, -996, -996, -996, -996, -996, -996, -996, - 197, -996, 852, 889, 898, 920, -996, 374, -996, 391, - -996, 1070, -996, 1077, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, 410, -996, -996, -996, -996, -996, -996, -996, -996, - 925, -996, -996, 1084, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, 1083, 1091, -996, -996, -996, - -996, -996, 1088, -996, 411, -996, -996, -996, -996, -996, - -996, -996, -996, 28, 926, -996, -996, -996, -996, -996, - -996, -996, -996, 927, 928, -996, -996, 929, -996, 30, - -996, -996, 1093, -996, -996, -996, -996, -996, 413, -996, - -996, -996, -996, -996, -996, -996, -996, 930, 414, -996, - 420, -996, 933, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, 757, -996, -996, 1094, 934, -996, 309, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - 1096, 935, 1097, 190, -996, -996, -996, -996, -996, -996, - 939, -996, -996, 1098, -996, 942, -996, -996, 1095, -996, - -996, 346, -996, 11, 1095, -996, -996, 1100, 1101, 1102, - -996, 426, -996, -996, -996, -996, -996, -996, -996, 1103, - 937, 946, 948, 1105, 11, -996, 950, -996, -996, -996, - 951, -996, -996, -996 + 434, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, 68, 30, 74, 81, 92, + 102, 110, 126, 137, 147, 163, 167, 173, 177, 187, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 30, -137, + 130, 160, 78, 665, 311, 230, 238, 13, 80, 108, + -82, 448, 43, -1005, 158, 153, 205, 249, 247, -1005, + 67, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 257, 286, + 336, 338, 346, 364, 368, 386, 387, 393, 403, 416, + 417, 427, -1005, 428, 436, 437, 440, 441, -1005, -1005, + -1005, 442, 444, 445, -1005, -1005, -1005, 446, -1005, -1005, + -1005, -1005, 449, 451, 452, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, 455, -1005, -1005, -1005, -1005, -1005, + -1005, 456, 457, 458, -1005, -1005, 459, -1005, 79, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, 463, 464, 465, 467, -1005, + 83, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, 468, 471, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, 97, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 112, + -1005, -1005, -1005, -1005, -1005, 472, -1005, 473, 474, -1005, + -1005, -1005, -1005, -1005, -1005, 113, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, 289, 304, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, 323, -1005, -1005, 475, -1005, -1005, -1005, + 477, -1005, -1005, 343, 367, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 479, 481, + -1005, -1005, -1005, -1005, 411, 483, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 133, -1005, + -1005, -1005, 484, -1005, -1005, 487, -1005, 488, 498, -1005, + -1005, 499, 500, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + 143, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 502, 149, + -1005, -1005, -1005, -1005, 30, 30, -1005, 294, 504, -1005, + -1005, 508, 510, 513, 515, 518, 522, 273, 313, 316, + 317, 320, 321, 322, 324, 236, 325, 337, 339, 341, + 342, 524, 351, 353, 334, 345, 348, 547, 549, 553, + 354, 355, 356, 565, 569, 571, 362, 574, 578, 579, + 581, 370, 372, 373, 586, 588, 589, 592, 594, 595, + 596, 598, 600, 391, 602, 603, 605, 620, 621, 622, + 412, 413, 431, 623, 626, -1005, 160, -1005, 644, 433, + 435, 439, 443, 78, -1005, 646, 650, 652, 654, 655, + 450, 447, 656, 658, 661, 665, -1005, 662, 311, -1005, + 663, 454, 666, 460, 461, 230, -1005, 668, 669, 672, + 673, 674, 675, 676, -1005, 238, -1005, 677, 678, 469, + 680, 681, 682, 453, -1005, 80, 683, 478, 482, -1005, + 108, 687, 689, -50, -1005, 485, 691, 693, 486, 695, + 489, 495, 698, 706, 497, 512, 707, 725, 726, 727, + 448, -1005, 737, 528, 43, -1005, -1005, -1005, 740, 738, + 533, 745, 746, 747, 749, 754, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + 545, -1005, -1005, -1005, -1005, -1005, -108, 548, 558, -1005, + -1005, -1005, 755, 757, 767, -1005, 768, 771, 561, 330, + -1005, -1005, -1005, 774, 775, 776, 778, 777, 781, 784, + 783, 785, -1005, 786, 787, 789, 790, 570, 585, -1005, + -1005, -1005, 794, 793, -1005, 796, -1005, -1005, -1005, -1005, + -1005, 797, 811, 604, 606, 617, -1005, -1005, 796, 624, + 826, -1005, 625, -1005, 627, -1005, 628, -1005, -1005, -1005, + 796, 796, 796, 629, 630, 631, 632, -1005, 633, 634, + -1005, 637, 640, 643, -1005, -1005, 647, -1005, -1005, -1005, + 648, 771, -1005, -1005, 649, 653, -1005, 657, -1005, -1005, + 25, 613, -1005, -1005, -108, 660, 664, 667, -1005, 813, + -1005, -1005, 30, 160, -1005, 43, 78, 347, 347, 827, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 828, + 829, 832, 852, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -94, 30, -3, 750, 861, 862, 864, 275, 106, + 87, -44, -58, 448, -1005, -1005, 867, -160, -1005, -1005, + 869, 872, -1005, -1005, -1005, -1005, -1005, -66, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, 827, -1005, 150, + 165, 192, -1005, -1005, -1005, -1005, 877, 878, 880, 881, + 882, 883, 884, 885, 886, 887, -1005, 888, -1005, -1005, + -1005, -1005, -1005, 200, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, 239, -1005, 889, 890, + -1005, -1005, 891, 893, -1005, -1005, 892, 896, -1005, -1005, + 894, 898, -1005, -1005, 897, 899, -1005, -1005, -1005, 131, + -1005, -1005, -1005, 900, -1005, -1005, -1005, 157, -1005, -1005, + -1005, -1005, 248, -1005, -1005, -1005, 303, -1005, -1005, 901, + 902, -1005, -1005, 903, 905, -1005, 906, 907, 908, 909, + 910, 911, 274, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 912, 913, 914, -1005, -1005, -1005, -1005, 291, + -1005, -1005, -1005, -1005, -1005, -1005, 915, 916, 917, -1005, + 293, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 295, -1005, -1005, -1005, 918, -1005, 919, -1005, + -1005, -1005, 327, -1005, -1005, -1005, -1005, -1005, 331, -1005, + 314, -1005, 920, -1005, 350, -1005, -1005, 712, -1005, 921, + 923, -1005, -1005, 922, 926, -1005, -1005, -1005, 924, -1005, + 925, -1005, -1005, -1005, 929, 930, 931, 934, 690, 714, + 728, 723, 729, 730, 731, 732, 733, 734, 936, 736, + 937, 947, 949, 950, 347, -1005, -1005, 347, -1005, 827, + 665, -1005, 828, 80, -1005, 829, 108, -1005, 832, 753, + -1005, 852, -94, -1005, -1005, -3, -1005, 952, 750, -1005, + 234, 861, -1005, 238, -1005, 862, -82, -1005, 864, 743, + 759, 762, 765, 766, 769, 275, -1005, 959, 960, 773, + 791, 805, 106, -1005, 751, 806, 809, 87, -1005, 978, + 1000, -44, -1005, 814, 1006, 815, 1023, -58, -1005, -1005, + 329, 867, -1005, 822, -160, -1005, -1005, 1036, 1040, 311, + -1005, 869, 230, -1005, 872, 1042, -1005, -1005, 242, 838, + 851, 858, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 237, -1005, 874, 895, 904, 927, -1005, 366, + -1005, 395, -1005, 1086, -1005, 1089, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, 396, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 928, -1005, -1005, 1096, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, 1095, 1102, -1005, + -1005, -1005, -1005, -1005, 1098, -1005, 397, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, 216, 932, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, 933, 935, -1005, -1005, 938, + -1005, 30, -1005, -1005, 1103, -1005, -1005, -1005, -1005, -1005, + 398, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 939, + 414, -1005, 415, -1005, 940, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, 753, -1005, -1005, 1105, 941, -1005, + 234, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 1106, 942, 1107, 329, -1005, -1005, -1005, -1005, + -1005, -1005, 945, -1005, -1005, 1108, -1005, 946, -1005, -1005, + 1109, -1005, -1005, 335, -1005, 3, 1109, -1005, -1005, 1110, + 1111, 1114, -1005, 426, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, 1115, 944, 954, 955, 1116, 3, -1005, 948, -1005, + -1005, -1005, 953, -1005, -1005, -1005 }; const short @@ -5206,18 +5237,18 @@ 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, 184, 9, 362, 11, - 565, 13, 592, 15, 624, 17, 485, 19, 494, 21, - 533, 23, 324, 25, 749, 27, 800, 29, 48, 41, - 0, 0, 0, 0, 0, 0, 626, 0, 496, 535, + 35, 36, 61, 5, 67, 7, 184, 9, 368, 11, + 571, 13, 598, 15, 630, 17, 491, 19, 500, 21, + 539, 23, 330, 25, 755, 27, 806, 29, 48, 41, + 0, 0, 0, 0, 0, 0, 632, 0, 502, 541, 0, 0, 0, 50, 0, 49, 0, 0, 42, 63, - 0, 65, 137, 798, 182, 203, 205, 207, 0, 0, + 0, 65, 137, 804, 182, 203, 205, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 156, 163, - 165, 0, 0, 0, 353, 483, 524, 0, 431, 579, - 581, 423, 0, 0, 0, 280, 299, 289, 272, 662, - 615, 315, 336, 691, 0, 301, 716, 730, 747, 169, - 171, 0, 0, 0, 810, 852, 0, 136, 0, 69, + 165, 0, 0, 0, 359, 489, 530, 0, 437, 585, + 587, 429, 0, 0, 0, 286, 305, 295, 278, 668, + 621, 321, 342, 697, 0, 307, 722, 736, 753, 169, + 171, 0, 0, 0, 816, 858, 0, 136, 0, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 111, 112, 113, 114, 115, 81, 119, 120, 121, 122, 123, 124, 125, 126, 117, 118, 127, 128, 129, 106, 135, @@ -5225,27 +5256,27 @@ namespace isc { namespace dhcp { 89, 130, 94, 95, 82, 108, 109, 110, 107, 83, 92, 93, 101, 102, 104, 91, 96, 97, 98, 99, 100, 105, 116, 134, 197, 0, 0, 0, 0, 196, - 0, 186, 189, 190, 191, 192, 193, 194, 195, 556, - 583, 410, 412, 414, 0, 0, 418, 416, 656, 409, - 367, 368, 369, 370, 371, 372, 373, 374, 393, 394, - 395, 396, 397, 400, 401, 402, 403, 404, 405, 406, - 407, 398, 399, 408, 0, 364, 378, 379, 380, 383, - 384, 387, 388, 389, 386, 381, 382, 375, 376, 391, - 392, 377, 385, 390, 577, 576, 572, 573, 571, 0, - 567, 570, 574, 575, 608, 0, 611, 0, 0, 607, - 601, 602, 600, 605, 606, 0, 594, 597, 598, 603, - 604, 599, 654, 642, 644, 646, 648, 650, 652, 641, - 638, 639, 640, 0, 627, 628, 633, 634, 631, 635, - 636, 637, 632, 0, 514, 250, 0, 518, 516, 521, - 0, 510, 511, 0, 497, 498, 501, 513, 502, 503, - 504, 520, 505, 506, 507, 508, 509, 550, 0, 0, - 548, 549, 552, 553, 0, 536, 537, 540, 541, 542, - 543, 544, 545, 546, 547, 332, 334, 329, 0, 326, - 330, 331, 0, 773, 775, 0, 778, 0, 0, 782, - 786, 0, 0, 790, 792, 794, 796, 771, 769, 770, - 0, 751, 754, 766, 755, 756, 757, 758, 759, 760, - 761, 762, 763, 764, 765, 767, 768, 807, 0, 0, - 802, 805, 806, 47, 52, 0, 39, 45, 0, 66, + 0, 186, 189, 190, 191, 192, 193, 194, 195, 562, + 589, 416, 418, 420, 0, 0, 424, 422, 662, 415, + 373, 374, 375, 376, 377, 378, 379, 380, 399, 400, + 401, 402, 403, 406, 407, 408, 409, 410, 411, 412, + 413, 404, 405, 414, 0, 370, 384, 385, 386, 389, + 390, 393, 394, 395, 392, 387, 388, 381, 382, 397, + 398, 383, 391, 396, 583, 582, 578, 579, 577, 0, + 573, 576, 580, 581, 614, 0, 617, 0, 0, 613, + 607, 608, 606, 611, 612, 0, 600, 603, 604, 609, + 610, 605, 660, 648, 650, 652, 654, 656, 658, 647, + 644, 645, 646, 0, 633, 634, 639, 640, 637, 641, + 642, 643, 638, 0, 520, 253, 0, 524, 522, 527, + 0, 516, 517, 0, 503, 504, 507, 519, 508, 509, + 510, 526, 511, 512, 513, 514, 515, 556, 0, 0, + 554, 555, 558, 559, 0, 542, 543, 546, 547, 548, + 549, 550, 551, 552, 553, 338, 340, 335, 0, 332, + 336, 337, 0, 779, 781, 0, 784, 0, 0, 788, + 792, 0, 0, 796, 798, 800, 802, 777, 775, 776, + 0, 757, 760, 772, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 773, 774, 813, 0, 0, + 808, 811, 812, 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, @@ -5254,137 +5285,138 @@ namespace isc { namespace dhcp { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 71, 68, 0, 0, 0, 0, 0, 188, 185, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 366, 363, 0, 569, 566, - 0, 0, 0, 0, 0, 596, 593, 0, 0, 0, - 0, 0, 0, 0, 625, 630, 486, 0, 0, 0, - 0, 0, 0, 0, 495, 500, 0, 0, 0, 534, - 539, 0, 0, 328, 325, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 372, 369, 0, 575, 572, + 0, 0, 0, 0, 0, 602, 599, 0, 0, 0, + 0, 0, 0, 0, 631, 636, 492, 0, 0, 0, + 0, 0, 0, 0, 501, 506, 0, 0, 0, 540, + 545, 0, 0, 334, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 753, 750, 0, 0, 804, 801, 51, 43, 0, 0, + 759, 756, 0, 0, 810, 807, 51, 43, 0, 0, 0, 0, 0, 0, 0, 0, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 0, 174, 175, 153, 154, 155, 0, 0, 0, 167, 168, 173, 0, 0, 0, 178, 0, 0, 0, 0, - 420, 421, 422, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 715, 0, 0, 0, 0, 0, 0, 179, + 426, 427, 428, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 0, 0, 0, 0, 0, 179, 180, 181, 0, 0, 70, 0, 199, 200, 201, 202, - 187, 0, 0, 0, 0, 0, 429, 430, 0, 0, - 0, 365, 0, 568, 0, 610, 0, 613, 614, 595, - 0, 0, 0, 0, 0, 0, 0, 629, 0, 0, - 512, 0, 0, 0, 523, 499, 0, 554, 555, 538, - 0, 0, 327, 772, 0, 0, 777, 0, 780, 781, - 0, 0, 788, 789, 0, 0, 0, 0, 752, 0, - 809, 803, 0, 0, 138, 0, 0, 0, 0, 209, - 177, 158, 159, 160, 161, 162, 157, 164, 166, 355, - 487, 526, 433, 40, 580, 582, 425, 426, 427, 428, - 424, 0, 48, 0, 0, 0, 617, 317, 0, 0, + 187, 0, 0, 0, 0, 0, 435, 436, 0, 0, + 0, 371, 0, 574, 0, 616, 0, 619, 620, 601, + 0, 0, 0, 0, 0, 0, 0, 635, 0, 0, + 518, 0, 0, 0, 529, 505, 0, 560, 561, 544, + 0, 0, 333, 778, 0, 0, 783, 0, 786, 787, + 0, 0, 794, 795, 0, 0, 0, 0, 758, 0, + 815, 809, 0, 0, 138, 0, 0, 0, 0, 209, + 177, 158, 159, 160, 161, 162, 157, 164, 166, 361, + 493, 532, 439, 40, 586, 588, 431, 432, 433, 434, + 430, 0, 48, 0, 0, 0, 623, 323, 0, 0, 0, 0, 0, 0, 170, 172, 0, 0, 53, 198, - 558, 585, 411, 413, 415, 419, 417, 0, 578, 609, - 612, 655, 643, 645, 647, 649, 651, 653, 515, 251, - 519, 517, 522, 551, 333, 335, 774, 776, 779, 784, - 785, 783, 787, 791, 793, 795, 797, 209, 44, 0, - 0, 0, 238, 243, 245, 247, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 264, 266, 268, 270, 237, - 0, 216, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 230, 231, 232, 229, 233, 234, 235, 236, - 0, 214, 0, 210, 211, 360, 0, 356, 357, 492, - 0, 488, 489, 531, 0, 527, 528, 438, 0, 434, - 435, 287, 288, 0, 282, 285, 286, 0, 297, 298, - 294, 0, 291, 295, 296, 278, 0, 274, 277, 667, - 0, 664, 622, 0, 618, 619, 322, 0, 318, 319, - 0, 0, 0, 0, 0, 0, 0, 338, 341, 342, - 343, 344, 345, 346, 705, 711, 0, 0, 0, 704, - 701, 702, 703, 0, 693, 696, 699, 697, 698, 700, - 0, 0, 0, 311, 0, 303, 306, 307, 308, 309, - 310, 726, 728, 725, 723, 724, 0, 718, 721, 722, - 0, 742, 0, 745, 738, 739, 0, 732, 735, 736, - 737, 740, 0, 815, 0, 812, 0, 858, 0, 854, - 857, 55, 563, 0, 559, 560, 590, 0, 586, 587, - 660, 659, 0, 658, 0, 64, 799, 183, 0, 0, + 564, 591, 417, 419, 421, 425, 423, 0, 584, 615, + 618, 661, 649, 651, 653, 655, 657, 659, 521, 254, + 525, 523, 528, 557, 339, 341, 780, 782, 785, 790, + 791, 789, 793, 797, 799, 801, 803, 209, 44, 0, + 0, 0, 241, 246, 248, 250, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 270, 272, + 274, 276, 240, 0, 216, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, + 235, 232, 236, 237, 238, 239, 0, 214, 0, 210, + 211, 366, 0, 362, 363, 498, 0, 494, 495, 537, + 0, 533, 534, 444, 0, 440, 441, 293, 294, 0, + 288, 291, 292, 0, 303, 304, 300, 0, 297, 301, + 302, 284, 0, 280, 283, 673, 0, 670, 628, 0, + 624, 625, 328, 0, 324, 325, 0, 0, 0, 0, + 0, 0, 0, 344, 347, 348, 349, 350, 351, 352, + 711, 717, 0, 0, 0, 710, 707, 708, 709, 0, + 699, 702, 705, 703, 704, 706, 0, 0, 0, 317, + 0, 309, 312, 313, 314, 315, 316, 732, 734, 731, + 729, 730, 0, 724, 727, 728, 0, 748, 0, 751, + 744, 745, 0, 738, 741, 742, 743, 746, 0, 821, + 0, 818, 0, 864, 0, 860, 863, 55, 569, 0, + 565, 566, 596, 0, 592, 593, 666, 665, 0, 664, + 0, 64, 805, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 218, 204, 206, 0, 208, - 213, 0, 354, 359, 496, 484, 491, 535, 525, 530, - 0, 432, 437, 284, 281, 300, 293, 290, 0, 276, - 273, 669, 666, 663, 626, 616, 621, 0, 316, 321, - 0, 0, 0, 0, 0, 0, 340, 337, 0, 0, - 0, 0, 0, 695, 692, 0, 0, 0, 305, 302, - 0, 0, 720, 717, 0, 0, 0, 0, 734, 731, - 748, 0, 814, 811, 0, 856, 853, 57, 0, 56, - 0, 557, 562, 0, 584, 589, 0, 657, 808, 0, - 0, 0, 0, 249, 252, 253, 254, 255, 263, 256, - 0, 262, 0, 0, 0, 0, 217, 0, 212, 0, - 358, 0, 490, 0, 529, 482, 457, 458, 459, 461, - 462, 463, 447, 448, 466, 467, 468, 469, 470, 473, - 474, 475, 476, 477, 478, 479, 480, 471, 472, 481, - 443, 444, 445, 446, 455, 456, 452, 453, 454, 451, - 460, 0, 440, 449, 464, 465, 450, 436, 283, 292, - 0, 275, 688, 0, 686, 680, 681, 682, 683, 684, - 685, 687, 677, 678, 679, 0, 670, 671, 674, 675, - 676, 665, 0, 620, 0, 320, 347, 348, 349, 350, - 351, 352, 339, 0, 0, 710, 713, 714, 694, 312, - 313, 314, 304, 0, 0, 719, 741, 0, 744, 0, - 733, 830, 0, 828, 826, 820, 824, 825, 0, 817, - 822, 823, 821, 813, 859, 855, 54, 59, 0, 561, - 0, 588, 0, 240, 241, 242, 239, 244, 246, 248, - 259, 260, 261, 258, 265, 267, 269, 271, 215, 361, - 493, 532, 442, 439, 279, 0, 0, 668, 673, 623, - 323, 707, 708, 709, 706, 712, 727, 729, 743, 746, - 0, 0, 0, 819, 816, 58, 564, 591, 661, 441, - 0, 690, 672, 0, 827, 0, 818, 689, 0, 829, - 835, 0, 832, 0, 834, 831, 845, 0, 0, 0, - 850, 0, 837, 840, 841, 842, 843, 844, 833, 0, - 0, 0, 0, 0, 839, 836, 0, 847, 848, 849, - 0, 838, 846, 851 + 0, 0, 0, 0, 218, 204, 206, 0, 208, 213, + 0, 360, 365, 502, 490, 497, 541, 531, 536, 0, + 438, 443, 290, 287, 306, 299, 296, 0, 282, 279, + 675, 672, 669, 632, 622, 627, 0, 322, 327, 0, + 0, 0, 0, 0, 0, 346, 343, 0, 0, 0, + 0, 0, 701, 698, 0, 0, 0, 311, 308, 0, + 0, 726, 723, 0, 0, 0, 0, 740, 737, 754, + 0, 820, 817, 0, 862, 859, 57, 0, 56, 0, + 563, 568, 0, 590, 595, 0, 663, 814, 0, 0, + 0, 0, 252, 255, 256, 257, 258, 259, 260, 261, + 269, 262, 0, 268, 0, 0, 0, 0, 217, 0, + 212, 0, 364, 0, 496, 0, 535, 488, 463, 464, + 465, 467, 468, 469, 453, 454, 472, 473, 474, 475, + 476, 479, 480, 481, 482, 483, 484, 485, 486, 477, + 478, 487, 449, 450, 451, 452, 461, 462, 458, 459, + 460, 457, 466, 0, 446, 455, 470, 471, 456, 442, + 289, 298, 0, 281, 694, 0, 692, 686, 687, 688, + 689, 690, 691, 693, 683, 684, 685, 0, 676, 677, + 680, 681, 682, 671, 0, 626, 0, 326, 353, 354, + 355, 356, 357, 358, 345, 0, 0, 716, 719, 720, + 700, 318, 319, 320, 310, 0, 0, 725, 747, 0, + 750, 0, 739, 836, 0, 834, 832, 826, 830, 831, + 0, 823, 828, 829, 827, 819, 865, 861, 54, 59, + 0, 567, 0, 594, 0, 243, 244, 245, 242, 247, + 249, 251, 265, 266, 267, 264, 271, 273, 275, 277, + 215, 367, 499, 538, 448, 445, 285, 0, 0, 674, + 679, 629, 329, 713, 714, 715, 712, 718, 733, 735, + 749, 752, 0, 0, 0, 825, 822, 58, 570, 597, + 667, 447, 0, 696, 678, 0, 833, 0, 824, 695, + 0, 835, 841, 0, 838, 0, 840, 837, 851, 0, + 0, 0, 856, 0, 843, 846, 847, 848, 849, 850, + 839, 0, 0, 0, 0, 0, 845, 842, 0, 853, + 854, 855, 0, 844, 852, 857 }; const short Dhcp6Parser::yypgoto_[] = { - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -10, -996, -589, -996, - 409, -996, -996, -996, -996, 360, -996, -594, -996, -996, - -996, -71, -996, -996, -996, -996, -996, -996, -996, 388, - 609, -996, -996, -43, -14, 12, 16, 20, 33, -59, - -31, -30, -28, -27, -26, 19, -996, 34, 37, 38, - 41, -996, 400, 49, -996, 52, -996, 54, 55, 56, - -996, 59, -996, 62, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, 387, 604, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - 314, -996, 109, -996, -712, 111, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -45, -996, -748, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, 89, - -996, -996, -996, -996, -996, 97, -731, -996, -996, -996, - -996, 98, -996, -996, -996, -996, -996, -996, -996, 64, - -996, -996, -996, -996, -996, -996, -996, 84, -996, -996, - -996, 88, 564, -996, -996, -996, -996, -996, -996, -996, - 80, -996, -996, -996, -996, -996, -996, -995, -996, -996, - -996, 115, -996, -996, -996, 118, 606, -996, -996, -993, - -996, -992, -996, 73, -996, 75, -996, 66, 69, 70, - 72, -996, -996, -996, -991, -996, -996, -996, -996, 110, - -996, -996, -119, 1057, -996, -996, -996, -996, -996, 125, - -996, -996, -996, 128, -996, 590, -996, -67, -996, -996, - -996, -996, -996, -64, -996, -996, -996, -996, -996, 4, - -996, -996, -996, 132, -996, -996, -996, 127, -996, 611, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, 82, -996, -996, -996, 68, 638, -996, -996, -55, - -996, -12, -996, -996, -996, -996, -996, 77, -996, -996, - -996, 85, 619, -996, -996, -996, -996, -996, -996, -996, - -60, -996, -996, -996, 131, -996, -996, -996, 135, -996, - 618, 395, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -989, -996, -996, -996, -996, - -996, -996, -996, 138, -996, -996, -996, -93, -996, -996, - -996, -996, -996, -996, -996, 120, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, 112, -996, - -996, -996, -996, -996, -996, -996, 107, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, 419, 597, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - -996, -996, -996, -996, -996, -996, -996, -996, 475, 599, - -996, -996, -996, -996, -996, -996, 104, -996, -996, -94, - -996, -996, -996, -996, -996, -996, -116, -996, -996, -134, - -996, -996, -996, -996, -996, -996, -996, -996, -996, -996, - 114, -996 + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -10, -1005, -583, -1005, + 193, -1005, -1005, -1005, -1005, 360, -1005, -632, -1005, -1005, + -1005, -71, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 399, + 615, -1005, -1005, -43, -14, 12, 16, 20, 33, -59, + -31, -30, -28, -27, -26, 19, -1005, 34, 37, 38, + 41, -1005, 409, 49, -1005, 52, -1005, 54, 55, 56, + -1005, 59, -1005, 62, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, 400, 611, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + 318, -1005, 109, -1005, -712, 115, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -45, -1005, -748, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 89, -1005, -1005, -1005, -1005, -1005, 98, -731, + -1005, -1005, -1005, -1005, 96, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, 65, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + 85, -1005, -1005, -1005, 88, 572, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, 82, -1005, -1005, -1005, -1005, -1005, -1005, + -1004, -1005, -1005, -1005, 114, -1005, -1005, -1005, 118, 614, + -1005, -1005, -1002, -1005, -1001, -1005, 73, -1005, 75, -1005, + 66, 69, 70, 72, -1005, -1005, -1005, -1000, -1005, -1005, + -1005, -1005, 111, -1005, -1005, -121, 1067, -1005, -1005, -1005, + -1005, -1005, 122, -1005, -1005, -1005, 127, -1005, 599, -1005, + -67, -1005, -1005, -1005, -1005, -1005, -64, -1005, -1005, -1005, + -1005, -1005, 4, -1005, -1005, -1005, 121, -1005, -1005, -1005, + 129, -1005, 610, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, 84, -1005, -1005, -1005, 90, 635, + -1005, -1005, -55, -1005, -12, -1005, -1005, -1005, -1005, -1005, + 77, -1005, -1005, -1005, 86, 638, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -60, -1005, -1005, -1005, 132, -1005, -1005, + -1005, 138, -1005, 639, 405, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -998, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, 135, -1005, -1005, -1005, + -98, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 123, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, 103, -1005, -1005, -1005, -1005, -1005, -1005, -1005, 117, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + 420, 607, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, 466, 608, -1005, -1005, -1005, -1005, -1005, -1005, 99, + -1005, -1005, -99, -1005, -1005, -1005, -1005, -1005, -1005, -118, + -1005, -1005, -136, -1005, -1005, -1005, -1005, -1005, -1005, -1005, + -1005, -1005, -1005, 105, -1005 }; const short @@ -5392,187 +5424,188 @@ namespace isc { namespace dhcp { { 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 83, 39, 40, 69, - 744, 87, 88, 41, 68, 84, 85, 769, 971, 1078, - 1079, 829, 43, 70, 90, 438, 91, 45, 71, 158, + 744, 87, 88, 41, 68, 84, 85, 769, 977, 1087, + 1088, 832, 43, 70, 90, 438, 91, 45, 71, 158, 159, 160, 441, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 467, 736, 179, 468, 180, 469, 181, 182, 183, 498, 184, 499, 185, 186, 187, 188, 461, 189, 190, 191, 192, 193, 443, 47, 72, 230, 231, 232, 508, 233, 234, 235, 236, 194, 444, 195, 445, 196, 446, - 852, 853, 854, 1008, 830, 831, 832, 988, 1236, 833, - 989, 834, 990, 835, 991, 836, 837, 548, 838, 839, - 840, 841, 842, 843, 999, 1243, 844, 845, 846, 1001, - 847, 1002, 848, 1003, 849, 1004, 197, 487, 886, 887, - 888, 1028, 198, 484, 873, 874, 875, 876, 199, 486, - 881, 882, 883, 884, 200, 485, 201, 494, 934, 935, - 936, 937, 938, 202, 490, 897, 898, 899, 1037, 63, - 80, 388, 389, 390, 561, 391, 562, 203, 491, 906, - 907, 908, 909, 910, 911, 912, 913, 204, 473, 856, - 857, 858, 1011, 49, 73, 274, 275, 276, 517, 277, - 518, 278, 519, 279, 523, 280, 522, 205, 206, 207, - 208, 480, 750, 285, 286, 209, 477, 868, 869, 870, - 1020, 1151, 1152, 210, 474, 57, 77, 860, 861, 862, - 1014, 59, 78, 353, 354, 355, 356, 357, 358, 359, - 547, 360, 551, 361, 550, 362, 363, 552, 364, 211, - 475, 864, 865, 866, 1017, 61, 79, 374, 375, 376, - 377, 378, 556, 379, 380, 381, 382, 288, 515, 973, - 974, 975, 1080, 51, 74, 299, 300, 301, 527, 212, - 478, 213, 479, 291, 516, 977, 978, 979, 1083, 53, - 75, 315, 316, 317, 530, 318, 319, 532, 320, 321, - 214, 489, 893, 894, 895, 1034, 55, 76, 333, 334, - 335, 336, 538, 337, 539, 338, 540, 339, 541, 340, - 542, 341, 543, 342, 537, 293, 524, 982, 983, 1086, - 215, 488, 890, 891, 1031, 1175, 1176, 1177, 1178, 1179, - 1255, 1180, 216, 492, 923, 924, 925, 1048, 1264, 926, - 927, 1049, 928, 929, 217, 218, 495, 946, 947, 948, - 1060, 949, 1061, 219, 496, 956, 957, 958, 959, 1065, - 960, 961, 1067, 220, 497, 65, 81, 410, 411, 412, - 413, 566, 414, 567, 415, 416, 569, 417, 418, 419, - 572, 801, 420, 573, 421, 422, 423, 576, 424, 577, - 425, 578, 426, 579, 221, 442, 67, 82, 429, 430, - 431, 582, 432, 222, 503, 964, 965, 1071, 1218, 1219, - 1220, 1221, 1272, 1222, 1270, 1291, 1292, 1293, 1301, 1302, - 1303, 1309, 1304, 1305, 1306, 1307, 1313, 223, 504, 968, - 969, 970 + 858, 859, 860, 1017, 833, 834, 835, 994, 1248, 836, + 995, 837, 996, 838, 997, 839, 840, 548, 841, 842, + 843, 844, 845, 846, 847, 848, 849, 1008, 1255, 850, + 851, 852, 1010, 853, 1011, 854, 1012, 855, 1013, 197, + 487, 892, 893, 894, 1037, 198, 484, 879, 880, 881, + 882, 199, 486, 887, 888, 889, 890, 200, 485, 201, + 494, 940, 941, 942, 943, 944, 202, 490, 903, 904, + 905, 1046, 63, 80, 388, 389, 390, 561, 391, 562, + 203, 491, 912, 913, 914, 915, 916, 917, 918, 919, + 204, 473, 862, 863, 864, 1020, 49, 73, 274, 275, + 276, 517, 277, 518, 278, 519, 279, 523, 280, 522, + 205, 206, 207, 208, 480, 750, 285, 286, 209, 477, + 874, 875, 876, 1029, 1163, 1164, 210, 474, 57, 77, + 866, 867, 868, 1023, 59, 78, 353, 354, 355, 356, + 357, 358, 359, 547, 360, 551, 361, 550, 362, 363, + 552, 364, 211, 475, 870, 871, 872, 1026, 61, 79, + 374, 375, 376, 377, 378, 556, 379, 380, 381, 382, + 288, 515, 979, 980, 981, 1089, 51, 74, 299, 300, + 301, 527, 212, 478, 213, 479, 291, 516, 983, 984, + 985, 1092, 53, 75, 315, 316, 317, 530, 318, 319, + 532, 320, 321, 214, 489, 899, 900, 901, 1043, 55, + 76, 333, 334, 335, 336, 538, 337, 539, 338, 540, + 339, 541, 340, 542, 341, 543, 342, 537, 293, 524, + 988, 989, 1095, 215, 488, 896, 897, 1040, 1187, 1188, + 1189, 1190, 1191, 1267, 1192, 216, 492, 929, 930, 931, + 1057, 1276, 932, 933, 1058, 934, 935, 217, 218, 495, + 952, 953, 954, 1069, 955, 1070, 219, 496, 962, 963, + 964, 965, 1074, 966, 967, 1076, 220, 497, 65, 81, + 410, 411, 412, 413, 566, 414, 567, 415, 416, 569, + 417, 418, 419, 572, 801, 420, 573, 421, 422, 423, + 576, 424, 577, 425, 578, 426, 579, 221, 442, 67, + 82, 429, 430, 431, 582, 432, 222, 503, 970, 971, + 1080, 1230, 1231, 1232, 1233, 1284, 1234, 1282, 1303, 1304, + 1305, 1313, 1314, 1315, 1321, 1316, 1317, 1318, 1319, 1325, + 223, 504, 974, 975, 976 }; const short Dhcp6Parser::yytable_[] = { 157, 229, 249, 295, 309, 329, 38, 351, 370, 387, - 407, 920, 372, 292, 256, 373, 850, 237, 289, 302, - 313, 331, 880, 365, 383, 1141, 408, 1142, 1143, 1150, - 250, 1156, 871, 352, 371, 31, 30, 32, 743, 33, - 385, 386, 257, 258, 86, 259, 260, 261, 427, 428, - 966, 345, 367, 346, 347, 368, 369, 385, 386, 251, - 238, 290, 303, 314, 332, 156, 366, 384, 439, 409, - 129, 130, 125, 440, 775, 129, 130, 287, 298, 312, - 330, 731, 732, 733, 734, 252, 781, 782, 783, 253, - 129, 130, 262, 254, 224, 225, 226, 227, 228, 506, - 42, 44, 323, 513, 507, 344, 255, 263, 514, 980, - 264, 265, 743, 46, 266, 48, 525, 126, 735, 872, - 156, 526, 267, 799, 800, 268, 528, 269, 270, 271, - 294, 529, 272, 941, 942, 273, 535, 129, 130, 281, - 89, 536, 282, 283, 50, 284, 126, 296, 310, 297, - 311, 950, 951, 952, 1233, 1234, 1235, 345, 246, 346, - 347, 247, 52, 348, 349, 350, 129, 130, 1261, 1262, - 1263, 92, 93, 129, 130, 94, 129, 130, 54, 563, - 56, 95, 96, 97, 564, 156, 322, 58, 1023, 60, - 156, 1024, 323, 324, 325, 326, 327, 328, 1296, 62, - 64, 1297, 1298, 1299, 1300, 953, 66, 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, 1240, 1241, 1242, 580, - 34, 35, 36, 37, 581, 127, 128, 129, 130, 584, - 433, 434, 156, 506, 585, 129, 130, 1141, 985, 1142, - 1143, 1150, 131, 1156, 435, 436, 345, 132, 133, 134, - 135, 136, 137, 138, 584, 139, 914, 513, 1005, 986, - 140, 156, 987, 1006, 817, 129, 130, 1026, 156, 141, - 1027, 156, 142, 1005, 1032, 880, 1107, 1033, 1007, 143, - 437, 930, 931, 932, 1029, 920, 1046, 144, 145, 1030, - 447, 1047, 146, 1053, 1072, 147, 812, 1073, 1054, 148, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 544, 448, 449, 824, 825, 826, 827, 828, 450, - 149, 150, 151, 152, 153, 154, 1058, 129, 130, 1294, - 1062, 1059, 1295, 451, 155, 1063, 98, 99, 100, 101, - 102, 103, 156, 452, 1068, 546, 453, 580, 345, 1069, - 156, 126, 1070, 454, 455, 1075, 1211, 1005, 1212, 1213, - 1076, 456, 1248, 457, 126, 345, 304, 305, 306, 307, - 308, 129, 130, 458, 525, 915, 916, 917, 918, 1249, - 156, 459, 460, 462, 129, 130, 900, 901, 902, 903, - 904, 905, 246, 1252, 563, 247, 1273, 528, 1253, 1260, - 463, 1274, 1276, 535, 586, 587, 1162, 1163, 1277, 1314, - 746, 747, 748, 749, 1315, 157, 871, 878, 464, 879, - 465, 545, 229, 466, 470, 471, 472, 476, 481, 482, - 483, 493, 500, 501, 249, 588, 502, 295, 237, 505, - 509, 510, 156, 511, 309, 292, 256, 512, 520, 521, - 289, 531, 533, 302, 329, 534, 549, 553, 554, 555, - 313, 557, 250, 558, 351, 560, 559, 565, 568, 370, - 331, 570, 571, 372, 257, 258, 373, 259, 260, 261, - 365, 238, 156, 574, 575, 383, 156, 583, 589, 407, - 352, 251, 590, 290, 591, 371, 303, 592, 593, 156, - 594, 595, 610, 314, 605, 408, 596, 597, 598, 287, - 599, 600, 298, 332, 604, 601, 602, 252, 606, 312, - 616, 253, 603, 366, 262, 254, 129, 130, 384, 330, - 607, 608, 609, 611, 617, 612, 618, 622, 255, 263, - 623, 613, 264, 265, 614, 615, 266, 619, 409, 620, - 624, 621, 626, 627, 267, 628, 625, 268, 629, 269, - 270, 271, 633, 634, 272, 635, 630, 273, 631, 632, - 636, 281, 637, 638, 282, 283, 639, 284, 640, 641, - 643, 296, 644, 297, 642, 645, 646, 647, 310, 648, + 407, 926, 372, 292, 256, 373, 856, 237, 289, 302, + 313, 331, 886, 365, 383, 1153, 408, 1154, 1155, 1162, + 250, 1168, 877, 352, 371, 31, 775, 32, 972, 33, + 129, 130, 257, 258, 743, 259, 260, 261, 781, 782, + 783, 385, 386, 156, 129, 130, 427, 428, 323, 251, + 238, 290, 303, 314, 332, 986, 366, 384, 30, 409, + 439, 731, 732, 733, 734, 440, 86, 287, 298, 312, + 330, 42, 506, 385, 386, 252, 513, 507, 44, 253, + 125, 514, 262, 254, 224, 225, 226, 227, 228, 46, + 525, 956, 957, 958, 344, 526, 255, 263, 735, 48, + 264, 265, 947, 948, 266, 528, 535, 50, 743, 878, + 529, 536, 267, 877, 884, 268, 885, 269, 270, 271, + 920, 156, 272, 52, 1032, 273, 563, 1033, 817, 281, + 89, 564, 282, 283, 54, 284, 580, 296, 310, 297, + 311, 581, 584, 506, 56, 959, 434, 585, 991, 345, + 1035, 346, 347, 1036, 433, 348, 349, 350, 584, 156, + 58, 92, 93, 992, 60, 94, 129, 130, 129, 130, + 62, 95, 96, 97, 64, 129, 130, 345, 367, 346, + 347, 368, 369, 1308, 66, 513, 1309, 1310, 1311, 1312, + 993, 799, 800, 1014, 129, 130, 129, 130, 1015, 435, + 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, 936, + 937, 938, 1014, 34, 35, 36, 37, 1016, 127, 128, + 437, 1038, 921, 922, 923, 924, 1039, 436, 129, 130, + 1153, 447, 1154, 1155, 1162, 131, 1168, 1245, 1246, 1247, + 132, 133, 134, 135, 136, 137, 138, 1055, 139, 1252, + 1253, 1254, 1056, 140, 98, 99, 100, 101, 102, 103, + 448, 156, 141, 156, 1062, 142, 1067, 544, 1071, 1063, + 156, 1068, 143, 1072, 886, 1119, 1041, 545, 126, 1042, + 144, 145, 126, 345, 926, 146, 126, 1081, 147, 156, + 1082, 156, 148, 304, 305, 306, 307, 308, 129, 130, + 1077, 546, 129, 130, 580, 1078, 129, 130, 1306, 1079, + 449, 1307, 450, 149, 150, 151, 152, 153, 154, 246, + 451, 554, 247, 1084, 1174, 1175, 322, 155, 1085, 1273, + 1274, 1275, 323, 324, 325, 326, 327, 328, 452, 1014, + 555, 812, 453, 156, 1260, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 822, 823, 824, 825, 826, 126, + 454, 455, 827, 828, 829, 830, 831, 456, 525, 1264, + 563, 1285, 294, 1261, 1265, 1272, 1286, 457, 345, 129, + 130, 906, 907, 908, 909, 910, 911, 528, 535, 559, + 458, 459, 1288, 1289, 586, 587, 345, 129, 130, 1326, + 246, 460, 462, 247, 1327, 157, 746, 747, 748, 749, + 463, 464, 229, 156, 465, 466, 470, 156, 471, 472, + 476, 156, 604, 481, 249, 482, 483, 295, 237, 493, + 500, 501, 502, 505, 309, 292, 256, 509, 510, 511, + 289, 512, 520, 302, 329, 521, 531, 533, 534, 549, + 313, 553, 250, 557, 351, 558, 560, 596, 565, 370, + 331, 568, 570, 372, 257, 258, 373, 259, 260, 261, + 365, 238, 571, 574, 575, 383, 583, 588, 589, 407, + 352, 251, 590, 290, 591, 371, 303, 592, 1223, 593, + 1224, 1225, 594, 314, 156, 408, 595, 597, 610, 287, + 598, 599, 298, 332, 600, 601, 602, 252, 603, 312, + 605, 253, 156, 366, 262, 254, 129, 130, 384, 330, + 613, 616, 606, 617, 607, 608, 609, 618, 255, 263, + 156, 614, 264, 265, 615, 611, 266, 612, 409, 622, + 619, 620, 621, 623, 267, 624, 625, 268, 626, 269, + 270, 271, 627, 628, 272, 629, 630, 273, 631, 632, + 633, 281, 634, 635, 282, 283, 636, 284, 637, 638, + 639, 296, 640, 297, 641, 642, 643, 644, 310, 645, 311, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 652, 649, 653, 655, 650, 658, - 651, 405, 406, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 661, 656, 662, - 663, 664, 157, 665, 668, 229, 669, 670, 672, 674, - 676, 156, 680, 657, 659, 666, 681, 682, 683, 675, - 684, 237, 677, 667, 685, 686, 688, 678, 689, 691, - 690, 692, 693, 696, 700, 701, 704, 694, 919, 933, - 943, 705, 407, 697, 698, 707, 967, 706, 703, 710, - 708, 709, 711, 714, 921, 939, 944, 954, 408, 712, - 713, 715, 808, 716, 238, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 717, 719, - 720, 722, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 723, 724, 126, 725, 726, 727, 922, 940, 945, - 955, 409, 728, 729, 730, 239, 737, 240, 738, 739, - 740, 741, 802, 129, 130, 241, 242, 243, 244, 245, - 131, 742, 32, 745, 751, 132, 133, 134, 752, 753, - 764, 755, 754, 756, 246, 757, 758, 247, 140, 759, - 760, 761, 762, 763, 765, 248, 766, 767, 768, 770, - 771, 772, 807, 773, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 774, 776, 777, - 778, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 779, 126, 345, 780, 784, 785, 786, 787, 788, - 789, 790, 791, 792, 793, 794, 796, 797, 149, 150, - 798, 804, 129, 130, 805, 242, 243, 851, 245, 131, - 855, 806, 859, 863, 132, 133, 134, 867, 889, 892, - 896, 963, 885, 246, 972, 976, 247, 992, 156, 993, - 994, 995, 996, 997, 248, 998, 1000, 1010, 1087, 1009, - 1013, 1012, 1015, 1016, 1018, 1019, 1022, 1021, 1077, 1036, - 1025, 1035, 1039, 1038, 1040, 1041, 1042, 1043, 1044, 1045, - 1050, 1051, 1052, 1055, 1056, 1057, 1064, 1066, 1074, 1082, - 1237, 1081, 1085, 1084, 1088, 1089, 1090, 1091, 1092, 1093, - 1094, 1095, 1096, 1097, 1098, 1100, 1102, 149, 150, 1099, - 249, 1101, 1103, 351, 1104, 1105, 370, 1160, 1193, 1115, - 372, 292, 256, 373, 1186, 1187, 289, 1188, 1189, 365, - 1164, 1122, 383, 329, 1190, 1154, 387, 156, 250, 352, - 1191, 1194, 371, 1195, 1196, 1140, 1173, 1116, 1197, 331, - 257, 258, 919, 259, 260, 261, 1171, 933, 1165, 1123, - 1124, 943, 1125, 1126, 1127, 1203, 1204, 251, 921, 290, - 1214, 1199, 366, 939, 967, 384, 1117, 944, 1155, 295, - 1200, 1201, 309, 954, 1206, 287, 1216, 1166, 1207, 1174, - 1208, 1209, 332, 252, 1153, 302, 1215, 253, 313, 1224, - 262, 254, 1118, 1226, 1227, 1172, 1119, 1232, 330, 1128, - 1120, 922, 1238, 1167, 255, 263, 940, 1168, 264, 265, - 945, 1169, 266, 1121, 1129, 1239, 955, 1130, 1131, 1217, - 267, 1132, 1244, 268, 1170, 269, 270, 271, 303, 1133, - 272, 314, 1134, 273, 1135, 1136, 1137, 281, 1250, 1138, - 282, 283, 1139, 284, 298, 1251, 1146, 312, 1256, 1147, - 1148, 1257, 1149, 1144, 1258, 1145, 1259, 1271, 1280, 1245, - 1283, 1285, 1290, 1288, 1310, 1311, 1312, 1316, 1246, 1320, - 795, 809, 877, 811, 803, 654, 1106, 660, 1161, 1108, - 1158, 984, 1202, 1185, 1159, 1184, 1192, 702, 1110, 1109, - 1247, 671, 1157, 1279, 343, 1254, 1265, 1266, 1267, 1268, - 1275, 1112, 1111, 1278, 1113, 695, 1284, 1281, 1228, 1287, - 1317, 1114, 1289, 296, 679, 297, 310, 1318, 311, 1319, - 1322, 1323, 1231, 687, 1229, 1282, 673, 1183, 1230, 1182, - 1181, 699, 981, 1198, 1205, 1210, 1223, 718, 1308, 1286, - 1321, 1115, 962, 721, 0, 0, 0, 1164, 0, 1225, - 0, 0, 0, 1122, 0, 0, 0, 1154, 0, 1269, - 810, 0, 1214, 1173, 0, 0, 0, 1140, 0, 1116, - 0, 0, 0, 1171, 0, 1165, 0, 0, 1216, 0, - 0, 1123, 1124, 0, 1125, 1126, 1127, 0, 1215, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0, - 1155, 0, 0, 0, 1166, 0, 1174, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1153, 0, 0, 0, - 0, 1217, 1172, 0, 1118, 0, 0, 0, 1119, 0, - 1167, 1128, 1120, 0, 1168, 0, 0, 0, 1169, 0, - 0, 0, 0, 0, 0, 1121, 1129, 0, 0, 1130, - 1131, 1170, 0, 1132, 0, 0, 0, 0, 0, 0, - 0, 1133, 0, 0, 1134, 0, 1135, 1136, 1137, 0, - 0, 1138, 0, 0, 1139, 0, 0, 0, 1146, 0, - 0, 1147, 1148, 0, 1149, 1144, 0, 1145 + 401, 402, 403, 404, 646, 647, 648, 652, 649, 650, + 653, 405, 406, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 651, 655, 656, + 661, 657, 157, 658, 662, 229, 663, 659, 664, 665, + 668, 156, 669, 667, 666, 670, 672, 674, 675, 694, + 676, 237, 680, 681, 677, 678, 682, 683, 684, 685, + 686, 688, 689, 690, 691, 692, 693, 696, 925, 939, + 949, 700, 407, 701, 697, 704, 973, 705, 698, 707, + 706, 703, 710, 708, 927, 945, 950, 960, 408, 709, + 711, 714, 808, 712, 238, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 713, 715, + 716, 717, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 719, 720, 126, 722, 723, 724, 928, 946, 951, + 961, 409, 725, 726, 727, 239, 728, 240, 730, 729, + 739, 737, 740, 129, 130, 241, 242, 243, 244, 245, + 131, 738, 741, 742, 745, 132, 133, 134, 32, 751, + 752, 753, 755, 764, 246, 754, 756, 247, 140, 757, + 758, 802, 759, 760, 761, 248, 762, 763, 765, 766, + 767, 768, 770, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 771, 772, 807, 773, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 774, 126, 345, 777, 857, 861, 865, 776, 778, 869, + 779, 780, 784, 785, 786, 787, 788, 789, 149, 150, + 790, 129, 130, 791, 242, 243, 792, 245, 131, 873, + 793, 794, 796, 132, 133, 134, 797, 891, 895, 898, + 798, 902, 246, 804, 969, 247, 978, 805, 156, 982, + 806, 998, 999, 248, 1000, 1001, 1002, 1003, 1004, 1005, + 1006, 1007, 1009, 1019, 795, 1018, 1022, 1021, 1024, 1025, + 1027, 1028, 1031, 1030, 1102, 1045, 1034, 1044, 1048, 1047, + 1049, 1050, 1051, 1052, 1053, 1054, 1059, 1060, 1061, 1064, + 1065, 1066, 1073, 1075, 1083, 1086, 1091, 1090, 1093, 1094, + 1103, 1097, 1096, 1098, 1099, 1100, 149, 150, 1101, 1105, + 1112, 1114, 1104, 1106, 1107, 1108, 1109, 1110, 1111, 249, + 1113, 1115, 351, 1116, 1117, 370, 1172, 1198, 1127, 372, + 292, 256, 373, 1205, 1206, 289, 156, 1211, 365, 1176, + 1134, 383, 329, 1199, 1166, 387, 1200, 250, 352, 1201, + 1202, 371, 1215, 1203, 1152, 1185, 1128, 1207, 331, 257, + 258, 925, 259, 260, 261, 1183, 939, 1177, 1135, 1136, + 949, 1137, 1138, 1139, 1216, 1208, 251, 927, 290, 1226, + 1219, 366, 945, 973, 384, 1129, 950, 1167, 295, 1209, + 1212, 309, 960, 1213, 287, 1228, 1178, 1221, 1186, 1220, + 1218, 332, 252, 1165, 302, 1227, 253, 313, 1236, 262, + 254, 1130, 1238, 1239, 1184, 1131, 1244, 330, 1140, 1132, + 928, 1249, 1179, 255, 263, 946, 1180, 264, 265, 951, + 1181, 266, 1133, 1141, 1250, 961, 1142, 1143, 1229, 267, + 1144, 1251, 268, 1182, 269, 270, 271, 303, 1145, 272, + 314, 1146, 273, 1147, 1148, 1149, 281, 1256, 1150, 282, + 283, 1151, 284, 298, 1262, 1158, 312, 1263, 1159, 1160, + 1268, 1161, 1156, 1269, 1157, 1270, 1271, 1283, 1257, 1292, + 1295, 1297, 883, 1300, 1322, 1323, 1302, 1258, 1324, 1328, + 1332, 654, 809, 803, 660, 990, 811, 1173, 1120, 1118, + 1170, 1171, 1214, 1197, 1196, 702, 1122, 1204, 1121, 671, + 1259, 1266, 1169, 1291, 343, 1277, 1278, 1124, 1279, 1126, + 1123, 1280, 1287, 1290, 695, 1125, 1296, 1293, 1299, 1301, + 1329, 1334, 296, 673, 297, 310, 1335, 311, 1330, 1331, + 699, 1243, 1294, 679, 1217, 1241, 1193, 1195, 1242, 1240, + 1235, 1194, 987, 968, 687, 1210, 1298, 718, 1320, 1237, + 1333, 810, 721, 1127, 1222, 0, 0, 0, 0, 1176, + 0, 0, 0, 0, 0, 1134, 0, 0, 0, 1166, + 0, 1281, 0, 0, 1226, 1185, 0, 0, 0, 1152, + 0, 1128, 0, 0, 0, 1183, 0, 1177, 0, 0, + 1228, 0, 0, 1135, 1136, 0, 1137, 1138, 1139, 0, + 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1129, 0, 1167, 0, 0, 0, 1178, 0, 1186, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1165, 0, + 0, 0, 0, 1229, 1184, 0, 1130, 0, 0, 0, + 1131, 0, 1179, 1140, 1132, 0, 1180, 0, 0, 0, + 1181, 0, 0, 0, 0, 0, 0, 1133, 1141, 0, + 0, 1142, 1143, 1182, 0, 1144, 0, 0, 0, 0, + 0, 0, 0, 1145, 0, 0, 1146, 0, 1147, 1148, + 1149, 0, 0, 1150, 0, 0, 1151, 0, 0, 0, + 1158, 0, 0, 1159, 1160, 0, 1161, 1156, 0, 1157 }; const short @@ -5580,366 +5613,369 @@ namespace isc { namespace dhcp { { 71, 72, 73, 74, 75, 76, 16, 78, 79, 80, 81, 759, 79, 73, 73, 79, 728, 72, 73, 74, - 75, 76, 753, 78, 79, 1020, 81, 1020, 1020, 1020, - 73, 1020, 123, 78, 79, 5, 0, 7, 627, 9, - 130, 131, 73, 73, 210, 73, 73, 73, 13, 14, - 195, 76, 77, 78, 79, 80, 81, 130, 131, 73, - 72, 73, 74, 75, 76, 210, 78, 79, 3, 81, - 95, 96, 74, 8, 668, 95, 96, 73, 74, 75, - 76, 176, 177, 178, 179, 73, 680, 681, 682, 73, - 95, 96, 73, 73, 16, 17, 18, 19, 20, 3, - 7, 7, 121, 3, 8, 24, 73, 73, 8, 128, - 73, 73, 701, 7, 73, 7, 3, 75, 213, 210, - 210, 8, 73, 173, 174, 73, 3, 73, 73, 73, - 88, 8, 73, 153, 154, 73, 3, 95, 96, 73, - 10, 8, 73, 73, 7, 73, 75, 74, 75, 74, - 75, 156, 157, 158, 25, 26, 27, 76, 116, 78, - 79, 119, 7, 82, 83, 84, 95, 96, 140, 141, - 142, 11, 12, 95, 96, 15, 95, 96, 7, 3, - 7, 21, 22, 23, 8, 210, 115, 7, 3, 7, - 210, 6, 121, 122, 123, 124, 125, 126, 187, 7, - 7, 190, 191, 192, 193, 210, 7, 47, 48, 49, + 75, 76, 753, 78, 79, 1029, 81, 1029, 1029, 1029, + 73, 1029, 126, 78, 79, 5, 668, 7, 198, 9, + 98, 99, 73, 73, 627, 73, 73, 73, 680, 681, + 682, 133, 134, 213, 98, 99, 13, 14, 124, 73, + 72, 73, 74, 75, 76, 131, 78, 79, 0, 81, + 3, 179, 180, 181, 182, 8, 213, 73, 74, 75, + 76, 7, 3, 133, 134, 73, 3, 8, 7, 73, + 77, 8, 73, 73, 16, 17, 18, 19, 20, 7, + 3, 159, 160, 161, 24, 8, 73, 73, 216, 7, + 73, 73, 156, 157, 73, 3, 3, 7, 701, 213, + 8, 8, 73, 126, 127, 73, 129, 73, 73, 73, + 24, 213, 73, 7, 3, 73, 3, 6, 32, 73, + 10, 8, 73, 73, 7, 73, 3, 74, 75, 74, + 75, 8, 3, 3, 7, 213, 3, 8, 8, 79, + 3, 81, 82, 6, 6, 85, 86, 87, 3, 213, + 7, 11, 12, 8, 7, 15, 98, 99, 98, 99, + 7, 21, 22, 23, 7, 98, 99, 79, 80, 81, + 82, 83, 84, 190, 7, 3, 193, 194, 195, 196, + 8, 176, 177, 3, 98, 99, 98, 99, 8, 4, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 39, 40, 41, 3, - 210, 211, 212, 213, 8, 85, 86, 95, 96, 3, - 6, 3, 210, 3, 8, 95, 96, 1252, 8, 1252, - 1252, 1252, 102, 1252, 4, 8, 76, 107, 108, 109, - 110, 111, 112, 113, 3, 115, 24, 3, 3, 8, - 120, 210, 8, 8, 32, 95, 96, 3, 210, 129, - 6, 210, 132, 3, 3, 1026, 1008, 6, 8, 139, - 3, 149, 150, 151, 3, 1053, 3, 147, 148, 8, - 4, 8, 152, 3, 3, 155, 24, 6, 8, 159, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 8, 4, 4, 42, 43, 44, 45, 46, 4, - 180, 181, 182, 183, 184, 185, 3, 95, 96, 3, - 3, 8, 6, 4, 194, 8, 47, 48, 49, 50, - 51, 52, 210, 4, 3, 8, 4, 3, 76, 8, - 210, 75, 8, 4, 4, 3, 186, 3, 188, 189, - 8, 4, 8, 4, 75, 76, 90, 91, 92, 93, - 94, 95, 96, 4, 3, 143, 144, 145, 146, 8, - 210, 4, 4, 4, 95, 96, 133, 134, 135, 136, - 137, 138, 116, 3, 3, 119, 3, 3, 8, 8, - 4, 8, 8, 3, 434, 435, 117, 118, 8, 3, - 103, 104, 105, 106, 8, 506, 123, 124, 4, 126, - 4, 3, 513, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 525, 210, 4, 528, 513, 4, - 4, 4, 210, 4, 535, 525, 525, 4, 4, 4, - 525, 4, 4, 528, 545, 4, 4, 4, 8, 3, - 535, 4, 525, 4, 555, 3, 8, 4, 4, 560, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 152, + 153, 154, 3, 213, 214, 215, 216, 8, 88, 89, + 3, 3, 146, 147, 148, 149, 8, 8, 98, 99, + 1264, 4, 1264, 1264, 1264, 105, 1264, 25, 26, 27, + 110, 111, 112, 113, 114, 115, 116, 3, 118, 42, + 43, 44, 8, 123, 50, 51, 52, 53, 54, 55, + 4, 213, 132, 213, 3, 135, 3, 8, 3, 8, + 213, 8, 142, 8, 1035, 1017, 3, 3, 78, 6, + 150, 151, 78, 79, 1062, 155, 78, 3, 158, 213, + 6, 213, 162, 93, 94, 95, 96, 97, 98, 99, + 3, 8, 98, 99, 3, 8, 98, 99, 3, 8, + 4, 6, 4, 183, 184, 185, 186, 187, 188, 119, + 4, 8, 122, 3, 120, 121, 118, 197, 8, 143, + 144, 145, 124, 125, 126, 127, 128, 129, 4, 3, + 3, 24, 4, 213, 8, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 78, + 4, 4, 45, 46, 47, 48, 49, 4, 3, 3, + 3, 3, 91, 8, 8, 8, 8, 4, 79, 98, + 99, 136, 137, 138, 139, 140, 141, 3, 3, 8, + 4, 4, 8, 8, 434, 435, 79, 98, 99, 3, + 119, 4, 4, 122, 8, 506, 106, 107, 108, 109, + 4, 4, 513, 213, 4, 4, 4, 213, 4, 4, + 4, 213, 216, 4, 525, 4, 4, 528, 513, 4, + 4, 4, 4, 4, 535, 525, 525, 4, 4, 4, + 525, 4, 4, 528, 545, 4, 4, 4, 4, 4, + 535, 4, 525, 4, 555, 4, 3, 214, 4, 560, 545, 4, 4, 560, 525, 525, 560, 525, 525, 525, - 555, 513, 210, 4, 4, 560, 210, 4, 4, 580, - 555, 525, 4, 525, 4, 560, 528, 4, 4, 210, - 4, 4, 4, 535, 212, 580, 211, 211, 211, 525, - 211, 211, 528, 545, 213, 211, 211, 525, 212, 535, - 4, 525, 211, 555, 525, 525, 95, 96, 560, 545, - 212, 211, 211, 211, 4, 211, 4, 4, 525, 525, - 4, 213, 525, 525, 213, 213, 525, 213, 580, 213, - 4, 213, 4, 4, 525, 4, 211, 525, 4, 525, - 525, 525, 4, 4, 525, 4, 213, 525, 213, 213, + 555, 513, 4, 4, 4, 560, 4, 213, 4, 580, + 555, 525, 4, 525, 4, 560, 528, 4, 189, 4, + 191, 192, 4, 535, 213, 580, 4, 214, 4, 525, + 214, 214, 528, 545, 214, 214, 214, 525, 214, 535, + 215, 525, 213, 555, 525, 525, 98, 99, 560, 545, + 216, 4, 215, 4, 215, 214, 214, 4, 525, 525, + 213, 216, 525, 525, 216, 214, 525, 214, 580, 4, + 216, 216, 216, 4, 525, 4, 214, 525, 4, 525, + 525, 525, 4, 4, 525, 4, 216, 525, 216, 216, 4, 525, 4, 4, 525, 525, 4, 525, 4, 4, - 4, 528, 4, 528, 211, 4, 4, 4, 535, 4, - 535, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 4, 213, 4, 4, 213, 211, - 213, 180, 181, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 4, 213, 4, - 4, 4, 723, 4, 4, 726, 4, 4, 4, 4, - 4, 210, 4, 213, 211, 211, 4, 4, 4, 211, - 4, 726, 211, 213, 4, 4, 4, 211, 4, 4, - 211, 4, 4, 4, 4, 4, 4, 213, 759, 760, - 761, 4, 763, 213, 213, 4, 767, 211, 213, 4, - 211, 211, 4, 4, 759, 760, 761, 762, 763, 213, - 213, 4, 722, 4, 726, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 4, 4, - 211, 4, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 7, 210, 75, 7, 7, 7, 759, 760, 761, - 762, 763, 7, 5, 210, 87, 210, 89, 210, 5, - 5, 5, 175, 95, 96, 97, 98, 99, 100, 101, - 102, 5, 7, 210, 5, 107, 108, 109, 5, 5, - 210, 5, 7, 5, 116, 5, 7, 119, 120, 7, - 7, 7, 7, 7, 210, 127, 5, 7, 5, 5, - 5, 210, 5, 210, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 210, 210, 7, - 210, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 210, 75, 76, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 180, 181, - 210, 210, 95, 96, 210, 98, 99, 7, 101, 102, - 7, 210, 7, 7, 107, 108, 109, 7, 7, 7, - 7, 7, 114, 116, 7, 7, 119, 4, 210, 4, - 4, 4, 4, 4, 127, 4, 4, 3, 8, 6, - 3, 6, 6, 3, 6, 3, 3, 6, 210, 3, - 6, 6, 3, 6, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, - 210, 6, 3, 6, 6, 4, 4, 4, 4, 211, - 213, 211, 213, 211, 211, 4, 4, 180, 181, 211, - 1011, 211, 4, 1014, 4, 4, 1017, 4, 4, 1020, - 1017, 1011, 1011, 1017, 211, 211, 1011, 211, 211, 1014, - 1031, 1020, 1017, 1034, 211, 1020, 1037, 210, 1011, 1014, - 211, 4, 1017, 211, 211, 1020, 1031, 1020, 211, 1034, - 1011, 1011, 1053, 1011, 1011, 1011, 1031, 1058, 1031, 1020, - 1020, 1062, 1020, 1020, 1020, 4, 4, 1011, 1053, 1011, - 1071, 213, 1014, 1058, 1075, 1017, 1020, 1062, 1020, 1080, - 211, 211, 1083, 1068, 213, 1011, 1071, 1031, 4, 1031, - 211, 4, 1034, 1011, 1020, 1080, 1071, 1011, 1083, 213, - 1011, 1011, 1020, 6, 3, 1031, 1020, 4, 1034, 1020, - 1020, 1053, 210, 1031, 1011, 1011, 1058, 1031, 1011, 1011, - 1062, 1031, 1011, 1020, 1020, 210, 1068, 1020, 1020, 1071, - 1011, 1020, 210, 1011, 1031, 1011, 1011, 1011, 1080, 1020, - 1011, 1083, 1020, 1011, 1020, 1020, 1020, 1011, 8, 1020, - 1011, 1011, 1020, 1011, 1080, 8, 1020, 1083, 4, 1020, - 1020, 8, 1020, 1020, 3, 1020, 8, 4, 4, 210, - 4, 4, 7, 5, 4, 4, 4, 4, 210, 4, - 701, 723, 752, 726, 714, 506, 1005, 513, 1029, 1010, - 1023, 807, 1058, 1039, 1026, 1037, 1046, 563, 1013, 1011, - 210, 525, 1022, 1252, 77, 210, 210, 210, 210, 210, - 210, 1016, 1014, 210, 1017, 555, 211, 213, 1080, 210, - 213, 1019, 210, 1080, 535, 1080, 1083, 211, 1083, 211, - 210, 210, 1085, 545, 1082, 1258, 528, 1036, 1083, 1034, - 1032, 560, 777, 1053, 1062, 1068, 1072, 580, 1294, 1273, - 1314, 1252, 763, 584, -1, -1, -1, 1258, -1, 1075, - -1, -1, -1, 1252, -1, -1, -1, 1252, -1, 1209, - 725, -1, 1273, 1258, -1, -1, -1, 1252, -1, 1252, - -1, -1, -1, 1258, -1, 1258, -1, -1, 1273, -1, - -1, 1252, 1252, -1, 1252, 1252, 1252, -1, 1273, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1252, -1, - 1252, -1, -1, -1, 1258, -1, 1258, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1252, -1, -1, -1, - -1, 1273, 1258, -1, 1252, -1, -1, -1, 1252, -1, - 1258, 1252, 1252, -1, 1258, -1, -1, -1, 1258, -1, - -1, -1, -1, -1, -1, 1252, 1252, -1, -1, 1252, - 1252, 1258, -1, 1252, -1, -1, -1, -1, -1, -1, - -1, 1252, -1, -1, 1252, -1, 1252, 1252, 1252, -1, - -1, 1252, -1, -1, 1252, -1, -1, -1, 1252, -1, - -1, 1252, 1252, -1, 1252, 1252, -1, 1252 + 4, 528, 4, 528, 4, 214, 4, 4, 535, 4, + 535, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 4, 4, 4, 4, 216, 216, + 4, 183, 184, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 216, 4, 216, + 4, 216, 723, 214, 4, 726, 4, 214, 4, 4, + 4, 213, 4, 216, 214, 4, 4, 4, 214, 216, + 4, 726, 4, 4, 214, 214, 4, 4, 4, 4, + 4, 4, 4, 214, 4, 4, 4, 4, 759, 760, + 761, 4, 763, 4, 216, 4, 767, 4, 216, 4, + 214, 216, 4, 214, 759, 760, 761, 762, 763, 214, + 4, 4, 722, 216, 726, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 216, 4, + 4, 4, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 4, 214, 78, 4, 7, 213, 759, 760, 761, + 762, 763, 7, 7, 7, 90, 7, 92, 213, 5, + 5, 213, 5, 98, 99, 100, 101, 102, 103, 104, + 105, 213, 5, 5, 213, 110, 111, 112, 7, 5, + 5, 5, 5, 213, 119, 7, 5, 122, 123, 5, + 7, 178, 7, 7, 7, 130, 7, 7, 213, 5, + 7, 5, 5, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 5, 213, 5, 213, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 213, 78, 79, 7, 7, 7, 7, 213, 213, 7, + 213, 213, 213, 213, 213, 213, 213, 213, 183, 184, + 213, 98, 99, 213, 101, 102, 213, 104, 105, 7, + 213, 213, 213, 110, 111, 112, 213, 117, 7, 7, + 213, 7, 119, 213, 7, 122, 7, 213, 213, 7, + 213, 4, 4, 130, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 3, 701, 6, 3, 6, 6, 3, + 6, 3, 3, 6, 214, 3, 6, 6, 3, 6, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 213, 3, 6, 6, 3, + 216, 6, 8, 4, 4, 4, 183, 184, 4, 216, + 4, 4, 214, 214, 214, 214, 214, 214, 214, 1020, + 214, 4, 1023, 4, 4, 1026, 4, 214, 1029, 1026, + 1020, 1020, 1026, 4, 4, 1020, 213, 216, 1023, 1040, + 1029, 1026, 1043, 214, 1029, 1046, 214, 1020, 1023, 214, + 214, 1026, 4, 214, 1029, 1040, 1029, 214, 1043, 1020, + 1020, 1062, 1020, 1020, 1020, 1040, 1067, 1040, 1029, 1029, + 1071, 1029, 1029, 1029, 4, 214, 1020, 1062, 1020, 1080, + 4, 1023, 1067, 1084, 1026, 1029, 1071, 1029, 1089, 214, + 214, 1092, 1077, 214, 1020, 1080, 1040, 4, 1040, 214, + 216, 1043, 1020, 1029, 1089, 1080, 1020, 1092, 216, 1020, + 1020, 1029, 6, 3, 1040, 1029, 4, 1043, 1029, 1029, + 1062, 213, 1040, 1020, 1020, 1067, 1040, 1020, 1020, 1071, + 1040, 1020, 1029, 1029, 213, 1077, 1029, 1029, 1080, 1020, + 1029, 213, 1020, 1040, 1020, 1020, 1020, 1089, 1029, 1020, + 1092, 1029, 1020, 1029, 1029, 1029, 1020, 213, 1029, 1020, + 1020, 1029, 1020, 1089, 8, 1029, 1092, 8, 1029, 1029, + 4, 1029, 1029, 8, 1029, 3, 8, 4, 213, 4, + 4, 4, 752, 5, 4, 4, 7, 213, 4, 4, + 4, 506, 723, 714, 513, 807, 726, 1038, 1019, 1014, + 1032, 1035, 1067, 1048, 1046, 563, 1022, 1055, 1020, 525, + 213, 213, 1031, 1264, 77, 213, 213, 1025, 213, 1028, + 1023, 213, 213, 213, 555, 1026, 214, 216, 213, 213, + 216, 213, 1089, 528, 1089, 1092, 213, 1092, 214, 214, + 560, 1094, 1270, 535, 1071, 1091, 1041, 1045, 1092, 1089, + 1081, 1043, 777, 763, 545, 1062, 1285, 580, 1306, 1084, + 1326, 725, 584, 1264, 1077, -1, -1, -1, -1, 1270, + -1, -1, -1, -1, -1, 1264, -1, -1, -1, 1264, + -1, 1221, -1, -1, 1285, 1270, -1, -1, -1, 1264, + -1, 1264, -1, -1, -1, 1270, -1, 1270, -1, -1, + 1285, -1, -1, 1264, 1264, -1, 1264, 1264, 1264, -1, + 1285, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1264, -1, 1264, -1, -1, -1, 1270, -1, 1270, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1264, -1, + -1, -1, -1, 1285, 1270, -1, 1264, -1, -1, -1, + 1264, -1, 1270, 1264, 1264, -1, 1270, -1, -1, -1, + 1270, -1, -1, -1, -1, -1, -1, 1264, 1264, -1, + -1, 1264, 1264, 1270, -1, 1264, -1, -1, -1, -1, + -1, -1, -1, 1264, -1, -1, 1264, -1, 1264, 1264, + 1264, -1, -1, 1264, -1, -1, 1264, -1, -1, -1, + 1264, -1, -1, 1264, 1264, -1, 1264, 1264, -1, 1264 }; const short Dhcp6Parser::yystos_[] = { - 0, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 0, 5, 7, 9, 210, 211, 212, 213, 230, 231, - 232, 237, 7, 246, 7, 251, 7, 298, 7, 407, - 7, 487, 7, 503, 7, 520, 7, 439, 7, 445, - 7, 469, 7, 383, 7, 589, 7, 620, 238, 233, - 247, 252, 299, 408, 488, 504, 521, 440, 446, 470, - 384, 590, 621, 230, 239, 240, 210, 235, 236, 10, - 248, 250, 11, 12, 15, 21, 22, 23, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 85, 86, 95, - 96, 102, 107, 108, 109, 110, 111, 112, 113, 115, - 120, 129, 132, 139, 147, 148, 152, 155, 159, 180, - 181, 182, 183, 184, 185, 194, 210, 245, 253, 254, - 255, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, - 279, 281, 282, 283, 285, 287, 288, 289, 290, 292, - 293, 294, 295, 296, 308, 310, 312, 350, 356, 362, - 368, 370, 377, 391, 401, 421, 422, 423, 424, 429, - 437, 463, 493, 495, 514, 544, 556, 568, 569, 577, - 587, 618, 627, 651, 16, 17, 18, 19, 20, 245, - 300, 301, 302, 304, 305, 306, 307, 493, 495, 87, - 89, 97, 98, 99, 100, 101, 116, 119, 127, 245, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 271, 272, 273, 274, 277, 279, 281, - 282, 283, 285, 287, 409, 410, 411, 413, 415, 417, - 419, 421, 422, 423, 424, 427, 428, 463, 481, 493, - 495, 497, 514, 539, 88, 245, 417, 419, 463, 489, - 490, 491, 493, 495, 90, 91, 92, 93, 94, 245, - 417, 419, 463, 493, 495, 505, 506, 507, 509, 510, - 512, 513, 115, 121, 122, 123, 124, 125, 126, 245, - 463, 493, 495, 522, 523, 524, 525, 527, 529, 531, - 533, 535, 537, 437, 24, 76, 78, 79, 82, 83, - 84, 245, 330, 447, 448, 449, 450, 451, 452, 453, - 455, 457, 459, 460, 462, 493, 495, 77, 80, 81, - 245, 330, 451, 457, 471, 472, 473, 474, 475, 477, - 478, 479, 480, 493, 495, 130, 131, 245, 385, 386, - 387, 389, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 180, 181, 245, 493, 495, - 591, 592, 593, 594, 596, 598, 599, 601, 602, 603, - 606, 608, 609, 610, 612, 614, 616, 13, 14, 622, - 623, 624, 626, 6, 3, 4, 8, 3, 249, 3, - 8, 256, 619, 297, 309, 311, 313, 4, 4, 4, + 0, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 0, 5, 7, 9, 213, 214, 215, 216, 233, 234, + 235, 240, 7, 249, 7, 254, 7, 301, 7, 413, + 7, 493, 7, 509, 7, 526, 7, 445, 7, 451, + 7, 475, 7, 389, 7, 595, 7, 626, 241, 236, + 250, 255, 302, 414, 494, 510, 527, 446, 452, 476, + 390, 596, 627, 233, 242, 243, 213, 238, 239, 10, + 251, 253, 11, 12, 15, 21, 22, 23, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 88, 89, 98, + 99, 105, 110, 111, 112, 113, 114, 115, 116, 118, + 123, 132, 135, 142, 150, 151, 155, 158, 162, 183, + 184, 185, 186, 187, 188, 197, 213, 248, 256, 257, + 258, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 280, + 282, 284, 285, 286, 288, 290, 291, 292, 293, 295, + 296, 297, 298, 299, 311, 313, 315, 356, 362, 368, + 374, 376, 383, 397, 407, 427, 428, 429, 430, 435, + 443, 469, 499, 501, 520, 550, 562, 574, 575, 583, + 593, 624, 633, 657, 16, 17, 18, 19, 20, 248, + 303, 304, 305, 307, 308, 309, 310, 499, 501, 90, + 92, 100, 101, 102, 103, 104, 119, 122, 130, 248, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 274, 275, 276, 277, 280, 282, 284, + 285, 286, 288, 290, 415, 416, 417, 419, 421, 423, + 425, 427, 428, 429, 430, 433, 434, 469, 487, 499, + 501, 503, 520, 545, 91, 248, 423, 425, 469, 495, + 496, 497, 499, 501, 93, 94, 95, 96, 97, 248, + 423, 425, 469, 499, 501, 511, 512, 513, 515, 516, + 518, 519, 118, 124, 125, 126, 127, 128, 129, 248, + 469, 499, 501, 528, 529, 530, 531, 533, 535, 537, + 539, 541, 543, 443, 24, 79, 81, 82, 85, 86, + 87, 248, 333, 453, 454, 455, 456, 457, 458, 459, + 461, 463, 465, 466, 468, 499, 501, 80, 83, 84, + 248, 333, 457, 463, 477, 478, 479, 480, 481, 483, + 484, 485, 486, 499, 501, 133, 134, 248, 391, 392, + 393, 395, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 183, 184, 248, 499, 501, + 597, 598, 599, 600, 602, 604, 605, 607, 608, 609, + 612, 614, 615, 616, 618, 620, 622, 13, 14, 628, + 629, 630, 632, 6, 3, 4, 8, 3, 252, 3, + 8, 259, 625, 300, 312, 314, 316, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 291, 4, 4, 4, 4, 4, 275, 278, 280, - 4, 4, 4, 402, 438, 464, 4, 430, 494, 496, - 425, 4, 4, 4, 357, 369, 363, 351, 545, 515, - 378, 392, 557, 4, 371, 570, 578, 588, 284, 286, - 4, 4, 4, 628, 652, 4, 3, 8, 303, 4, - 4, 4, 4, 3, 8, 482, 498, 412, 414, 416, - 4, 4, 420, 418, 540, 3, 8, 492, 3, 8, - 508, 4, 511, 4, 4, 3, 8, 538, 526, 528, - 530, 532, 534, 536, 8, 3, 8, 454, 331, 4, - 458, 456, 461, 4, 8, 3, 476, 4, 4, 8, - 3, 388, 390, 3, 8, 4, 595, 597, 4, 600, - 4, 4, 604, 607, 4, 4, 611, 613, 615, 617, - 3, 8, 625, 4, 3, 8, 230, 230, 210, 4, - 4, 4, 4, 4, 4, 4, 211, 211, 211, 211, - 211, 211, 211, 211, 213, 212, 212, 212, 211, 211, - 4, 211, 211, 213, 213, 213, 4, 4, 4, 213, - 213, 213, 4, 4, 4, 211, 4, 4, 4, 4, - 213, 213, 213, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 211, 4, 4, 4, 4, 4, 4, 213, - 213, 213, 4, 4, 254, 4, 213, 213, 211, 211, - 301, 4, 4, 4, 4, 4, 211, 213, 4, 4, - 4, 410, 4, 490, 4, 211, 4, 211, 211, 506, - 4, 4, 4, 4, 4, 4, 4, 524, 4, 4, - 211, 4, 4, 4, 213, 449, 4, 213, 213, 473, - 4, 4, 386, 213, 4, 4, 211, 4, 211, 211, - 4, 4, 213, 213, 4, 4, 4, 4, 592, 4, - 211, 623, 4, 7, 210, 7, 7, 7, 7, 5, - 210, 176, 177, 178, 179, 213, 276, 210, 210, 5, - 5, 5, 5, 232, 234, 210, 103, 104, 105, 106, - 426, 5, 5, 5, 7, 5, 5, 5, 7, 7, - 7, 7, 7, 7, 210, 210, 5, 7, 5, 241, - 5, 5, 210, 210, 210, 241, 210, 7, 210, 210, - 210, 241, 241, 241, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 234, 210, 210, 210, 173, - 174, 605, 175, 276, 210, 210, 210, 5, 230, 253, - 622, 300, 24, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 42, 43, 44, 45, 46, 245, - 318, 319, 320, 323, 325, 327, 329, 330, 332, 333, - 334, 335, 336, 337, 340, 341, 342, 344, 346, 348, - 318, 7, 314, 315, 316, 7, 403, 404, 405, 7, - 441, 442, 443, 7, 465, 466, 467, 7, 431, 432, - 433, 123, 210, 358, 359, 360, 361, 239, 124, 126, - 360, 364, 365, 366, 367, 114, 352, 353, 354, 7, - 546, 547, 7, 516, 517, 518, 7, 379, 380, 381, - 133, 134, 135, 136, 137, 138, 393, 394, 395, 396, - 397, 398, 399, 400, 24, 143, 144, 145, 146, 245, - 332, 493, 495, 558, 559, 560, 563, 564, 566, 567, - 149, 150, 151, 245, 372, 373, 374, 375, 376, 493, - 495, 153, 154, 245, 493, 495, 571, 572, 573, 575, - 156, 157, 158, 210, 493, 495, 579, 580, 581, 582, - 584, 585, 591, 7, 629, 630, 195, 245, 653, 654, - 655, 242, 7, 483, 484, 485, 7, 499, 500, 501, - 128, 525, 541, 542, 314, 8, 8, 8, 321, 324, - 326, 328, 4, 4, 4, 4, 4, 4, 4, 338, - 4, 343, 345, 347, 349, 3, 8, 8, 317, 6, - 3, 406, 6, 3, 444, 6, 3, 468, 6, 3, - 434, 6, 3, 3, 6, 6, 3, 6, 355, 3, - 8, 548, 3, 6, 519, 6, 3, 382, 6, 3, - 4, 4, 4, 4, 4, 4, 3, 8, 561, 565, - 4, 4, 4, 3, 8, 4, 4, 4, 3, 8, - 574, 576, 3, 8, 4, 583, 4, 586, 3, 8, - 8, 631, 3, 6, 4, 3, 8, 210, 243, 244, - 486, 6, 3, 502, 6, 3, 543, 8, 6, 4, - 4, 4, 4, 211, 213, 211, 213, 211, 211, 211, - 4, 211, 4, 4, 4, 4, 319, 318, 316, 409, - 405, 447, 443, 471, 467, 245, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 271, - 272, 273, 274, 277, 279, 281, 282, 283, 285, 287, - 330, 401, 413, 415, 417, 419, 421, 422, 423, 424, - 428, 435, 436, 463, 493, 495, 539, 433, 359, 365, - 4, 353, 117, 118, 245, 257, 258, 259, 260, 261, - 262, 330, 463, 493, 495, 549, 550, 551, 552, 553, - 555, 547, 522, 518, 385, 381, 211, 211, 211, 211, - 211, 211, 394, 4, 4, 211, 211, 211, 559, 213, - 211, 211, 373, 4, 4, 572, 213, 4, 211, 4, - 580, 186, 188, 189, 245, 330, 493, 495, 632, 633, - 634, 635, 637, 630, 213, 654, 6, 3, 489, 485, - 505, 501, 4, 25, 26, 27, 322, 210, 210, 210, - 39, 40, 41, 339, 210, 210, 210, 210, 8, 8, - 8, 8, 3, 8, 210, 554, 4, 8, 3, 8, - 8, 140, 141, 142, 562, 210, 210, 210, 210, 230, - 638, 4, 636, 3, 8, 210, 8, 8, 210, 436, - 4, 213, 551, 4, 211, 4, 633, 210, 5, 210, - 7, 639, 640, 641, 3, 6, 187, 190, 191, 192, - 193, 642, 643, 644, 646, 647, 648, 649, 640, 645, - 4, 4, 4, 650, 3, 8, 4, 213, 211, 211, - 4, 643, 210, 210 + 4, 294, 4, 4, 4, 4, 4, 278, 281, 283, + 4, 4, 4, 408, 444, 470, 4, 436, 500, 502, + 431, 4, 4, 4, 363, 375, 369, 357, 551, 521, + 384, 398, 563, 4, 377, 576, 584, 594, 287, 289, + 4, 4, 4, 634, 658, 4, 3, 8, 306, 4, + 4, 4, 4, 3, 8, 488, 504, 418, 420, 422, + 4, 4, 426, 424, 546, 3, 8, 498, 3, 8, + 514, 4, 517, 4, 4, 3, 8, 544, 532, 534, + 536, 538, 540, 542, 8, 3, 8, 460, 334, 4, + 464, 462, 467, 4, 8, 3, 482, 4, 4, 8, + 3, 394, 396, 3, 8, 4, 601, 603, 4, 606, + 4, 4, 610, 613, 4, 4, 617, 619, 621, 623, + 3, 8, 631, 4, 3, 8, 233, 233, 213, 4, + 4, 4, 4, 4, 4, 4, 214, 214, 214, 214, + 214, 214, 214, 214, 216, 215, 215, 215, 214, 214, + 4, 214, 214, 216, 216, 216, 4, 4, 4, 216, + 216, 216, 4, 4, 4, 214, 4, 4, 4, 4, + 216, 216, 216, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 214, 4, 4, 4, 4, 4, 4, 216, + 216, 216, 4, 4, 257, 4, 216, 216, 214, 214, + 304, 4, 4, 4, 4, 4, 214, 216, 4, 4, + 4, 416, 4, 496, 4, 214, 4, 214, 214, 512, + 4, 4, 4, 4, 4, 4, 4, 530, 4, 4, + 214, 4, 4, 4, 216, 455, 4, 216, 216, 479, + 4, 4, 392, 216, 4, 4, 214, 4, 214, 214, + 4, 4, 216, 216, 4, 4, 4, 4, 598, 4, + 214, 629, 4, 7, 213, 7, 7, 7, 7, 5, + 213, 179, 180, 181, 182, 216, 279, 213, 213, 5, + 5, 5, 5, 235, 237, 213, 106, 107, 108, 109, + 432, 5, 5, 5, 7, 5, 5, 5, 7, 7, + 7, 7, 7, 7, 213, 213, 5, 7, 5, 244, + 5, 5, 213, 213, 213, 244, 213, 7, 213, 213, + 213, 244, 244, 244, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 237, 213, 213, 213, 176, + 177, 611, 178, 279, 213, 213, 213, 5, 233, 256, + 628, 303, 24, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 45, 46, 47, + 48, 49, 248, 321, 322, 323, 326, 328, 330, 332, + 333, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 346, 347, 348, 350, 352, 354, 321, 7, 317, 318, + 319, 7, 409, 410, 411, 7, 447, 448, 449, 7, + 471, 472, 473, 7, 437, 438, 439, 126, 213, 364, + 365, 366, 367, 242, 127, 129, 366, 370, 371, 372, + 373, 117, 358, 359, 360, 7, 552, 553, 7, 522, + 523, 524, 7, 385, 386, 387, 136, 137, 138, 139, + 140, 141, 399, 400, 401, 402, 403, 404, 405, 406, + 24, 146, 147, 148, 149, 248, 335, 499, 501, 564, + 565, 566, 569, 570, 572, 573, 152, 153, 154, 248, + 378, 379, 380, 381, 382, 499, 501, 156, 157, 248, + 499, 501, 577, 578, 579, 581, 159, 160, 161, 213, + 499, 501, 585, 586, 587, 588, 590, 591, 597, 7, + 635, 636, 198, 248, 659, 660, 661, 245, 7, 489, + 490, 491, 7, 505, 506, 507, 131, 531, 547, 548, + 317, 8, 8, 8, 324, 327, 329, 331, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 344, 4, + 349, 351, 353, 355, 3, 8, 8, 320, 6, 3, + 412, 6, 3, 450, 6, 3, 474, 6, 3, 440, + 6, 3, 3, 6, 6, 3, 6, 361, 3, 8, + 554, 3, 6, 525, 6, 3, 388, 6, 3, 4, + 4, 4, 4, 4, 4, 3, 8, 567, 571, 4, + 4, 4, 3, 8, 4, 4, 4, 3, 8, 580, + 582, 3, 8, 4, 589, 4, 592, 3, 8, 8, + 637, 3, 6, 4, 3, 8, 213, 246, 247, 492, + 6, 3, 508, 6, 3, 549, 8, 6, 4, 4, + 4, 4, 214, 216, 214, 216, 214, 214, 214, 214, + 214, 214, 4, 214, 4, 4, 4, 4, 322, 321, + 319, 415, 411, 453, 449, 477, 473, 248, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 274, 275, 276, 277, 280, 282, 284, 285, 286, + 288, 290, 333, 407, 419, 421, 423, 425, 427, 428, + 429, 430, 434, 441, 442, 469, 499, 501, 545, 439, + 365, 371, 4, 359, 120, 121, 248, 260, 261, 262, + 263, 264, 265, 333, 469, 499, 501, 555, 556, 557, + 558, 559, 561, 553, 528, 524, 391, 387, 214, 214, + 214, 214, 214, 214, 400, 4, 4, 214, 214, 214, + 565, 216, 214, 214, 379, 4, 4, 578, 216, 4, + 214, 4, 586, 189, 191, 192, 248, 333, 499, 501, + 638, 639, 640, 641, 643, 636, 216, 660, 6, 3, + 495, 491, 511, 507, 4, 25, 26, 27, 325, 213, + 213, 213, 42, 43, 44, 345, 213, 213, 213, 213, + 8, 8, 8, 8, 3, 8, 213, 560, 4, 8, + 3, 8, 8, 143, 144, 145, 568, 213, 213, 213, + 213, 233, 644, 4, 642, 3, 8, 213, 8, 8, + 213, 442, 4, 216, 557, 4, 214, 4, 639, 213, + 5, 213, 7, 645, 646, 647, 3, 6, 190, 193, + 194, 195, 196, 648, 649, 650, 652, 653, 654, 655, + 646, 651, 4, 4, 4, 656, 3, 8, 4, 216, + 214, 214, 4, 649, 213, 213 }; const short Dhcp6Parser::yyr1_[] = { - 0, 214, 216, 215, 217, 215, 218, 215, 219, 215, - 220, 215, 221, 215, 222, 215, 223, 215, 224, 215, - 225, 215, 226, 215, 227, 215, 228, 215, 229, 215, - 230, 230, 230, 230, 230, 230, 230, 231, 233, 232, - 234, 235, 235, 236, 236, 236, 238, 237, 239, 239, - 240, 240, 240, 242, 241, 243, 243, 244, 244, 244, - 245, 247, 246, 249, 248, 248, 250, 252, 251, 253, - 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 256, 255, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 275, 274, 276, 276, - 276, 276, 276, 278, 277, 280, 279, 281, 282, 284, - 283, 286, 285, 287, 288, 289, 291, 290, 292, 293, - 294, 295, 297, 296, 299, 298, 300, 300, 300, 301, - 301, 301, 301, 301, 301, 301, 301, 303, 302, 304, - 305, 306, 307, 309, 308, 311, 310, 313, 312, 314, - 314, 315, 315, 315, 317, 316, 318, 318, 318, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 321, 320, - 322, 322, 322, 324, 323, 326, 325, 328, 327, 329, - 331, 330, 332, 333, 334, 335, 336, 338, 337, 339, - 339, 339, 340, 341, 343, 342, 345, 344, 347, 346, - 349, 348, 351, 350, 352, 352, 352, 353, 355, 354, - 357, 356, 358, 358, 358, 359, 359, 360, 361, 363, - 362, 364, 364, 364, 365, 365, 365, 366, 367, 369, - 368, 371, 370, 372, 372, 372, 373, 373, 373, 373, - 373, 373, 374, 375, 376, 378, 377, 379, 379, 380, - 380, 380, 382, 381, 384, 383, 385, 385, 385, 385, - 386, 386, 388, 387, 390, 389, 392, 391, 393, 393, - 393, 394, 394, 394, 394, 394, 394, 395, 396, 397, - 398, 399, 400, 402, 401, 403, 403, 404, 404, 404, - 406, 405, 408, 407, 409, 409, 409, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 412, 411, 414, 413, 416, 415, 418, 417, 420, 419, - 421, 422, 423, 425, 424, 426, 426, 426, 426, 427, - 428, 430, 429, 431, 431, 432, 432, 432, 434, 433, - 435, 435, 435, 436, 436, 436, 436, 436, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, - 436, 436, 436, 438, 437, 440, 439, 441, 441, 442, - 442, 442, 444, 443, 446, 445, 447, 447, 448, 448, - 448, 449, 449, 449, 449, 449, 449, 449, 449, 449, - 449, 450, 451, 452, 454, 453, 456, 455, 458, 457, - 459, 461, 460, 462, 464, 463, 465, 465, 466, 466, - 466, 468, 467, 470, 469, 471, 471, 472, 472, 472, - 473, 473, 473, 473, 473, 473, 473, 473, 473, 474, - 476, 475, 477, 478, 479, 480, 482, 481, 483, 483, - 484, 484, 484, 486, 485, 488, 487, 489, 489, 489, - 490, 490, 490, 490, 490, 490, 490, 492, 491, 494, - 493, 496, 495, 498, 497, 499, 499, 500, 500, 500, - 502, 501, 504, 503, 505, 505, 505, 506, 506, 506, - 506, 506, 506, 506, 506, 506, 506, 506, 508, 507, - 509, 511, 510, 512, 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, 526, 525, 528, 527, 530, 529, 532, 531, - 534, 533, 536, 535, 538, 537, 540, 539, 541, 541, - 543, 542, 545, 544, 546, 546, 546, 548, 547, 549, - 549, 550, 550, 550, 551, 551, 551, 551, 551, 551, - 551, 551, 551, 551, 551, 551, 551, 552, 554, 553, - 555, 557, 556, 558, 558, 558, 559, 559, 559, 559, - 559, 559, 559, 559, 559, 561, 560, 562, 562, 562, - 563, 565, 564, 566, 567, 568, 570, 569, 571, 571, - 571, 572, 572, 572, 572, 572, 574, 573, 576, 575, - 578, 577, 579, 579, 579, 580, 580, 580, 580, 580, - 580, 581, 583, 582, 584, 586, 585, 588, 587, 590, - 589, 591, 591, 591, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 593, 595, 594, 597, 596, 598, 600, 599, - 601, 602, 604, 603, 605, 605, 607, 606, 608, 609, - 611, 610, 613, 612, 615, 614, 617, 616, 619, 618, - 621, 620, 622, 622, 622, 623, 623, 625, 624, 626, - 628, 627, 629, 629, 629, 631, 630, 632, 632, 632, - 633, 633, 633, 633, 633, 633, 633, 634, 636, 635, - 638, 637, 639, 639, 639, 641, 640, 642, 642, 642, - 643, 643, 643, 643, 643, 645, 644, 646, 647, 648, - 650, 649, 652, 651, 653, 653, 653, 654, 654, 655 + 0, 217, 219, 218, 220, 218, 221, 218, 222, 218, + 223, 218, 224, 218, 225, 218, 226, 218, 227, 218, + 228, 218, 229, 218, 230, 218, 231, 218, 232, 218, + 233, 233, 233, 233, 233, 233, 233, 234, 236, 235, + 237, 238, 238, 239, 239, 239, 241, 240, 242, 242, + 243, 243, 243, 245, 244, 246, 246, 247, 247, 247, + 248, 250, 249, 252, 251, 251, 253, 255, 254, 256, + 256, 256, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 259, 258, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 278, 277, 279, 279, + 279, 279, 279, 281, 280, 283, 282, 284, 285, 287, + 286, 289, 288, 290, 291, 292, 294, 293, 295, 296, + 297, 298, 300, 299, 302, 301, 303, 303, 303, 304, + 304, 304, 304, 304, 304, 304, 304, 306, 305, 307, + 308, 309, 310, 312, 311, 314, 313, 316, 315, 317, + 317, 318, 318, 318, 320, 319, 321, 321, 321, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 324, 323, 325, 325, 325, 327, 326, 329, 328, + 331, 330, 332, 334, 333, 335, 336, 337, 338, 339, + 340, 341, 342, 344, 343, 345, 345, 345, 346, 347, + 349, 348, 351, 350, 353, 352, 355, 354, 357, 356, + 358, 358, 358, 359, 361, 360, 363, 362, 364, 364, + 364, 365, 365, 366, 367, 369, 368, 370, 370, 370, + 371, 371, 371, 372, 373, 375, 374, 377, 376, 378, + 378, 378, 379, 379, 379, 379, 379, 379, 380, 381, + 382, 384, 383, 385, 385, 386, 386, 386, 388, 387, + 390, 389, 391, 391, 391, 391, 392, 392, 394, 393, + 396, 395, 398, 397, 399, 399, 399, 400, 400, 400, + 400, 400, 400, 401, 402, 403, 404, 405, 406, 408, + 407, 409, 409, 410, 410, 410, 412, 411, 414, 413, + 415, 415, 415, 416, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 416, 416, 418, 417, 420, 419, + 422, 421, 424, 423, 426, 425, 427, 428, 429, 431, + 430, 432, 432, 432, 432, 433, 434, 436, 435, 437, + 437, 438, 438, 438, 440, 439, 441, 441, 441, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 444, + 443, 446, 445, 447, 447, 448, 448, 448, 450, 449, + 452, 451, 453, 453, 454, 454, 454, 455, 455, 455, + 455, 455, 455, 455, 455, 455, 455, 456, 457, 458, + 460, 459, 462, 461, 464, 463, 465, 467, 466, 468, + 470, 469, 471, 471, 472, 472, 472, 474, 473, 476, + 475, 477, 477, 478, 478, 478, 479, 479, 479, 479, + 479, 479, 479, 479, 479, 480, 482, 481, 483, 484, + 485, 486, 488, 487, 489, 489, 490, 490, 490, 492, + 491, 494, 493, 495, 495, 495, 496, 496, 496, 496, + 496, 496, 496, 498, 497, 500, 499, 502, 501, 504, + 503, 505, 505, 506, 506, 506, 508, 507, 510, 509, + 511, 511, 511, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 514, 513, 515, 517, 516, 518, + 519, 521, 520, 522, 522, 523, 523, 523, 525, 524, + 527, 526, 528, 528, 529, 529, 529, 530, 530, 530, + 530, 530, 530, 530, 530, 530, 530, 530, 532, 531, + 534, 533, 536, 535, 538, 537, 540, 539, 542, 541, + 544, 543, 546, 545, 547, 547, 549, 548, 551, 550, + 552, 552, 552, 554, 553, 555, 555, 556, 556, 556, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 558, 560, 559, 561, 563, 562, 564, + 564, 564, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 567, 566, 568, 568, 568, 569, 571, 570, 572, + 573, 574, 576, 575, 577, 577, 577, 578, 578, 578, + 578, 578, 580, 579, 582, 581, 584, 583, 585, 585, + 585, 586, 586, 586, 586, 586, 586, 587, 589, 588, + 590, 592, 591, 594, 593, 596, 595, 597, 597, 597, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 599, 601, + 600, 603, 602, 604, 606, 605, 607, 608, 610, 609, + 611, 611, 613, 612, 614, 615, 617, 616, 619, 618, + 621, 620, 623, 622, 625, 624, 627, 626, 628, 628, + 628, 629, 629, 631, 630, 632, 634, 633, 635, 635, + 635, 637, 636, 638, 638, 638, 639, 639, 639, 639, + 639, 639, 639, 640, 642, 641, 644, 643, 645, 645, + 645, 647, 646, 648, 648, 648, 649, 649, 649, 649, + 649, 651, 650, 652, 653, 654, 656, 655, 658, 657, + 659, 659, 659, 660, 660, 661 }; const signed char @@ -5968,69 +6004,70 @@ namespace isc { namespace dhcp { 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, 0, 4, - 1, 1, 1, 0, 4, 0, 4, 0, 4, 3, - 0, 4, 3, 3, 3, 3, 3, 0, 4, 1, - 1, 1, 3, 3, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 6, 1, 3, 2, 1, 0, 4, - 0, 6, 1, 3, 2, 1, 1, 1, 1, 0, - 6, 1, 3, 2, 1, 1, 1, 1, 1, 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, - 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, - 3, 3, 3, 0, 4, 1, 1, 1, 1, 3, + 1, 0, 4, 1, 1, 1, 0, 4, 0, 4, + 0, 4, 3, 0, 4, 3, 3, 3, 3, 3, + 3, 3, 3, 0, 4, 1, 1, 1, 3, 3, + 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, + 1, 3, 2, 1, 0, 4, 0, 6, 1, 3, + 2, 1, 1, 1, 1, 0, 6, 1, 3, 2, + 1, 1, 1, 1, 1, 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, 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, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 4, 3, 3, 3, 0, + 4, 1, 1, 1, 1, 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, - 0, 4, 1, 1, 3, 3, 0, 6, 0, 1, - 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 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, 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, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 6, 1, 1, - 0, 4, 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, 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, 0, 4, 1, 1, + 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, + 4, 0, 4, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 4, 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, 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, 0, 4, - 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, 1, 3, - 2, 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, + 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 6, 1, 1, 0, 4, 0, 6, + 1, 3, 2, 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 4, 0, 4, 3, 0, 4, - 3, 3, 0, 4, 1, 1, 0, 4, 3, 3, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, - 0, 4, 1, 3, 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, 1, 0, 4, 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, 1, 3, 2, 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, 1, 1, 1, 1, 1, 1, 1, 3, 0, + 4, 0, 4, 3, 0, 4, 3, 3, 0, 4, + 1, 1, 0, 4, 3, 3, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 6, 0, 4, 1, 3, + 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 }; @@ -6050,6 +6087,7 @@ namespace isc { namespace dhcp { "\"type\"", "\"memfile\"", "\"mysql\"", "\"postgresql\"", "\"user\"", "\"password\"", "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"", + "\"read-timeout\"", "\"write-timeout\"", "\"tcp-user-timeout\"", "\"max-reconnect-tries\"", "\"reconnect-wait-time\"", "\"on-fail\"", "\"stop-retry-exit\"", "\"serve-retry-exit\"", "\"serve-retry-continue\"", "\"max-row-errors\"", "\"trust-anchor\"", @@ -6139,6 +6177,7 @@ namespace isc { namespace dhcp { "database_map_params", "database_map_param", "database_type", "$@35", "db_type", "user", "$@36", "password", "$@37", "host", "$@38", "port", "name", "$@39", "persist", "lfc_interval", "readonly", "connect_timeout", + "read_timeout", "write_timeout", "tcp_user_timeout", "reconnect_wait_time", "on_fail", "$@40", "on_fail_mode", "max_row_errors", "max_reconnect_tries", "trust_anchor", "$@41", "cert_file", "$@42", "key_file", "$@43", "cipher_list", "$@44", @@ -6228,92 +6267,93 @@ namespace isc { namespace dhcp { const short Dhcp6Parser::yyrline_[] = { - 0, 302, 302, 302, 303, 303, 304, 304, 305, 305, - 306, 306, 307, 307, 308, 308, 309, 309, 310, 310, - 311, 311, 312, 312, 313, 313, 314, 314, 315, 315, - 323, 324, 325, 326, 327, 328, 329, 332, 337, 337, - 348, 351, 352, 355, 360, 366, 371, 371, 378, 379, - 382, 386, 390, 396, 396, 403, 404, 407, 411, 415, - 425, 434, 434, 449, 449, 463, 466, 472, 472, 481, - 482, 483, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, - 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, 557, 557, 566, - 572, 578, 584, 590, 596, 602, 608, 614, 620, 626, - 632, 638, 644, 650, 656, 662, 668, 668, 677, 680, - 683, 686, 689, 695, 695, 704, 704, 713, 719, 725, - 725, 734, 734, 743, 749, 755, 761, 761, 770, 776, - 782, 788, 794, 794, 806, 806, 815, 816, 817, 822, - 823, 824, 825, 826, 827, 828, 829, 832, 832, 843, - 849, 855, 861, 867, 867, 880, 880, 893, 893, 904, - 905, 908, 909, 910, 915, 915, 925, 926, 927, 932, - 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 953, 953, - 961, 962, 963, 966, 966, 975, 975, 984, 984, 993, - 999, 999, 1008, 1014, 1020, 1026, 1032, 1038, 1038, 1046, - 1047, 1048, 1051, 1057, 1063, 1063, 1072, 1072, 1081, 1081, - 1090, 1090, 1099, 1099, 1110, 1111, 1112, 1117, 1119, 1119, - 1138, 1138, 1149, 1150, 1151, 1156, 1157, 1160, 1165, 1170, - 1170, 1181, 1182, 1183, 1188, 1189, 1190, 1193, 1198, 1205, - 1205, 1218, 1218, 1231, 1232, 1233, 1238, 1239, 1240, 1241, - 1242, 1243, 1246, 1252, 1258, 1264, 1264, 1275, 1276, 1279, - 1280, 1281, 1286, 1286, 1296, 1296, 1306, 1307, 1308, 1311, - 1314, 1315, 1318, 1318, 1327, 1327, 1336, 1336, 1348, 1349, - 1350, 1355, 1356, 1357, 1358, 1359, 1360, 1363, 1369, 1375, - 1381, 1387, 1393, 1402, 1402, 1416, 1417, 1420, 1421, 1422, - 1431, 1431, 1457, 1457, 1468, 1469, 1470, 1476, 1477, 1478, - 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, - 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, - 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, - 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, - 1521, 1521, 1530, 1530, 1539, 1539, 1548, 1548, 1557, 1557, - 1568, 1574, 1580, 1586, 1586, 1594, 1595, 1596, 1597, 1600, - 1606, 1614, 1614, 1626, 1627, 1631, 1632, 1633, 1638, 1638, - 1646, 1647, 1648, 1653, 1654, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, - 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, - 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, - 1690, 1691, 1692, 1699, 1699, 1713, 1713, 1722, 1723, 1726, - 1727, 1728, 1735, 1735, 1750, 1750, 1764, 1765, 1768, 1769, - 1770, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, - 1784, 1787, 1789, 1795, 1797, 1797, 1806, 1806, 1815, 1815, - 1824, 1826, 1826, 1835, 1845, 1845, 1858, 1859, 1864, 1865, - 1866, 1873, 1873, 1885, 1885, 1897, 1898, 1903, 1904, 1905, - 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, - 1925, 1925, 1934, 1936, 1938, 1944, 1953, 1953, 1966, 1967, - 1970, 1971, 1972, 1977, 1977, 1987, 1987, 1997, 1998, 1999, - 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013, 2013, 2022, - 2022, 2047, 2047, 2077, 2077, 2090, 2091, 2094, 2095, 2096, - 2101, 2101, 2113, 2113, 2125, 2126, 2127, 2132, 2133, 2134, - 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2145, 2145, - 2154, 2160, 2160, 2169, 2175, 2184, 2184, 2195, 2196, 2199, - 2200, 2201, 2206, 2206, 2215, 2215, 2224, 2225, 2228, 2229, - 2230, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, - 2245, 2246, 2249, 2249, 2260, 2260, 2271, 2271, 2280, 2280, - 2289, 2289, 2298, 2298, 2307, 2307, 2321, 2321, 2332, 2333, - 2336, 2336, 2348, 2348, 2359, 2360, 2361, 2366, 2366, 2376, - 2377, 2380, 2381, 2382, 2387, 2388, 2389, 2390, 2391, 2392, - 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2402, 2404, 2404, - 2413, 2422, 2422, 2435, 2436, 2437, 2442, 2443, 2444, 2445, - 2446, 2447, 2448, 2449, 2450, 2453, 2453, 2461, 2462, 2463, - 2466, 2472, 2472, 2481, 2487, 2495, 2503, 2503, 2514, 2515, - 2516, 2521, 2522, 2523, 2524, 2525, 2528, 2528, 2537, 2537, - 2549, 2549, 2562, 2563, 2564, 2569, 2570, 2571, 2572, 2573, - 2574, 2577, 2583, 2583, 2592, 2598, 2598, 2608, 2608, 2621, - 2621, 2631, 2632, 2633, 2638, 2639, 2640, 2641, 2642, 2643, - 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, - 2654, 2655, 2658, 2665, 2665, 2674, 2674, 2683, 2689, 2689, - 2698, 2704, 2710, 2710, 2719, 2720, 2723, 2723, 2733, 2740, - 2747, 2747, 2756, 2756, 2766, 2766, 2776, 2776, 2788, 2788, - 2800, 2800, 2810, 2811, 2812, 2818, 2819, 2822, 2822, 2833, - 2841, 2841, 2854, 2855, 2856, 2862, 2862, 2870, 2871, 2872, - 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2886, 2892, 2892, - 2901, 2901, 2912, 2913, 2914, 2919, 2919, 2927, 2928, 2929, - 2934, 2935, 2936, 2937, 2938, 2941, 2941, 2950, 2956, 2962, - 2968, 2968, 2977, 2977, 2988, 2989, 2990, 2995, 2996, 2999 + 0, 305, 305, 305, 306, 306, 307, 307, 308, 308, + 309, 309, 310, 310, 311, 311, 312, 312, 313, 313, + 314, 314, 315, 315, 316, 316, 317, 317, 318, 318, + 326, 327, 328, 329, 330, 331, 332, 335, 340, 340, + 351, 354, 355, 358, 363, 369, 374, 374, 381, 382, + 385, 389, 393, 399, 399, 406, 407, 410, 414, 418, + 428, 437, 437, 452, 452, 466, 469, 475, 475, 484, + 485, 486, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 525, 526, 527, 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, 560, 560, 569, + 575, 581, 587, 593, 599, 605, 611, 617, 623, 629, + 635, 641, 647, 653, 659, 665, 671, 671, 680, 683, + 686, 689, 692, 698, 698, 707, 707, 716, 722, 728, + 728, 737, 737, 746, 752, 758, 764, 764, 773, 779, + 785, 791, 797, 797, 809, 809, 818, 819, 820, 825, + 826, 827, 828, 829, 830, 831, 832, 835, 835, 846, + 852, 858, 864, 870, 870, 883, 883, 896, 896, 907, + 908, 911, 912, 913, 918, 918, 928, 929, 930, 935, + 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, + 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, + 956, 959, 959, 967, 968, 969, 972, 972, 981, 981, + 990, 990, 999, 1005, 1005, 1014, 1020, 1026, 1032, 1038, + 1044, 1050, 1057, 1063, 1063, 1071, 1072, 1073, 1076, 1082, + 1088, 1088, 1097, 1097, 1106, 1106, 1115, 1115, 1124, 1124, + 1135, 1136, 1137, 1142, 1144, 1144, 1163, 1163, 1174, 1175, + 1176, 1181, 1182, 1185, 1190, 1195, 1195, 1206, 1207, 1208, + 1213, 1214, 1215, 1218, 1223, 1230, 1230, 1243, 1243, 1256, + 1257, 1258, 1263, 1264, 1265, 1266, 1267, 1268, 1271, 1277, + 1283, 1289, 1289, 1300, 1301, 1304, 1305, 1306, 1311, 1311, + 1321, 1321, 1331, 1332, 1333, 1336, 1339, 1340, 1343, 1343, + 1352, 1352, 1361, 1361, 1373, 1374, 1375, 1380, 1381, 1382, + 1383, 1384, 1385, 1388, 1394, 1400, 1406, 1412, 1418, 1427, + 1427, 1441, 1442, 1445, 1446, 1447, 1456, 1456, 1482, 1482, + 1493, 1494, 1495, 1501, 1502, 1503, 1504, 1505, 1506, 1507, + 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, + 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, + 1538, 1539, 1540, 1541, 1542, 1543, 1546, 1546, 1555, 1555, + 1564, 1564, 1573, 1573, 1582, 1582, 1593, 1599, 1605, 1611, + 1611, 1619, 1620, 1621, 1622, 1625, 1631, 1639, 1639, 1651, + 1652, 1656, 1657, 1658, 1663, 1663, 1671, 1672, 1673, 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, 1724, + 1724, 1738, 1738, 1747, 1748, 1751, 1752, 1753, 1760, 1760, + 1775, 1775, 1789, 1790, 1793, 1794, 1795, 1800, 1801, 1802, + 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1812, 1814, 1820, + 1822, 1822, 1831, 1831, 1840, 1840, 1849, 1851, 1851, 1860, + 1870, 1870, 1883, 1884, 1889, 1890, 1891, 1898, 1898, 1910, + 1910, 1922, 1923, 1928, 1929, 1930, 1937, 1938, 1939, 1940, + 1941, 1942, 1943, 1944, 1945, 1948, 1950, 1950, 1959, 1961, + 1963, 1969, 1978, 1978, 1991, 1992, 1995, 1996, 1997, 2002, + 2002, 2012, 2012, 2022, 2023, 2024, 2029, 2030, 2031, 2032, + 2033, 2034, 2035, 2038, 2038, 2047, 2047, 2072, 2072, 2102, + 2102, 2115, 2116, 2119, 2120, 2121, 2126, 2126, 2138, 2138, + 2150, 2151, 2152, 2157, 2158, 2159, 2160, 2161, 2162, 2163, + 2164, 2165, 2166, 2167, 2170, 2170, 2179, 2185, 2185, 2194, + 2200, 2209, 2209, 2220, 2221, 2224, 2225, 2226, 2231, 2231, + 2240, 2240, 2249, 2250, 2253, 2254, 2255, 2261, 2262, 2263, + 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2274, 2274, + 2285, 2285, 2296, 2296, 2305, 2305, 2314, 2314, 2323, 2323, + 2332, 2332, 2346, 2346, 2357, 2358, 2361, 2361, 2373, 2373, + 2384, 2385, 2386, 2391, 2391, 2401, 2402, 2405, 2406, 2407, + 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, + 2422, 2423, 2424, 2427, 2429, 2429, 2438, 2447, 2447, 2460, + 2461, 2462, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, + 2475, 2478, 2478, 2486, 2487, 2488, 2491, 2497, 2497, 2506, + 2512, 2520, 2528, 2528, 2539, 2540, 2541, 2546, 2547, 2548, + 2549, 2550, 2553, 2553, 2562, 2562, 2574, 2574, 2587, 2588, + 2589, 2594, 2595, 2596, 2597, 2598, 2599, 2602, 2608, 2608, + 2617, 2623, 2623, 2633, 2633, 2646, 2646, 2656, 2657, 2658, + 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, + 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2683, 2690, + 2690, 2699, 2699, 2708, 2714, 2714, 2723, 2729, 2735, 2735, + 2744, 2745, 2748, 2748, 2758, 2765, 2772, 2772, 2781, 2781, + 2791, 2791, 2801, 2801, 2813, 2813, 2825, 2825, 2835, 2836, + 2837, 2843, 2844, 2847, 2847, 2858, 2866, 2866, 2879, 2880, + 2881, 2887, 2887, 2895, 2896, 2897, 2902, 2903, 2904, 2905, + 2906, 2907, 2908, 2911, 2917, 2917, 2926, 2926, 2937, 2938, + 2939, 2944, 2944, 2952, 2953, 2954, 2959, 2960, 2961, 2962, + 2963, 2966, 2966, 2975, 2981, 2987, 2993, 2993, 3002, 3002, + 3013, 3014, 3015, 3020, 3021, 3024 }; void @@ -6346,9 +6386,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp6_parser.yy" } } // isc::dhcp -#line 6350 "dhcp6_parser.cc" +#line 6390 "dhcp6_parser.cc" -#line 3005 "dhcp6_parser.yy" +#line 3030 "dhcp6_parser.yy" void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index f1eb00b415..e57c1c1221 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -531,184 +531,187 @@ namespace isc { namespace dhcp { TOKEN_LFC_INTERVAL = 288, // "lfc-interval" TOKEN_READONLY = 289, // "readonly" TOKEN_CONNECT_TIMEOUT = 290, // "connect-timeout" - TOKEN_MAX_RECONNECT_TRIES = 291, // "max-reconnect-tries" - TOKEN_RECONNECT_WAIT_TIME = 292, // "reconnect-wait-time" - TOKEN_ON_FAIL = 293, // "on-fail" - TOKEN_STOP_RETRY_EXIT = 294, // "stop-retry-exit" - TOKEN_SERVE_RETRY_EXIT = 295, // "serve-retry-exit" - TOKEN_SERVE_RETRY_CONTINUE = 296, // "serve-retry-continue" - TOKEN_MAX_ROW_ERRORS = 297, // "max-row-errors" - TOKEN_TRUST_ANCHOR = 298, // "trust-anchor" - TOKEN_CERT_FILE = 299, // "cert-file" - TOKEN_KEY_FILE = 300, // "key-file" - TOKEN_CIPHER_LIST = 301, // "cipher-list" - TOKEN_PREFERRED_LIFETIME = 302, // "preferred-lifetime" - TOKEN_MIN_PREFERRED_LIFETIME = 303, // "min-preferred-lifetime" - TOKEN_MAX_PREFERRED_LIFETIME = 304, // "max-preferred-lifetime" - TOKEN_VALID_LIFETIME = 305, // "valid-lifetime" - TOKEN_MIN_VALID_LIFETIME = 306, // "min-valid-lifetime" - TOKEN_MAX_VALID_LIFETIME = 307, // "max-valid-lifetime" - TOKEN_RENEW_TIMER = 308, // "renew-timer" - TOKEN_REBIND_TIMER = 309, // "rebind-timer" - TOKEN_CALCULATE_TEE_TIMES = 310, // "calculate-tee-times" - TOKEN_T1_PERCENT = 311, // "t1-percent" - TOKEN_T2_PERCENT = 312, // "t2-percent" - TOKEN_CACHE_THRESHOLD = 313, // "cache-threshold" - TOKEN_CACHE_MAX_AGE = 314, // "cache-max-age" - TOKEN_DECLINE_PROBATION_PERIOD = 315, // "decline-probation-period" - TOKEN_SERVER_TAG = 316, // "server-tag" - TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 317, // "statistic-default-sample-count" - TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 318, // "statistic-default-sample-age" - TOKEN_DDNS_SEND_UPDATES = 319, // "ddns-send-updates" - TOKEN_DDNS_OVERRIDE_NO_UPDATE = 320, // "ddns-override-no-update" - TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 321, // "ddns-override-client-update" - TOKEN_DDNS_REPLACE_CLIENT_NAME = 322, // "ddns-replace-client-name" - TOKEN_DDNS_GENERATED_PREFIX = 323, // "ddns-generated-prefix" - TOKEN_DDNS_QUALIFYING_SUFFIX = 324, // "ddns-qualifying-suffix" - TOKEN_DDNS_UPDATE_ON_RENEW = 325, // "ddns-update-on-renew" - TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 326, // "ddns-use-conflict-resolution" - TOKEN_STORE_EXTENDED_INFO = 327, // "store-extended-info" - TOKEN_SUBNET6 = 328, // "subnet6" - TOKEN_OPTION_DEF = 329, // "option-def" - TOKEN_OPTION_DATA = 330, // "option-data" - TOKEN_NAME = 331, // "name" - TOKEN_DATA = 332, // "data" - TOKEN_CODE = 333, // "code" - TOKEN_SPACE = 334, // "space" - TOKEN_CSV_FORMAT = 335, // "csv-format" - TOKEN_ALWAYS_SEND = 336, // "always-send" - TOKEN_RECORD_TYPES = 337, // "record-types" - TOKEN_ENCAPSULATE = 338, // "encapsulate" - TOKEN_ARRAY = 339, // "array" - TOKEN_PARKED_PACKET_LIMIT = 340, // "parked-packet-limit" - TOKEN_SHARED_NETWORKS = 341, // "shared-networks" - TOKEN_POOLS = 342, // "pools" - TOKEN_POOL = 343, // "pool" - TOKEN_PD_POOLS = 344, // "pd-pools" - TOKEN_PREFIX = 345, // "prefix" - TOKEN_PREFIX_LEN = 346, // "prefix-len" - TOKEN_EXCLUDED_PREFIX = 347, // "excluded-prefix" - TOKEN_EXCLUDED_PREFIX_LEN = 348, // "excluded-prefix-len" - TOKEN_DELEGATED_LEN = 349, // "delegated-len" - TOKEN_USER_CONTEXT = 350, // "user-context" - TOKEN_COMMENT = 351, // "comment" - TOKEN_SUBNET = 352, // "subnet" - TOKEN_INTERFACE = 353, // "interface" - TOKEN_INTERFACE_ID = 354, // "interface-id" - TOKEN_ID = 355, // "id" - TOKEN_RAPID_COMMIT = 356, // "rapid-commit" - TOKEN_RESERVATION_MODE = 357, // "reservation-mode" - TOKEN_DISABLED = 358, // "disabled" - TOKEN_OUT_OF_POOL = 359, // "out-of-pool" - TOKEN_GLOBAL = 360, // "global" - TOKEN_ALL = 361, // "all" - TOKEN_RESERVATIONS_GLOBAL = 362, // "reservations-global" - TOKEN_RESERVATIONS_IN_SUBNET = 363, // "reservations-in-subnet" - TOKEN_RESERVATIONS_OUT_OF_POOL = 364, // "reservations-out-of-pool" - TOKEN_MAC_SOURCES = 365, // "mac-sources" - TOKEN_RELAY_SUPPLIED_OPTIONS = 366, // "relay-supplied-options" - TOKEN_HOST_RESERVATION_IDENTIFIERS = 367, // "host-reservation-identifiers" - TOKEN_SANITY_CHECKS = 368, // "sanity-checks" - TOKEN_LEASE_CHECKS = 369, // "lease-checks" - TOKEN_CLIENT_CLASSES = 370, // "client-classes" - TOKEN_REQUIRE_CLIENT_CLASSES = 371, // "require-client-classes" - TOKEN_TEST = 372, // "test" - TOKEN_ONLY_IF_REQUIRED = 373, // "only-if-required" - TOKEN_CLIENT_CLASS = 374, // "client-class" - TOKEN_RESERVATIONS = 375, // "reservations" - TOKEN_IP_ADDRESSES = 376, // "ip-addresses" - TOKEN_PREFIXES = 377, // "prefixes" - TOKEN_DUID = 378, // "duid" - TOKEN_HW_ADDRESS = 379, // "hw-address" - TOKEN_HOSTNAME = 380, // "hostname" - TOKEN_FLEX_ID = 381, // "flex-id" - TOKEN_RELAY = 382, // "relay" - TOKEN_IP_ADDRESS = 383, // "ip-address" - TOKEN_HOOKS_LIBRARIES = 384, // "hooks-libraries" - TOKEN_LIBRARY = 385, // "library" - TOKEN_PARAMETERS = 386, // "parameters" - TOKEN_EXPIRED_LEASES_PROCESSING = 387, // "expired-leases-processing" - TOKEN_RECLAIM_TIMER_WAIT_TIME = 388, // "reclaim-timer-wait-time" - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 389, // "flush-reclaimed-timer-wait-time" - TOKEN_HOLD_RECLAIMED_TIME = 390, // "hold-reclaimed-time" - TOKEN_MAX_RECLAIM_LEASES = 391, // "max-reclaim-leases" - TOKEN_MAX_RECLAIM_TIME = 392, // "max-reclaim-time" - TOKEN_UNWARNED_RECLAIM_CYCLES = 393, // "unwarned-reclaim-cycles" - TOKEN_SERVER_ID = 394, // "server-id" - TOKEN_LLT = 395, // "LLT" - TOKEN_EN = 396, // "EN" - TOKEN_LL = 397, // "LL" - TOKEN_IDENTIFIER = 398, // "identifier" - TOKEN_HTYPE = 399, // "htype" - TOKEN_TIME = 400, // "time" - TOKEN_ENTERPRISE_ID = 401, // "enterprise-id" - TOKEN_DHCP4O6_PORT = 402, // "dhcp4o6-port" - TOKEN_DHCP_MULTI_THREADING = 403, // "multi-threading" - TOKEN_ENABLE_MULTI_THREADING = 404, // "enable-multi-threading" - TOKEN_THREAD_POOL_SIZE = 405, // "thread-pool-size" - TOKEN_PACKET_QUEUE_SIZE = 406, // "packet-queue-size" - TOKEN_CONTROL_SOCKET = 407, // "control-socket" - TOKEN_SOCKET_TYPE = 408, // "socket-type" - TOKEN_SOCKET_NAME = 409, // "socket-name" - TOKEN_DHCP_QUEUE_CONTROL = 410, // "dhcp-queue-control" - TOKEN_ENABLE_QUEUE = 411, // "enable-queue" - TOKEN_QUEUE_TYPE = 412, // "queue-type" - TOKEN_CAPACITY = 413, // "capacity" - TOKEN_DHCP_DDNS = 414, // "dhcp-ddns" - TOKEN_ENABLE_UPDATES = 415, // "enable-updates" - TOKEN_QUALIFYING_SUFFIX = 416, // "qualifying-suffix" - TOKEN_SERVER_IP = 417, // "server-ip" - TOKEN_SERVER_PORT = 418, // "server-port" - TOKEN_SENDER_IP = 419, // "sender-ip" - TOKEN_SENDER_PORT = 420, // "sender-port" - TOKEN_MAX_QUEUE_SIZE = 421, // "max-queue-size" - TOKEN_NCR_PROTOCOL = 422, // "ncr-protocol" - TOKEN_NCR_FORMAT = 423, // "ncr-format" - TOKEN_OVERRIDE_NO_UPDATE = 424, // "override-no-update" - TOKEN_OVERRIDE_CLIENT_UPDATE = 425, // "override-client-update" - TOKEN_REPLACE_CLIENT_NAME = 426, // "replace-client-name" - TOKEN_GENERATED_PREFIX = 427, // "generated-prefix" - TOKEN_UDP = 428, // "UDP" - TOKEN_TCP = 429, // "TCP" - TOKEN_JSON = 430, // "JSON" - TOKEN_WHEN_PRESENT = 431, // "when-present" - TOKEN_NEVER = 432, // "never" - TOKEN_ALWAYS = 433, // "always" - TOKEN_WHEN_NOT_PRESENT = 434, // "when-not-present" - TOKEN_HOSTNAME_CHAR_SET = 435, // "hostname-char-set" - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 436, // "hostname-char-replacement" - TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 437, // "early-global-reservations-lookup" - TOKEN_IP_RESERVATIONS_UNIQUE = 438, // "ip-reservations-unique" - TOKEN_RESERVATIONS_LOOKUP_FIRST = 439, // "reservations-lookup-first" - TOKEN_LOGGERS = 440, // "loggers" - TOKEN_OUTPUT_OPTIONS = 441, // "output_options" - TOKEN_OUTPUT = 442, // "output" - TOKEN_DEBUGLEVEL = 443, // "debuglevel" - TOKEN_SEVERITY = 444, // "severity" - TOKEN_FLUSH = 445, // "flush" - TOKEN_MAXSIZE = 446, // "maxsize" - TOKEN_MAXVER = 447, // "maxver" - TOKEN_PATTERN = 448, // "pattern" - TOKEN_COMPATIBILITY = 449, // "compatibility" - TOKEN_LENIENT_OPTION_PARSING = 450, // "lenient-option-parsing" - TOKEN_TOPLEVEL_JSON = 451, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP6 = 452, // TOPLEVEL_DHCP6 - TOKEN_SUB_DHCP6 = 453, // SUB_DHCP6 - TOKEN_SUB_INTERFACES6 = 454, // SUB_INTERFACES6 - TOKEN_SUB_SUBNET6 = 455, // SUB_SUBNET6 - TOKEN_SUB_POOL6 = 456, // SUB_POOL6 - TOKEN_SUB_PD_POOL = 457, // SUB_PD_POOL - TOKEN_SUB_RESERVATION = 458, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 459, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 460, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 461, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 462, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 463, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 464, // SUB_CONFIG_CONTROL - TOKEN_STRING = 465, // "constant string" - TOKEN_INTEGER = 466, // "integer" - TOKEN_FLOAT = 467, // "floating point" - TOKEN_BOOLEAN = 468 // "boolean" + TOKEN_READ_TIMEOUT = 291, // "read-timeout" + TOKEN_WRITE_TIMEOUT = 292, // "write-timeout" + TOKEN_TCP_USER_TIMEOUT = 293, // "tcp-user-timeout" + TOKEN_MAX_RECONNECT_TRIES = 294, // "max-reconnect-tries" + TOKEN_RECONNECT_WAIT_TIME = 295, // "reconnect-wait-time" + TOKEN_ON_FAIL = 296, // "on-fail" + TOKEN_STOP_RETRY_EXIT = 297, // "stop-retry-exit" + TOKEN_SERVE_RETRY_EXIT = 298, // "serve-retry-exit" + TOKEN_SERVE_RETRY_CONTINUE = 299, // "serve-retry-continue" + TOKEN_MAX_ROW_ERRORS = 300, // "max-row-errors" + TOKEN_TRUST_ANCHOR = 301, // "trust-anchor" + TOKEN_CERT_FILE = 302, // "cert-file" + TOKEN_KEY_FILE = 303, // "key-file" + TOKEN_CIPHER_LIST = 304, // "cipher-list" + TOKEN_PREFERRED_LIFETIME = 305, // "preferred-lifetime" + TOKEN_MIN_PREFERRED_LIFETIME = 306, // "min-preferred-lifetime" + TOKEN_MAX_PREFERRED_LIFETIME = 307, // "max-preferred-lifetime" + TOKEN_VALID_LIFETIME = 308, // "valid-lifetime" + TOKEN_MIN_VALID_LIFETIME = 309, // "min-valid-lifetime" + TOKEN_MAX_VALID_LIFETIME = 310, // "max-valid-lifetime" + TOKEN_RENEW_TIMER = 311, // "renew-timer" + TOKEN_REBIND_TIMER = 312, // "rebind-timer" + TOKEN_CALCULATE_TEE_TIMES = 313, // "calculate-tee-times" + TOKEN_T1_PERCENT = 314, // "t1-percent" + TOKEN_T2_PERCENT = 315, // "t2-percent" + TOKEN_CACHE_THRESHOLD = 316, // "cache-threshold" + TOKEN_CACHE_MAX_AGE = 317, // "cache-max-age" + TOKEN_DECLINE_PROBATION_PERIOD = 318, // "decline-probation-period" + TOKEN_SERVER_TAG = 319, // "server-tag" + TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 320, // "statistic-default-sample-count" + TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 321, // "statistic-default-sample-age" + TOKEN_DDNS_SEND_UPDATES = 322, // "ddns-send-updates" + TOKEN_DDNS_OVERRIDE_NO_UPDATE = 323, // "ddns-override-no-update" + TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 324, // "ddns-override-client-update" + TOKEN_DDNS_REPLACE_CLIENT_NAME = 325, // "ddns-replace-client-name" + TOKEN_DDNS_GENERATED_PREFIX = 326, // "ddns-generated-prefix" + TOKEN_DDNS_QUALIFYING_SUFFIX = 327, // "ddns-qualifying-suffix" + TOKEN_DDNS_UPDATE_ON_RENEW = 328, // "ddns-update-on-renew" + TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 329, // "ddns-use-conflict-resolution" + TOKEN_STORE_EXTENDED_INFO = 330, // "store-extended-info" + TOKEN_SUBNET6 = 331, // "subnet6" + TOKEN_OPTION_DEF = 332, // "option-def" + TOKEN_OPTION_DATA = 333, // "option-data" + TOKEN_NAME = 334, // "name" + TOKEN_DATA = 335, // "data" + TOKEN_CODE = 336, // "code" + TOKEN_SPACE = 337, // "space" + TOKEN_CSV_FORMAT = 338, // "csv-format" + TOKEN_ALWAYS_SEND = 339, // "always-send" + TOKEN_RECORD_TYPES = 340, // "record-types" + TOKEN_ENCAPSULATE = 341, // "encapsulate" + TOKEN_ARRAY = 342, // "array" + TOKEN_PARKED_PACKET_LIMIT = 343, // "parked-packet-limit" + TOKEN_SHARED_NETWORKS = 344, // "shared-networks" + TOKEN_POOLS = 345, // "pools" + TOKEN_POOL = 346, // "pool" + TOKEN_PD_POOLS = 347, // "pd-pools" + TOKEN_PREFIX = 348, // "prefix" + TOKEN_PREFIX_LEN = 349, // "prefix-len" + TOKEN_EXCLUDED_PREFIX = 350, // "excluded-prefix" + TOKEN_EXCLUDED_PREFIX_LEN = 351, // "excluded-prefix-len" + TOKEN_DELEGATED_LEN = 352, // "delegated-len" + TOKEN_USER_CONTEXT = 353, // "user-context" + TOKEN_COMMENT = 354, // "comment" + TOKEN_SUBNET = 355, // "subnet" + TOKEN_INTERFACE = 356, // "interface" + TOKEN_INTERFACE_ID = 357, // "interface-id" + TOKEN_ID = 358, // "id" + TOKEN_RAPID_COMMIT = 359, // "rapid-commit" + TOKEN_RESERVATION_MODE = 360, // "reservation-mode" + TOKEN_DISABLED = 361, // "disabled" + TOKEN_OUT_OF_POOL = 362, // "out-of-pool" + TOKEN_GLOBAL = 363, // "global" + TOKEN_ALL = 364, // "all" + TOKEN_RESERVATIONS_GLOBAL = 365, // "reservations-global" + TOKEN_RESERVATIONS_IN_SUBNET = 366, // "reservations-in-subnet" + TOKEN_RESERVATIONS_OUT_OF_POOL = 367, // "reservations-out-of-pool" + TOKEN_MAC_SOURCES = 368, // "mac-sources" + TOKEN_RELAY_SUPPLIED_OPTIONS = 369, // "relay-supplied-options" + TOKEN_HOST_RESERVATION_IDENTIFIERS = 370, // "host-reservation-identifiers" + TOKEN_SANITY_CHECKS = 371, // "sanity-checks" + TOKEN_LEASE_CHECKS = 372, // "lease-checks" + TOKEN_CLIENT_CLASSES = 373, // "client-classes" + TOKEN_REQUIRE_CLIENT_CLASSES = 374, // "require-client-classes" + TOKEN_TEST = 375, // "test" + TOKEN_ONLY_IF_REQUIRED = 376, // "only-if-required" + TOKEN_CLIENT_CLASS = 377, // "client-class" + TOKEN_RESERVATIONS = 378, // "reservations" + TOKEN_IP_ADDRESSES = 379, // "ip-addresses" + TOKEN_PREFIXES = 380, // "prefixes" + TOKEN_DUID = 381, // "duid" + TOKEN_HW_ADDRESS = 382, // "hw-address" + TOKEN_HOSTNAME = 383, // "hostname" + TOKEN_FLEX_ID = 384, // "flex-id" + TOKEN_RELAY = 385, // "relay" + TOKEN_IP_ADDRESS = 386, // "ip-address" + TOKEN_HOOKS_LIBRARIES = 387, // "hooks-libraries" + TOKEN_LIBRARY = 388, // "library" + TOKEN_PARAMETERS = 389, // "parameters" + TOKEN_EXPIRED_LEASES_PROCESSING = 390, // "expired-leases-processing" + TOKEN_RECLAIM_TIMER_WAIT_TIME = 391, // "reclaim-timer-wait-time" + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 392, // "flush-reclaimed-timer-wait-time" + TOKEN_HOLD_RECLAIMED_TIME = 393, // "hold-reclaimed-time" + TOKEN_MAX_RECLAIM_LEASES = 394, // "max-reclaim-leases" + TOKEN_MAX_RECLAIM_TIME = 395, // "max-reclaim-time" + TOKEN_UNWARNED_RECLAIM_CYCLES = 396, // "unwarned-reclaim-cycles" + TOKEN_SERVER_ID = 397, // "server-id" + TOKEN_LLT = 398, // "LLT" + TOKEN_EN = 399, // "EN" + TOKEN_LL = 400, // "LL" + TOKEN_IDENTIFIER = 401, // "identifier" + TOKEN_HTYPE = 402, // "htype" + TOKEN_TIME = 403, // "time" + TOKEN_ENTERPRISE_ID = 404, // "enterprise-id" + TOKEN_DHCP4O6_PORT = 405, // "dhcp4o6-port" + TOKEN_DHCP_MULTI_THREADING = 406, // "multi-threading" + TOKEN_ENABLE_MULTI_THREADING = 407, // "enable-multi-threading" + TOKEN_THREAD_POOL_SIZE = 408, // "thread-pool-size" + TOKEN_PACKET_QUEUE_SIZE = 409, // "packet-queue-size" + TOKEN_CONTROL_SOCKET = 410, // "control-socket" + TOKEN_SOCKET_TYPE = 411, // "socket-type" + TOKEN_SOCKET_NAME = 412, // "socket-name" + TOKEN_DHCP_QUEUE_CONTROL = 413, // "dhcp-queue-control" + TOKEN_ENABLE_QUEUE = 414, // "enable-queue" + TOKEN_QUEUE_TYPE = 415, // "queue-type" + TOKEN_CAPACITY = 416, // "capacity" + TOKEN_DHCP_DDNS = 417, // "dhcp-ddns" + TOKEN_ENABLE_UPDATES = 418, // "enable-updates" + TOKEN_QUALIFYING_SUFFIX = 419, // "qualifying-suffix" + TOKEN_SERVER_IP = 420, // "server-ip" + TOKEN_SERVER_PORT = 421, // "server-port" + TOKEN_SENDER_IP = 422, // "sender-ip" + TOKEN_SENDER_PORT = 423, // "sender-port" + TOKEN_MAX_QUEUE_SIZE = 424, // "max-queue-size" + TOKEN_NCR_PROTOCOL = 425, // "ncr-protocol" + TOKEN_NCR_FORMAT = 426, // "ncr-format" + TOKEN_OVERRIDE_NO_UPDATE = 427, // "override-no-update" + TOKEN_OVERRIDE_CLIENT_UPDATE = 428, // "override-client-update" + TOKEN_REPLACE_CLIENT_NAME = 429, // "replace-client-name" + TOKEN_GENERATED_PREFIX = 430, // "generated-prefix" + TOKEN_UDP = 431, // "UDP" + TOKEN_TCP = 432, // "TCP" + TOKEN_JSON = 433, // "JSON" + TOKEN_WHEN_PRESENT = 434, // "when-present" + TOKEN_NEVER = 435, // "never" + TOKEN_ALWAYS = 436, // "always" + TOKEN_WHEN_NOT_PRESENT = 437, // "when-not-present" + TOKEN_HOSTNAME_CHAR_SET = 438, // "hostname-char-set" + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 439, // "hostname-char-replacement" + TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 440, // "early-global-reservations-lookup" + TOKEN_IP_RESERVATIONS_UNIQUE = 441, // "ip-reservations-unique" + TOKEN_RESERVATIONS_LOOKUP_FIRST = 442, // "reservations-lookup-first" + TOKEN_LOGGERS = 443, // "loggers" + TOKEN_OUTPUT_OPTIONS = 444, // "output_options" + TOKEN_OUTPUT = 445, // "output" + TOKEN_DEBUGLEVEL = 446, // "debuglevel" + TOKEN_SEVERITY = 447, // "severity" + TOKEN_FLUSH = 448, // "flush" + TOKEN_MAXSIZE = 449, // "maxsize" + TOKEN_MAXVER = 450, // "maxver" + TOKEN_PATTERN = 451, // "pattern" + TOKEN_COMPATIBILITY = 452, // "compatibility" + TOKEN_LENIENT_OPTION_PARSING = 453, // "lenient-option-parsing" + TOKEN_TOPLEVEL_JSON = 454, // TOPLEVEL_JSON + TOKEN_TOPLEVEL_DHCP6 = 455, // TOPLEVEL_DHCP6 + TOKEN_SUB_DHCP6 = 456, // SUB_DHCP6 + TOKEN_SUB_INTERFACES6 = 457, // SUB_INTERFACES6 + TOKEN_SUB_SUBNET6 = 458, // SUB_SUBNET6 + TOKEN_SUB_POOL6 = 459, // SUB_POOL6 + TOKEN_SUB_PD_POOL = 460, // SUB_PD_POOL + TOKEN_SUB_RESERVATION = 461, // SUB_RESERVATION + TOKEN_SUB_OPTION_DEFS = 462, // SUB_OPTION_DEFS + TOKEN_SUB_OPTION_DEF = 463, // SUB_OPTION_DEF + TOKEN_SUB_OPTION_DATA = 464, // SUB_OPTION_DATA + TOKEN_SUB_HOOKS_LIBRARY = 465, // SUB_HOOKS_LIBRARY + TOKEN_SUB_DHCP_DDNS = 466, // SUB_DHCP_DDNS + TOKEN_SUB_CONFIG_CONTROL = 467, // SUB_CONFIG_CONTROL + TOKEN_STRING = 468, // "constant string" + TOKEN_INTEGER = 469, // "integer" + TOKEN_FLOAT = 470, // "floating point" + TOKEN_BOOLEAN = 471 // "boolean" }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -725,7 +728,7 @@ namespace isc { namespace dhcp { { enum symbol_kind_type { - YYNTOKENS = 214, ///< Number of tokens. + YYNTOKENS = 217, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -763,626 +766,632 @@ namespace isc { namespace dhcp { S_LFC_INTERVAL = 33, // "lfc-interval" S_READONLY = 34, // "readonly" S_CONNECT_TIMEOUT = 35, // "connect-timeout" - S_MAX_RECONNECT_TRIES = 36, // "max-reconnect-tries" - S_RECONNECT_WAIT_TIME = 37, // "reconnect-wait-time" - S_ON_FAIL = 38, // "on-fail" - S_STOP_RETRY_EXIT = 39, // "stop-retry-exit" - S_SERVE_RETRY_EXIT = 40, // "serve-retry-exit" - S_SERVE_RETRY_CONTINUE = 41, // "serve-retry-continue" - S_MAX_ROW_ERRORS = 42, // "max-row-errors" - S_TRUST_ANCHOR = 43, // "trust-anchor" - S_CERT_FILE = 44, // "cert-file" - S_KEY_FILE = 45, // "key-file" - S_CIPHER_LIST = 46, // "cipher-list" - S_PREFERRED_LIFETIME = 47, // "preferred-lifetime" - S_MIN_PREFERRED_LIFETIME = 48, // "min-preferred-lifetime" - S_MAX_PREFERRED_LIFETIME = 49, // "max-preferred-lifetime" - S_VALID_LIFETIME = 50, // "valid-lifetime" - S_MIN_VALID_LIFETIME = 51, // "min-valid-lifetime" - S_MAX_VALID_LIFETIME = 52, // "max-valid-lifetime" - S_RENEW_TIMER = 53, // "renew-timer" - S_REBIND_TIMER = 54, // "rebind-timer" - S_CALCULATE_TEE_TIMES = 55, // "calculate-tee-times" - S_T1_PERCENT = 56, // "t1-percent" - S_T2_PERCENT = 57, // "t2-percent" - S_CACHE_THRESHOLD = 58, // "cache-threshold" - S_CACHE_MAX_AGE = 59, // "cache-max-age" - S_DECLINE_PROBATION_PERIOD = 60, // "decline-probation-period" - S_SERVER_TAG = 61, // "server-tag" - S_STATISTIC_DEFAULT_SAMPLE_COUNT = 62, // "statistic-default-sample-count" - S_STATISTIC_DEFAULT_SAMPLE_AGE = 63, // "statistic-default-sample-age" - S_DDNS_SEND_UPDATES = 64, // "ddns-send-updates" - S_DDNS_OVERRIDE_NO_UPDATE = 65, // "ddns-override-no-update" - S_DDNS_OVERRIDE_CLIENT_UPDATE = 66, // "ddns-override-client-update" - S_DDNS_REPLACE_CLIENT_NAME = 67, // "ddns-replace-client-name" - S_DDNS_GENERATED_PREFIX = 68, // "ddns-generated-prefix" - S_DDNS_QUALIFYING_SUFFIX = 69, // "ddns-qualifying-suffix" - S_DDNS_UPDATE_ON_RENEW = 70, // "ddns-update-on-renew" - S_DDNS_USE_CONFLICT_RESOLUTION = 71, // "ddns-use-conflict-resolution" - S_STORE_EXTENDED_INFO = 72, // "store-extended-info" - S_SUBNET6 = 73, // "subnet6" - S_OPTION_DEF = 74, // "option-def" - S_OPTION_DATA = 75, // "option-data" - S_NAME = 76, // "name" - S_DATA = 77, // "data" - S_CODE = 78, // "code" - S_SPACE = 79, // "space" - S_CSV_FORMAT = 80, // "csv-format" - S_ALWAYS_SEND = 81, // "always-send" - S_RECORD_TYPES = 82, // "record-types" - S_ENCAPSULATE = 83, // "encapsulate" - S_ARRAY = 84, // "array" - S_PARKED_PACKET_LIMIT = 85, // "parked-packet-limit" - S_SHARED_NETWORKS = 86, // "shared-networks" - S_POOLS = 87, // "pools" - S_POOL = 88, // "pool" - S_PD_POOLS = 89, // "pd-pools" - S_PREFIX = 90, // "prefix" - S_PREFIX_LEN = 91, // "prefix-len" - S_EXCLUDED_PREFIX = 92, // "excluded-prefix" - S_EXCLUDED_PREFIX_LEN = 93, // "excluded-prefix-len" - S_DELEGATED_LEN = 94, // "delegated-len" - S_USER_CONTEXT = 95, // "user-context" - S_COMMENT = 96, // "comment" - S_SUBNET = 97, // "subnet" - S_INTERFACE = 98, // "interface" - S_INTERFACE_ID = 99, // "interface-id" - S_ID = 100, // "id" - S_RAPID_COMMIT = 101, // "rapid-commit" - S_RESERVATION_MODE = 102, // "reservation-mode" - S_DISABLED = 103, // "disabled" - S_OUT_OF_POOL = 104, // "out-of-pool" - S_GLOBAL = 105, // "global" - S_ALL = 106, // "all" - S_RESERVATIONS_GLOBAL = 107, // "reservations-global" - S_RESERVATIONS_IN_SUBNET = 108, // "reservations-in-subnet" - S_RESERVATIONS_OUT_OF_POOL = 109, // "reservations-out-of-pool" - S_MAC_SOURCES = 110, // "mac-sources" - S_RELAY_SUPPLIED_OPTIONS = 111, // "relay-supplied-options" - S_HOST_RESERVATION_IDENTIFIERS = 112, // "host-reservation-identifiers" - S_SANITY_CHECKS = 113, // "sanity-checks" - S_LEASE_CHECKS = 114, // "lease-checks" - S_CLIENT_CLASSES = 115, // "client-classes" - S_REQUIRE_CLIENT_CLASSES = 116, // "require-client-classes" - S_TEST = 117, // "test" - S_ONLY_IF_REQUIRED = 118, // "only-if-required" - S_CLIENT_CLASS = 119, // "client-class" - S_RESERVATIONS = 120, // "reservations" - S_IP_ADDRESSES = 121, // "ip-addresses" - S_PREFIXES = 122, // "prefixes" - S_DUID = 123, // "duid" - S_HW_ADDRESS = 124, // "hw-address" - S_HOSTNAME = 125, // "hostname" - S_FLEX_ID = 126, // "flex-id" - S_RELAY = 127, // "relay" - S_IP_ADDRESS = 128, // "ip-address" - S_HOOKS_LIBRARIES = 129, // "hooks-libraries" - S_LIBRARY = 130, // "library" - S_PARAMETERS = 131, // "parameters" - S_EXPIRED_LEASES_PROCESSING = 132, // "expired-leases-processing" - S_RECLAIM_TIMER_WAIT_TIME = 133, // "reclaim-timer-wait-time" - S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 134, // "flush-reclaimed-timer-wait-time" - S_HOLD_RECLAIMED_TIME = 135, // "hold-reclaimed-time" - S_MAX_RECLAIM_LEASES = 136, // "max-reclaim-leases" - S_MAX_RECLAIM_TIME = 137, // "max-reclaim-time" - S_UNWARNED_RECLAIM_CYCLES = 138, // "unwarned-reclaim-cycles" - S_SERVER_ID = 139, // "server-id" - S_LLT = 140, // "LLT" - S_EN = 141, // "EN" - S_LL = 142, // "LL" - S_IDENTIFIER = 143, // "identifier" - S_HTYPE = 144, // "htype" - S_TIME = 145, // "time" - S_ENTERPRISE_ID = 146, // "enterprise-id" - S_DHCP4O6_PORT = 147, // "dhcp4o6-port" - S_DHCP_MULTI_THREADING = 148, // "multi-threading" - S_ENABLE_MULTI_THREADING = 149, // "enable-multi-threading" - S_THREAD_POOL_SIZE = 150, // "thread-pool-size" - S_PACKET_QUEUE_SIZE = 151, // "packet-queue-size" - S_CONTROL_SOCKET = 152, // "control-socket" - S_SOCKET_TYPE = 153, // "socket-type" - S_SOCKET_NAME = 154, // "socket-name" - S_DHCP_QUEUE_CONTROL = 155, // "dhcp-queue-control" - S_ENABLE_QUEUE = 156, // "enable-queue" - S_QUEUE_TYPE = 157, // "queue-type" - S_CAPACITY = 158, // "capacity" - S_DHCP_DDNS = 159, // "dhcp-ddns" - S_ENABLE_UPDATES = 160, // "enable-updates" - S_QUALIFYING_SUFFIX = 161, // "qualifying-suffix" - S_SERVER_IP = 162, // "server-ip" - S_SERVER_PORT = 163, // "server-port" - S_SENDER_IP = 164, // "sender-ip" - S_SENDER_PORT = 165, // "sender-port" - S_MAX_QUEUE_SIZE = 166, // "max-queue-size" - S_NCR_PROTOCOL = 167, // "ncr-protocol" - S_NCR_FORMAT = 168, // "ncr-format" - S_OVERRIDE_NO_UPDATE = 169, // "override-no-update" - S_OVERRIDE_CLIENT_UPDATE = 170, // "override-client-update" - S_REPLACE_CLIENT_NAME = 171, // "replace-client-name" - S_GENERATED_PREFIX = 172, // "generated-prefix" - S_UDP = 173, // "UDP" - S_TCP = 174, // "TCP" - S_JSON = 175, // "JSON" - S_WHEN_PRESENT = 176, // "when-present" - S_NEVER = 177, // "never" - S_ALWAYS = 178, // "always" - S_WHEN_NOT_PRESENT = 179, // "when-not-present" - S_HOSTNAME_CHAR_SET = 180, // "hostname-char-set" - S_HOSTNAME_CHAR_REPLACEMENT = 181, // "hostname-char-replacement" - S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 182, // "early-global-reservations-lookup" - S_IP_RESERVATIONS_UNIQUE = 183, // "ip-reservations-unique" - S_RESERVATIONS_LOOKUP_FIRST = 184, // "reservations-lookup-first" - S_LOGGERS = 185, // "loggers" - S_OUTPUT_OPTIONS = 186, // "output_options" - S_OUTPUT = 187, // "output" - S_DEBUGLEVEL = 188, // "debuglevel" - S_SEVERITY = 189, // "severity" - S_FLUSH = 190, // "flush" - S_MAXSIZE = 191, // "maxsize" - S_MAXVER = 192, // "maxver" - S_PATTERN = 193, // "pattern" - S_COMPATIBILITY = 194, // "compatibility" - S_LENIENT_OPTION_PARSING = 195, // "lenient-option-parsing" - S_TOPLEVEL_JSON = 196, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP6 = 197, // TOPLEVEL_DHCP6 - S_SUB_DHCP6 = 198, // SUB_DHCP6 - S_SUB_INTERFACES6 = 199, // SUB_INTERFACES6 - S_SUB_SUBNET6 = 200, // SUB_SUBNET6 - S_SUB_POOL6 = 201, // SUB_POOL6 - S_SUB_PD_POOL = 202, // SUB_PD_POOL - S_SUB_RESERVATION = 203, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 204, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 205, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 206, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 207, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 208, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 209, // SUB_CONFIG_CONTROL - S_STRING = 210, // "constant string" - S_INTEGER = 211, // "integer" - S_FLOAT = 212, // "floating point" - S_BOOLEAN = 213, // "boolean" - S_YYACCEPT = 214, // $accept - S_start = 215, // start - S_216_1 = 216, // $@1 - S_217_2 = 217, // $@2 - S_218_3 = 218, // $@3 - S_219_4 = 219, // $@4 - S_220_5 = 220, // $@5 - S_221_6 = 221, // $@6 - S_222_7 = 222, // $@7 - S_223_8 = 223, // $@8 - S_224_9 = 224, // $@9 - S_225_10 = 225, // $@10 - S_226_11 = 226, // $@11 - S_227_12 = 227, // $@12 - S_228_13 = 228, // $@13 - S_229_14 = 229, // $@14 - S_value = 230, // value - S_sub_json = 231, // sub_json - S_map2 = 232, // map2 - S_233_15 = 233, // $@15 - S_map_value = 234, // map_value - S_map_content = 235, // map_content - S_not_empty_map = 236, // not_empty_map - S_list_generic = 237, // list_generic - S_238_16 = 238, // $@16 - S_list_content = 239, // list_content - S_not_empty_list = 240, // not_empty_list - S_list_strings = 241, // list_strings - S_242_17 = 242, // $@17 - S_list_strings_content = 243, // list_strings_content - S_not_empty_list_strings = 244, // not_empty_list_strings - S_unknown_map_entry = 245, // unknown_map_entry - S_syntax_map = 246, // syntax_map - S_247_18 = 247, // $@18 - S_global_object = 248, // global_object - S_249_19 = 249, // $@19 - S_global_object_comma = 250, // global_object_comma - S_sub_dhcp6 = 251, // sub_dhcp6 - S_252_20 = 252, // $@20 - S_global_params = 253, // global_params - S_global_param = 254, // global_param - S_data_directory = 255, // data_directory - S_256_21 = 256, // $@21 - S_preferred_lifetime = 257, // preferred_lifetime - S_min_preferred_lifetime = 258, // min_preferred_lifetime - S_max_preferred_lifetime = 259, // max_preferred_lifetime - S_valid_lifetime = 260, // valid_lifetime - S_min_valid_lifetime = 261, // min_valid_lifetime - S_max_valid_lifetime = 262, // max_valid_lifetime - S_renew_timer = 263, // renew_timer - S_rebind_timer = 264, // rebind_timer - S_calculate_tee_times = 265, // calculate_tee_times - S_t1_percent = 266, // t1_percent - S_t2_percent = 267, // t2_percent - S_cache_threshold = 268, // cache_threshold - S_cache_max_age = 269, // cache_max_age - S_decline_probation_period = 270, // decline_probation_period - S_ddns_send_updates = 271, // ddns_send_updates - S_ddns_override_no_update = 272, // ddns_override_no_update - S_ddns_override_client_update = 273, // ddns_override_client_update - S_ddns_replace_client_name = 274, // ddns_replace_client_name - S_275_22 = 275, // $@22 - S_ddns_replace_client_name_value = 276, // ddns_replace_client_name_value - S_ddns_generated_prefix = 277, // ddns_generated_prefix - S_278_23 = 278, // $@23 - S_ddns_qualifying_suffix = 279, // ddns_qualifying_suffix - S_280_24 = 280, // $@24 - S_ddns_update_on_renew = 281, // ddns_update_on_renew - S_ddns_use_conflict_resolution = 282, // ddns_use_conflict_resolution - S_hostname_char_set = 283, // hostname_char_set - S_284_25 = 284, // $@25 - S_hostname_char_replacement = 285, // hostname_char_replacement - S_286_26 = 286, // $@26 - S_store_extended_info = 287, // store_extended_info - S_statistic_default_sample_count = 288, // statistic_default_sample_count - S_statistic_default_sample_age = 289, // statistic_default_sample_age - S_server_tag = 290, // server_tag - S_291_27 = 291, // $@27 - S_parked_packet_limit = 292, // parked_packet_limit - S_early_global_reservations_lookup = 293, // early_global_reservations_lookup - S_ip_reservations_unique = 294, // ip_reservations_unique - S_reservations_lookup_first = 295, // reservations_lookup_first - S_interfaces_config = 296, // interfaces_config - S_297_28 = 297, // $@28 - S_sub_interfaces6 = 298, // sub_interfaces6 - S_299_29 = 299, // $@29 - S_interfaces_config_params = 300, // interfaces_config_params - S_interfaces_config_param = 301, // interfaces_config_param - S_interfaces_list = 302, // interfaces_list - S_303_30 = 303, // $@30 - S_re_detect = 304, // re_detect - S_service_sockets_require_all = 305, // service_sockets_require_all - S_service_sockets_retry_wait_time = 306, // service_sockets_retry_wait_time - S_service_sockets_max_retries = 307, // service_sockets_max_retries - S_lease_database = 308, // lease_database - S_309_31 = 309, // $@31 - S_hosts_database = 310, // hosts_database - S_311_32 = 311, // $@32 - S_hosts_databases = 312, // hosts_databases - S_313_33 = 313, // $@33 - S_database_list = 314, // database_list - S_not_empty_database_list = 315, // not_empty_database_list - S_database = 316, // database - S_317_34 = 317, // $@34 - S_database_map_params = 318, // database_map_params - S_database_map_param = 319, // database_map_param - S_database_type = 320, // database_type - S_321_35 = 321, // $@35 - S_db_type = 322, // db_type - S_user = 323, // user - S_324_36 = 324, // $@36 - S_password = 325, // password - S_326_37 = 326, // $@37 - S_host = 327, // host - S_328_38 = 328, // $@38 - S_port = 329, // port - S_name = 330, // name - S_331_39 = 331, // $@39 - S_persist = 332, // persist - S_lfc_interval = 333, // lfc_interval - S_readonly = 334, // readonly - S_connect_timeout = 335, // connect_timeout - S_reconnect_wait_time = 336, // reconnect_wait_time - S_on_fail = 337, // on_fail - S_338_40 = 338, // $@40 - S_on_fail_mode = 339, // on_fail_mode - S_max_row_errors = 340, // max_row_errors - S_max_reconnect_tries = 341, // max_reconnect_tries - S_trust_anchor = 342, // trust_anchor - S_343_41 = 343, // $@41 - S_cert_file = 344, // cert_file - S_345_42 = 345, // $@42 - S_key_file = 346, // key_file - S_347_43 = 347, // $@43 - S_cipher_list = 348, // cipher_list - S_349_44 = 349, // $@44 - S_sanity_checks = 350, // sanity_checks - S_351_45 = 351, // $@45 - S_sanity_checks_params = 352, // sanity_checks_params - S_sanity_checks_param = 353, // sanity_checks_param - S_lease_checks = 354, // lease_checks - S_355_46 = 355, // $@46 - S_mac_sources = 356, // mac_sources - S_357_47 = 357, // $@47 - S_mac_sources_list = 358, // mac_sources_list - S_mac_sources_value = 359, // mac_sources_value - S_duid_id = 360, // duid_id - S_string_id = 361, // string_id - S_host_reservation_identifiers = 362, // host_reservation_identifiers - S_363_48 = 363, // $@48 - S_host_reservation_identifiers_list = 364, // host_reservation_identifiers_list - S_host_reservation_identifier = 365, // host_reservation_identifier - S_hw_address_id = 366, // hw_address_id - S_flex_id = 367, // flex_id - S_relay_supplied_options = 368, // relay_supplied_options - S_369_49 = 369, // $@49 - S_dhcp_multi_threading = 370, // dhcp_multi_threading - S_371_50 = 371, // $@50 - S_multi_threading_params = 372, // multi_threading_params - S_multi_threading_param = 373, // multi_threading_param - S_enable_multi_threading = 374, // enable_multi_threading - S_thread_pool_size = 375, // thread_pool_size - S_packet_queue_size = 376, // packet_queue_size - S_hooks_libraries = 377, // hooks_libraries - S_378_51 = 378, // $@51 - S_hooks_libraries_list = 379, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 380, // not_empty_hooks_libraries_list - S_hooks_library = 381, // hooks_library - S_382_52 = 382, // $@52 - S_sub_hooks_library = 383, // sub_hooks_library - S_384_53 = 384, // $@53 - S_hooks_params = 385, // hooks_params - S_hooks_param = 386, // hooks_param - S_library = 387, // library - S_388_54 = 388, // $@54 - S_parameters = 389, // parameters - S_390_55 = 390, // $@55 - S_expired_leases_processing = 391, // expired_leases_processing - S_392_56 = 392, // $@56 - S_expired_leases_params = 393, // expired_leases_params - S_expired_leases_param = 394, // expired_leases_param - S_reclaim_timer_wait_time = 395, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 396, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 397, // hold_reclaimed_time - S_max_reclaim_leases = 398, // max_reclaim_leases - S_max_reclaim_time = 399, // max_reclaim_time - S_unwarned_reclaim_cycles = 400, // unwarned_reclaim_cycles - S_subnet6_list = 401, // subnet6_list - S_402_57 = 402, // $@57 - S_subnet6_list_content = 403, // subnet6_list_content - S_not_empty_subnet6_list = 404, // not_empty_subnet6_list - S_subnet6 = 405, // subnet6 - S_406_58 = 406, // $@58 - S_sub_subnet6 = 407, // sub_subnet6 - S_408_59 = 408, // $@59 - S_subnet6_params = 409, // subnet6_params - S_subnet6_param = 410, // subnet6_param - S_subnet = 411, // subnet - S_412_60 = 412, // $@60 - S_interface = 413, // interface - S_414_61 = 414, // $@61 - S_interface_id = 415, // interface_id - S_416_62 = 416, // $@62 - S_client_class = 417, // client_class - S_418_63 = 418, // $@63 - S_require_client_classes = 419, // require_client_classes - S_420_64 = 420, // $@64 - S_reservations_global = 421, // reservations_global - S_reservations_in_subnet = 422, // reservations_in_subnet - S_reservations_out_of_pool = 423, // reservations_out_of_pool - S_reservation_mode = 424, // reservation_mode - S_425_65 = 425, // $@65 - S_hr_mode = 426, // hr_mode - S_id = 427, // id - S_rapid_commit = 428, // rapid_commit - S_shared_networks = 429, // shared_networks - S_430_66 = 430, // $@66 - S_shared_networks_content = 431, // shared_networks_content - S_shared_networks_list = 432, // shared_networks_list - S_shared_network = 433, // shared_network - S_434_67 = 434, // $@67 - S_shared_network_params = 435, // shared_network_params - S_shared_network_param = 436, // shared_network_param - S_option_def_list = 437, // option_def_list - S_438_68 = 438, // $@68 - S_sub_option_def_list = 439, // sub_option_def_list - S_440_69 = 440, // $@69 - S_option_def_list_content = 441, // option_def_list_content - S_not_empty_option_def_list = 442, // not_empty_option_def_list - S_option_def_entry = 443, // option_def_entry - S_444_70 = 444, // $@70 - S_sub_option_def = 445, // sub_option_def - S_446_71 = 446, // $@71 - S_option_def_params = 447, // option_def_params - S_not_empty_option_def_params = 448, // not_empty_option_def_params - S_option_def_param = 449, // option_def_param - S_option_def_name = 450, // option_def_name - S_code = 451, // code - S_option_def_code = 452, // option_def_code - S_option_def_type = 453, // option_def_type - S_454_72 = 454, // $@72 - S_option_def_record_types = 455, // option_def_record_types - S_456_73 = 456, // $@73 - S_space = 457, // space - S_458_74 = 458, // $@74 - S_option_def_space = 459, // option_def_space - S_option_def_encapsulate = 460, // option_def_encapsulate - S_461_75 = 461, // $@75 - S_option_def_array = 462, // option_def_array - S_option_data_list = 463, // option_data_list - S_464_76 = 464, // $@76 - S_option_data_list_content = 465, // option_data_list_content - S_not_empty_option_data_list = 466, // not_empty_option_data_list - S_option_data_entry = 467, // option_data_entry - S_468_77 = 468, // $@77 - S_sub_option_data = 469, // sub_option_data - S_470_78 = 470, // $@78 - S_option_data_params = 471, // option_data_params - S_not_empty_option_data_params = 472, // not_empty_option_data_params - S_option_data_param = 473, // option_data_param - S_option_data_name = 474, // option_data_name - S_option_data_data = 475, // option_data_data - S_476_79 = 476, // $@79 - S_option_data_code = 477, // option_data_code - S_option_data_space = 478, // option_data_space - S_option_data_csv_format = 479, // option_data_csv_format - S_option_data_always_send = 480, // option_data_always_send - S_pools_list = 481, // pools_list - S_482_80 = 482, // $@80 - S_pools_list_content = 483, // pools_list_content - S_not_empty_pools_list = 484, // not_empty_pools_list - S_pool_list_entry = 485, // pool_list_entry - S_486_81 = 486, // $@81 - S_sub_pool6 = 487, // sub_pool6 - S_488_82 = 488, // $@82 - S_pool_params = 489, // pool_params - S_pool_param = 490, // pool_param - S_pool_entry = 491, // pool_entry - S_492_83 = 492, // $@83 - S_user_context = 493, // user_context - S_494_84 = 494, // $@84 - S_comment = 495, // comment - S_496_85 = 496, // $@85 - S_pd_pools_list = 497, // pd_pools_list - S_498_86 = 498, // $@86 - S_pd_pools_list_content = 499, // pd_pools_list_content - S_not_empty_pd_pools_list = 500, // not_empty_pd_pools_list - S_pd_pool_entry = 501, // pd_pool_entry - S_502_87 = 502, // $@87 - S_sub_pd_pool = 503, // sub_pd_pool - S_504_88 = 504, // $@88 - S_pd_pool_params = 505, // pd_pool_params - S_pd_pool_param = 506, // pd_pool_param - S_pd_prefix = 507, // pd_prefix - S_508_89 = 508, // $@89 - S_pd_prefix_len = 509, // pd_prefix_len - S_excluded_prefix = 510, // excluded_prefix - S_511_90 = 511, // $@90 - S_excluded_prefix_len = 512, // excluded_prefix_len - S_pd_delegated_len = 513, // pd_delegated_len - S_reservations = 514, // reservations - S_515_91 = 515, // $@91 - S_reservations_list = 516, // reservations_list - S_not_empty_reservations_list = 517, // not_empty_reservations_list - S_reservation = 518, // reservation - S_519_92 = 519, // $@92 - S_sub_reservation = 520, // sub_reservation - S_521_93 = 521, // $@93 - S_reservation_params = 522, // reservation_params - S_not_empty_reservation_params = 523, // not_empty_reservation_params - S_reservation_param = 524, // reservation_param - S_ip_addresses = 525, // ip_addresses - S_526_94 = 526, // $@94 - S_prefixes = 527, // prefixes - S_528_95 = 528, // $@95 - S_duid = 529, // duid - S_530_96 = 530, // $@96 - S_hw_address = 531, // hw_address - S_532_97 = 532, // $@97 - S_hostname = 533, // hostname - S_534_98 = 534, // $@98 - S_flex_id_value = 535, // flex_id_value - S_536_99 = 536, // $@99 - S_reservation_client_classes = 537, // reservation_client_classes - S_538_100 = 538, // $@100 - S_relay = 539, // relay - S_540_101 = 540, // $@101 - S_relay_map = 541, // relay_map - S_ip_address = 542, // ip_address - S_543_102 = 543, // $@102 - S_client_classes = 544, // client_classes - S_545_103 = 545, // $@103 - S_client_classes_list = 546, // client_classes_list - S_client_class_entry = 547, // client_class_entry - S_548_104 = 548, // $@104 - S_client_class_params = 549, // client_class_params - S_not_empty_client_class_params = 550, // not_empty_client_class_params - S_client_class_param = 551, // client_class_param - S_client_class_name = 552, // client_class_name - S_client_class_test = 553, // client_class_test - S_554_105 = 554, // $@105 - S_only_if_required = 555, // only_if_required - S_server_id = 556, // server_id - S_557_106 = 557, // $@106 - S_server_id_params = 558, // server_id_params - S_server_id_param = 559, // server_id_param - S_server_id_type = 560, // server_id_type - S_561_107 = 561, // $@107 - S_duid_type = 562, // duid_type - S_htype = 563, // htype - S_identifier = 564, // identifier - S_565_108 = 565, // $@108 - S_time = 566, // time - S_enterprise_id = 567, // enterprise_id - S_dhcp4o6_port = 568, // dhcp4o6_port - S_control_socket = 569, // control_socket - S_570_109 = 570, // $@109 - S_control_socket_params = 571, // control_socket_params - S_control_socket_param = 572, // control_socket_param - S_socket_type = 573, // socket_type - S_574_110 = 574, // $@110 - S_socket_name = 575, // socket_name - S_576_111 = 576, // $@111 - S_dhcp_queue_control = 577, // dhcp_queue_control - S_578_112 = 578, // $@112 - S_queue_control_params = 579, // queue_control_params - S_queue_control_param = 580, // queue_control_param - S_enable_queue = 581, // enable_queue - S_queue_type = 582, // queue_type - S_583_113 = 583, // $@113 - S_capacity = 584, // capacity - S_arbitrary_map_entry = 585, // arbitrary_map_entry - S_586_114 = 586, // $@114 - S_dhcp_ddns = 587, // dhcp_ddns - S_588_115 = 588, // $@115 - S_sub_dhcp_ddns = 589, // sub_dhcp_ddns - S_590_116 = 590, // $@116 - S_dhcp_ddns_params = 591, // dhcp_ddns_params - S_dhcp_ddns_param = 592, // dhcp_ddns_param - S_enable_updates = 593, // enable_updates - S_dep_qualifying_suffix = 594, // dep_qualifying_suffix - S_595_117 = 595, // $@117 - S_server_ip = 596, // server_ip - S_597_118 = 597, // $@118 - S_server_port = 598, // server_port - S_sender_ip = 599, // sender_ip - S_600_119 = 600, // $@119 - S_sender_port = 601, // sender_port - S_max_queue_size = 602, // max_queue_size - S_ncr_protocol = 603, // ncr_protocol - S_604_120 = 604, // $@120 - S_ncr_protocol_value = 605, // ncr_protocol_value - S_ncr_format = 606, // ncr_format - S_607_121 = 607, // $@121 - S_dep_override_no_update = 608, // dep_override_no_update - S_dep_override_client_update = 609, // dep_override_client_update - S_dep_replace_client_name = 610, // dep_replace_client_name - S_611_122 = 611, // $@122 - S_dep_generated_prefix = 612, // dep_generated_prefix - S_613_123 = 613, // $@123 - S_dep_hostname_char_set = 614, // dep_hostname_char_set - S_615_124 = 615, // $@124 - S_dep_hostname_char_replacement = 616, // dep_hostname_char_replacement - S_617_125 = 617, // $@125 - S_config_control = 618, // config_control - S_619_126 = 619, // $@126 - S_sub_config_control = 620, // sub_config_control - S_621_127 = 621, // $@127 - S_config_control_params = 622, // config_control_params - S_config_control_param = 623, // config_control_param - S_config_databases = 624, // config_databases - S_625_128 = 625, // $@128 - S_config_fetch_wait_time = 626, // config_fetch_wait_time - S_loggers = 627, // loggers - S_628_129 = 628, // $@129 - S_loggers_entries = 629, // loggers_entries - S_logger_entry = 630, // logger_entry - S_631_130 = 631, // $@130 - S_logger_params = 632, // logger_params - S_logger_param = 633, // logger_param - S_debuglevel = 634, // debuglevel - S_severity = 635, // severity - S_636_131 = 636, // $@131 - S_output_options_list = 637, // output_options_list - S_638_132 = 638, // $@132 - S_output_options_list_content = 639, // output_options_list_content - S_output_entry = 640, // output_entry - S_641_133 = 641, // $@133 - S_output_params_list = 642, // output_params_list - S_output_params = 643, // output_params - S_output = 644, // output - S_645_134 = 645, // $@134 - S_flush = 646, // flush - S_maxsize = 647, // maxsize - S_maxver = 648, // maxver - S_pattern = 649, // pattern - S_650_135 = 650, // $@135 - S_compatibility = 651, // compatibility - S_652_136 = 652, // $@136 - S_compatibility_params = 653, // compatibility_params - S_compatibility_param = 654, // compatibility_param - S_lenient_option_parsing = 655 // lenient_option_parsing + S_READ_TIMEOUT = 36, // "read-timeout" + S_WRITE_TIMEOUT = 37, // "write-timeout" + S_TCP_USER_TIMEOUT = 38, // "tcp-user-timeout" + S_MAX_RECONNECT_TRIES = 39, // "max-reconnect-tries" + S_RECONNECT_WAIT_TIME = 40, // "reconnect-wait-time" + S_ON_FAIL = 41, // "on-fail" + S_STOP_RETRY_EXIT = 42, // "stop-retry-exit" + S_SERVE_RETRY_EXIT = 43, // "serve-retry-exit" + S_SERVE_RETRY_CONTINUE = 44, // "serve-retry-continue" + S_MAX_ROW_ERRORS = 45, // "max-row-errors" + S_TRUST_ANCHOR = 46, // "trust-anchor" + S_CERT_FILE = 47, // "cert-file" + S_KEY_FILE = 48, // "key-file" + S_CIPHER_LIST = 49, // "cipher-list" + S_PREFERRED_LIFETIME = 50, // "preferred-lifetime" + S_MIN_PREFERRED_LIFETIME = 51, // "min-preferred-lifetime" + S_MAX_PREFERRED_LIFETIME = 52, // "max-preferred-lifetime" + S_VALID_LIFETIME = 53, // "valid-lifetime" + S_MIN_VALID_LIFETIME = 54, // "min-valid-lifetime" + S_MAX_VALID_LIFETIME = 55, // "max-valid-lifetime" + S_RENEW_TIMER = 56, // "renew-timer" + S_REBIND_TIMER = 57, // "rebind-timer" + S_CALCULATE_TEE_TIMES = 58, // "calculate-tee-times" + S_T1_PERCENT = 59, // "t1-percent" + S_T2_PERCENT = 60, // "t2-percent" + S_CACHE_THRESHOLD = 61, // "cache-threshold" + S_CACHE_MAX_AGE = 62, // "cache-max-age" + S_DECLINE_PROBATION_PERIOD = 63, // "decline-probation-period" + S_SERVER_TAG = 64, // "server-tag" + S_STATISTIC_DEFAULT_SAMPLE_COUNT = 65, // "statistic-default-sample-count" + S_STATISTIC_DEFAULT_SAMPLE_AGE = 66, // "statistic-default-sample-age" + S_DDNS_SEND_UPDATES = 67, // "ddns-send-updates" + S_DDNS_OVERRIDE_NO_UPDATE = 68, // "ddns-override-no-update" + S_DDNS_OVERRIDE_CLIENT_UPDATE = 69, // "ddns-override-client-update" + S_DDNS_REPLACE_CLIENT_NAME = 70, // "ddns-replace-client-name" + S_DDNS_GENERATED_PREFIX = 71, // "ddns-generated-prefix" + S_DDNS_QUALIFYING_SUFFIX = 72, // "ddns-qualifying-suffix" + S_DDNS_UPDATE_ON_RENEW = 73, // "ddns-update-on-renew" + S_DDNS_USE_CONFLICT_RESOLUTION = 74, // "ddns-use-conflict-resolution" + S_STORE_EXTENDED_INFO = 75, // "store-extended-info" + S_SUBNET6 = 76, // "subnet6" + S_OPTION_DEF = 77, // "option-def" + S_OPTION_DATA = 78, // "option-data" + S_NAME = 79, // "name" + S_DATA = 80, // "data" + S_CODE = 81, // "code" + S_SPACE = 82, // "space" + S_CSV_FORMAT = 83, // "csv-format" + S_ALWAYS_SEND = 84, // "always-send" + S_RECORD_TYPES = 85, // "record-types" + S_ENCAPSULATE = 86, // "encapsulate" + S_ARRAY = 87, // "array" + S_PARKED_PACKET_LIMIT = 88, // "parked-packet-limit" + S_SHARED_NETWORKS = 89, // "shared-networks" + S_POOLS = 90, // "pools" + S_POOL = 91, // "pool" + S_PD_POOLS = 92, // "pd-pools" + S_PREFIX = 93, // "prefix" + S_PREFIX_LEN = 94, // "prefix-len" + S_EXCLUDED_PREFIX = 95, // "excluded-prefix" + S_EXCLUDED_PREFIX_LEN = 96, // "excluded-prefix-len" + S_DELEGATED_LEN = 97, // "delegated-len" + S_USER_CONTEXT = 98, // "user-context" + S_COMMENT = 99, // "comment" + S_SUBNET = 100, // "subnet" + S_INTERFACE = 101, // "interface" + S_INTERFACE_ID = 102, // "interface-id" + S_ID = 103, // "id" + S_RAPID_COMMIT = 104, // "rapid-commit" + S_RESERVATION_MODE = 105, // "reservation-mode" + S_DISABLED = 106, // "disabled" + S_OUT_OF_POOL = 107, // "out-of-pool" + S_GLOBAL = 108, // "global" + S_ALL = 109, // "all" + S_RESERVATIONS_GLOBAL = 110, // "reservations-global" + S_RESERVATIONS_IN_SUBNET = 111, // "reservations-in-subnet" + S_RESERVATIONS_OUT_OF_POOL = 112, // "reservations-out-of-pool" + S_MAC_SOURCES = 113, // "mac-sources" + S_RELAY_SUPPLIED_OPTIONS = 114, // "relay-supplied-options" + S_HOST_RESERVATION_IDENTIFIERS = 115, // "host-reservation-identifiers" + S_SANITY_CHECKS = 116, // "sanity-checks" + S_LEASE_CHECKS = 117, // "lease-checks" + S_CLIENT_CLASSES = 118, // "client-classes" + S_REQUIRE_CLIENT_CLASSES = 119, // "require-client-classes" + S_TEST = 120, // "test" + S_ONLY_IF_REQUIRED = 121, // "only-if-required" + S_CLIENT_CLASS = 122, // "client-class" + S_RESERVATIONS = 123, // "reservations" + S_IP_ADDRESSES = 124, // "ip-addresses" + S_PREFIXES = 125, // "prefixes" + S_DUID = 126, // "duid" + S_HW_ADDRESS = 127, // "hw-address" + S_HOSTNAME = 128, // "hostname" + S_FLEX_ID = 129, // "flex-id" + S_RELAY = 130, // "relay" + S_IP_ADDRESS = 131, // "ip-address" + S_HOOKS_LIBRARIES = 132, // "hooks-libraries" + S_LIBRARY = 133, // "library" + S_PARAMETERS = 134, // "parameters" + S_EXPIRED_LEASES_PROCESSING = 135, // "expired-leases-processing" + S_RECLAIM_TIMER_WAIT_TIME = 136, // "reclaim-timer-wait-time" + S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 137, // "flush-reclaimed-timer-wait-time" + S_HOLD_RECLAIMED_TIME = 138, // "hold-reclaimed-time" + S_MAX_RECLAIM_LEASES = 139, // "max-reclaim-leases" + S_MAX_RECLAIM_TIME = 140, // "max-reclaim-time" + S_UNWARNED_RECLAIM_CYCLES = 141, // "unwarned-reclaim-cycles" + S_SERVER_ID = 142, // "server-id" + S_LLT = 143, // "LLT" + S_EN = 144, // "EN" + S_LL = 145, // "LL" + S_IDENTIFIER = 146, // "identifier" + S_HTYPE = 147, // "htype" + S_TIME = 148, // "time" + S_ENTERPRISE_ID = 149, // "enterprise-id" + S_DHCP4O6_PORT = 150, // "dhcp4o6-port" + S_DHCP_MULTI_THREADING = 151, // "multi-threading" + S_ENABLE_MULTI_THREADING = 152, // "enable-multi-threading" + S_THREAD_POOL_SIZE = 153, // "thread-pool-size" + S_PACKET_QUEUE_SIZE = 154, // "packet-queue-size" + S_CONTROL_SOCKET = 155, // "control-socket" + S_SOCKET_TYPE = 156, // "socket-type" + S_SOCKET_NAME = 157, // "socket-name" + S_DHCP_QUEUE_CONTROL = 158, // "dhcp-queue-control" + S_ENABLE_QUEUE = 159, // "enable-queue" + S_QUEUE_TYPE = 160, // "queue-type" + S_CAPACITY = 161, // "capacity" + S_DHCP_DDNS = 162, // "dhcp-ddns" + S_ENABLE_UPDATES = 163, // "enable-updates" + S_QUALIFYING_SUFFIX = 164, // "qualifying-suffix" + S_SERVER_IP = 165, // "server-ip" + S_SERVER_PORT = 166, // "server-port" + S_SENDER_IP = 167, // "sender-ip" + S_SENDER_PORT = 168, // "sender-port" + S_MAX_QUEUE_SIZE = 169, // "max-queue-size" + S_NCR_PROTOCOL = 170, // "ncr-protocol" + S_NCR_FORMAT = 171, // "ncr-format" + S_OVERRIDE_NO_UPDATE = 172, // "override-no-update" + S_OVERRIDE_CLIENT_UPDATE = 173, // "override-client-update" + S_REPLACE_CLIENT_NAME = 174, // "replace-client-name" + S_GENERATED_PREFIX = 175, // "generated-prefix" + S_UDP = 176, // "UDP" + S_TCP = 177, // "TCP" + S_JSON = 178, // "JSON" + S_WHEN_PRESENT = 179, // "when-present" + S_NEVER = 180, // "never" + S_ALWAYS = 181, // "always" + S_WHEN_NOT_PRESENT = 182, // "when-not-present" + S_HOSTNAME_CHAR_SET = 183, // "hostname-char-set" + S_HOSTNAME_CHAR_REPLACEMENT = 184, // "hostname-char-replacement" + S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 185, // "early-global-reservations-lookup" + S_IP_RESERVATIONS_UNIQUE = 186, // "ip-reservations-unique" + S_RESERVATIONS_LOOKUP_FIRST = 187, // "reservations-lookup-first" + S_LOGGERS = 188, // "loggers" + S_OUTPUT_OPTIONS = 189, // "output_options" + S_OUTPUT = 190, // "output" + S_DEBUGLEVEL = 191, // "debuglevel" + S_SEVERITY = 192, // "severity" + S_FLUSH = 193, // "flush" + S_MAXSIZE = 194, // "maxsize" + S_MAXVER = 195, // "maxver" + S_PATTERN = 196, // "pattern" + S_COMPATIBILITY = 197, // "compatibility" + S_LENIENT_OPTION_PARSING = 198, // "lenient-option-parsing" + S_TOPLEVEL_JSON = 199, // TOPLEVEL_JSON + S_TOPLEVEL_DHCP6 = 200, // TOPLEVEL_DHCP6 + S_SUB_DHCP6 = 201, // SUB_DHCP6 + S_SUB_INTERFACES6 = 202, // SUB_INTERFACES6 + S_SUB_SUBNET6 = 203, // SUB_SUBNET6 + S_SUB_POOL6 = 204, // SUB_POOL6 + S_SUB_PD_POOL = 205, // SUB_PD_POOL + S_SUB_RESERVATION = 206, // SUB_RESERVATION + S_SUB_OPTION_DEFS = 207, // SUB_OPTION_DEFS + S_SUB_OPTION_DEF = 208, // SUB_OPTION_DEF + S_SUB_OPTION_DATA = 209, // SUB_OPTION_DATA + S_SUB_HOOKS_LIBRARY = 210, // SUB_HOOKS_LIBRARY + S_SUB_DHCP_DDNS = 211, // SUB_DHCP_DDNS + S_SUB_CONFIG_CONTROL = 212, // SUB_CONFIG_CONTROL + S_STRING = 213, // "constant string" + S_INTEGER = 214, // "integer" + S_FLOAT = 215, // "floating point" + S_BOOLEAN = 216, // "boolean" + S_YYACCEPT = 217, // $accept + S_start = 218, // start + S_219_1 = 219, // $@1 + S_220_2 = 220, // $@2 + S_221_3 = 221, // $@3 + S_222_4 = 222, // $@4 + S_223_5 = 223, // $@5 + S_224_6 = 224, // $@6 + S_225_7 = 225, // $@7 + S_226_8 = 226, // $@8 + S_227_9 = 227, // $@9 + S_228_10 = 228, // $@10 + S_229_11 = 229, // $@11 + S_230_12 = 230, // $@12 + S_231_13 = 231, // $@13 + S_232_14 = 232, // $@14 + S_value = 233, // value + S_sub_json = 234, // sub_json + S_map2 = 235, // map2 + S_236_15 = 236, // $@15 + S_map_value = 237, // map_value + S_map_content = 238, // map_content + S_not_empty_map = 239, // not_empty_map + S_list_generic = 240, // list_generic + S_241_16 = 241, // $@16 + S_list_content = 242, // list_content + S_not_empty_list = 243, // not_empty_list + S_list_strings = 244, // list_strings + S_245_17 = 245, // $@17 + S_list_strings_content = 246, // list_strings_content + S_not_empty_list_strings = 247, // not_empty_list_strings + S_unknown_map_entry = 248, // unknown_map_entry + S_syntax_map = 249, // syntax_map + S_250_18 = 250, // $@18 + S_global_object = 251, // global_object + S_252_19 = 252, // $@19 + S_global_object_comma = 253, // global_object_comma + S_sub_dhcp6 = 254, // sub_dhcp6 + S_255_20 = 255, // $@20 + S_global_params = 256, // global_params + S_global_param = 257, // global_param + S_data_directory = 258, // data_directory + S_259_21 = 259, // $@21 + S_preferred_lifetime = 260, // preferred_lifetime + S_min_preferred_lifetime = 261, // min_preferred_lifetime + S_max_preferred_lifetime = 262, // max_preferred_lifetime + S_valid_lifetime = 263, // valid_lifetime + S_min_valid_lifetime = 264, // min_valid_lifetime + S_max_valid_lifetime = 265, // max_valid_lifetime + S_renew_timer = 266, // renew_timer + S_rebind_timer = 267, // rebind_timer + S_calculate_tee_times = 268, // calculate_tee_times + S_t1_percent = 269, // t1_percent + S_t2_percent = 270, // t2_percent + S_cache_threshold = 271, // cache_threshold + S_cache_max_age = 272, // cache_max_age + S_decline_probation_period = 273, // decline_probation_period + S_ddns_send_updates = 274, // ddns_send_updates + S_ddns_override_no_update = 275, // ddns_override_no_update + S_ddns_override_client_update = 276, // ddns_override_client_update + S_ddns_replace_client_name = 277, // ddns_replace_client_name + S_278_22 = 278, // $@22 + S_ddns_replace_client_name_value = 279, // ddns_replace_client_name_value + S_ddns_generated_prefix = 280, // ddns_generated_prefix + S_281_23 = 281, // $@23 + S_ddns_qualifying_suffix = 282, // ddns_qualifying_suffix + S_283_24 = 283, // $@24 + S_ddns_update_on_renew = 284, // ddns_update_on_renew + S_ddns_use_conflict_resolution = 285, // ddns_use_conflict_resolution + S_hostname_char_set = 286, // hostname_char_set + S_287_25 = 287, // $@25 + S_hostname_char_replacement = 288, // hostname_char_replacement + S_289_26 = 289, // $@26 + S_store_extended_info = 290, // store_extended_info + S_statistic_default_sample_count = 291, // statistic_default_sample_count + S_statistic_default_sample_age = 292, // statistic_default_sample_age + S_server_tag = 293, // server_tag + S_294_27 = 294, // $@27 + S_parked_packet_limit = 295, // parked_packet_limit + S_early_global_reservations_lookup = 296, // early_global_reservations_lookup + S_ip_reservations_unique = 297, // ip_reservations_unique + S_reservations_lookup_first = 298, // reservations_lookup_first + S_interfaces_config = 299, // interfaces_config + S_300_28 = 300, // $@28 + S_sub_interfaces6 = 301, // sub_interfaces6 + S_302_29 = 302, // $@29 + S_interfaces_config_params = 303, // interfaces_config_params + S_interfaces_config_param = 304, // interfaces_config_param + S_interfaces_list = 305, // interfaces_list + S_306_30 = 306, // $@30 + S_re_detect = 307, // re_detect + S_service_sockets_require_all = 308, // service_sockets_require_all + S_service_sockets_retry_wait_time = 309, // service_sockets_retry_wait_time + S_service_sockets_max_retries = 310, // service_sockets_max_retries + S_lease_database = 311, // lease_database + S_312_31 = 312, // $@31 + S_hosts_database = 313, // hosts_database + S_314_32 = 314, // $@32 + S_hosts_databases = 315, // hosts_databases + S_316_33 = 316, // $@33 + S_database_list = 317, // database_list + S_not_empty_database_list = 318, // not_empty_database_list + S_database = 319, // database + S_320_34 = 320, // $@34 + S_database_map_params = 321, // database_map_params + S_database_map_param = 322, // database_map_param + S_database_type = 323, // database_type + S_324_35 = 324, // $@35 + S_db_type = 325, // db_type + S_user = 326, // user + S_327_36 = 327, // $@36 + S_password = 328, // password + S_329_37 = 329, // $@37 + S_host = 330, // host + S_331_38 = 331, // $@38 + S_port = 332, // port + S_name = 333, // name + S_334_39 = 334, // $@39 + S_persist = 335, // persist + S_lfc_interval = 336, // lfc_interval + S_readonly = 337, // readonly + S_connect_timeout = 338, // connect_timeout + S_read_timeout = 339, // read_timeout + S_write_timeout = 340, // write_timeout + S_tcp_user_timeout = 341, // tcp_user_timeout + S_reconnect_wait_time = 342, // reconnect_wait_time + S_on_fail = 343, // on_fail + S_344_40 = 344, // $@40 + S_on_fail_mode = 345, // on_fail_mode + S_max_row_errors = 346, // max_row_errors + S_max_reconnect_tries = 347, // max_reconnect_tries + S_trust_anchor = 348, // trust_anchor + S_349_41 = 349, // $@41 + S_cert_file = 350, // cert_file + S_351_42 = 351, // $@42 + S_key_file = 352, // key_file + S_353_43 = 353, // $@43 + S_cipher_list = 354, // cipher_list + S_355_44 = 355, // $@44 + S_sanity_checks = 356, // sanity_checks + S_357_45 = 357, // $@45 + S_sanity_checks_params = 358, // sanity_checks_params + S_sanity_checks_param = 359, // sanity_checks_param + S_lease_checks = 360, // lease_checks + S_361_46 = 361, // $@46 + S_mac_sources = 362, // mac_sources + S_363_47 = 363, // $@47 + S_mac_sources_list = 364, // mac_sources_list + S_mac_sources_value = 365, // mac_sources_value + S_duid_id = 366, // duid_id + S_string_id = 367, // string_id + S_host_reservation_identifiers = 368, // host_reservation_identifiers + S_369_48 = 369, // $@48 + S_host_reservation_identifiers_list = 370, // host_reservation_identifiers_list + S_host_reservation_identifier = 371, // host_reservation_identifier + S_hw_address_id = 372, // hw_address_id + S_flex_id = 373, // flex_id + S_relay_supplied_options = 374, // relay_supplied_options + S_375_49 = 375, // $@49 + S_dhcp_multi_threading = 376, // dhcp_multi_threading + S_377_50 = 377, // $@50 + S_multi_threading_params = 378, // multi_threading_params + S_multi_threading_param = 379, // multi_threading_param + S_enable_multi_threading = 380, // enable_multi_threading + S_thread_pool_size = 381, // thread_pool_size + S_packet_queue_size = 382, // packet_queue_size + S_hooks_libraries = 383, // hooks_libraries + S_384_51 = 384, // $@51 + S_hooks_libraries_list = 385, // hooks_libraries_list + S_not_empty_hooks_libraries_list = 386, // not_empty_hooks_libraries_list + S_hooks_library = 387, // hooks_library + S_388_52 = 388, // $@52 + S_sub_hooks_library = 389, // sub_hooks_library + S_390_53 = 390, // $@53 + S_hooks_params = 391, // hooks_params + S_hooks_param = 392, // hooks_param + S_library = 393, // library + S_394_54 = 394, // $@54 + S_parameters = 395, // parameters + S_396_55 = 396, // $@55 + S_expired_leases_processing = 397, // expired_leases_processing + S_398_56 = 398, // $@56 + S_expired_leases_params = 399, // expired_leases_params + S_expired_leases_param = 400, // expired_leases_param + S_reclaim_timer_wait_time = 401, // reclaim_timer_wait_time + S_flush_reclaimed_timer_wait_time = 402, // flush_reclaimed_timer_wait_time + S_hold_reclaimed_time = 403, // hold_reclaimed_time + S_max_reclaim_leases = 404, // max_reclaim_leases + S_max_reclaim_time = 405, // max_reclaim_time + S_unwarned_reclaim_cycles = 406, // unwarned_reclaim_cycles + S_subnet6_list = 407, // subnet6_list + S_408_57 = 408, // $@57 + S_subnet6_list_content = 409, // subnet6_list_content + S_not_empty_subnet6_list = 410, // not_empty_subnet6_list + S_subnet6 = 411, // subnet6 + S_412_58 = 412, // $@58 + S_sub_subnet6 = 413, // sub_subnet6 + S_414_59 = 414, // $@59 + S_subnet6_params = 415, // subnet6_params + S_subnet6_param = 416, // subnet6_param + S_subnet = 417, // subnet + S_418_60 = 418, // $@60 + S_interface = 419, // interface + S_420_61 = 420, // $@61 + S_interface_id = 421, // interface_id + S_422_62 = 422, // $@62 + S_client_class = 423, // client_class + S_424_63 = 424, // $@63 + S_require_client_classes = 425, // require_client_classes + S_426_64 = 426, // $@64 + S_reservations_global = 427, // reservations_global + S_reservations_in_subnet = 428, // reservations_in_subnet + S_reservations_out_of_pool = 429, // reservations_out_of_pool + S_reservation_mode = 430, // reservation_mode + S_431_65 = 431, // $@65 + S_hr_mode = 432, // hr_mode + S_id = 433, // id + S_rapid_commit = 434, // rapid_commit + S_shared_networks = 435, // shared_networks + S_436_66 = 436, // $@66 + S_shared_networks_content = 437, // shared_networks_content + S_shared_networks_list = 438, // shared_networks_list + S_shared_network = 439, // shared_network + S_440_67 = 440, // $@67 + S_shared_network_params = 441, // shared_network_params + S_shared_network_param = 442, // shared_network_param + S_option_def_list = 443, // option_def_list + S_444_68 = 444, // $@68 + S_sub_option_def_list = 445, // sub_option_def_list + S_446_69 = 446, // $@69 + S_option_def_list_content = 447, // option_def_list_content + S_not_empty_option_def_list = 448, // not_empty_option_def_list + S_option_def_entry = 449, // option_def_entry + S_450_70 = 450, // $@70 + S_sub_option_def = 451, // sub_option_def + S_452_71 = 452, // $@71 + S_option_def_params = 453, // option_def_params + S_not_empty_option_def_params = 454, // not_empty_option_def_params + S_option_def_param = 455, // option_def_param + S_option_def_name = 456, // option_def_name + S_code = 457, // code + S_option_def_code = 458, // option_def_code + S_option_def_type = 459, // option_def_type + S_460_72 = 460, // $@72 + S_option_def_record_types = 461, // option_def_record_types + S_462_73 = 462, // $@73 + S_space = 463, // space + S_464_74 = 464, // $@74 + S_option_def_space = 465, // option_def_space + S_option_def_encapsulate = 466, // option_def_encapsulate + S_467_75 = 467, // $@75 + S_option_def_array = 468, // option_def_array + S_option_data_list = 469, // option_data_list + S_470_76 = 470, // $@76 + S_option_data_list_content = 471, // option_data_list_content + S_not_empty_option_data_list = 472, // not_empty_option_data_list + S_option_data_entry = 473, // option_data_entry + S_474_77 = 474, // $@77 + S_sub_option_data = 475, // sub_option_data + S_476_78 = 476, // $@78 + S_option_data_params = 477, // option_data_params + S_not_empty_option_data_params = 478, // not_empty_option_data_params + S_option_data_param = 479, // option_data_param + S_option_data_name = 480, // option_data_name + S_option_data_data = 481, // option_data_data + S_482_79 = 482, // $@79 + S_option_data_code = 483, // option_data_code + S_option_data_space = 484, // option_data_space + S_option_data_csv_format = 485, // option_data_csv_format + S_option_data_always_send = 486, // option_data_always_send + S_pools_list = 487, // pools_list + S_488_80 = 488, // $@80 + S_pools_list_content = 489, // pools_list_content + S_not_empty_pools_list = 490, // not_empty_pools_list + S_pool_list_entry = 491, // pool_list_entry + S_492_81 = 492, // $@81 + S_sub_pool6 = 493, // sub_pool6 + S_494_82 = 494, // $@82 + S_pool_params = 495, // pool_params + S_pool_param = 496, // pool_param + S_pool_entry = 497, // pool_entry + S_498_83 = 498, // $@83 + S_user_context = 499, // user_context + S_500_84 = 500, // $@84 + S_comment = 501, // comment + S_502_85 = 502, // $@85 + S_pd_pools_list = 503, // pd_pools_list + S_504_86 = 504, // $@86 + S_pd_pools_list_content = 505, // pd_pools_list_content + S_not_empty_pd_pools_list = 506, // not_empty_pd_pools_list + S_pd_pool_entry = 507, // pd_pool_entry + S_508_87 = 508, // $@87 + S_sub_pd_pool = 509, // sub_pd_pool + S_510_88 = 510, // $@88 + S_pd_pool_params = 511, // pd_pool_params + S_pd_pool_param = 512, // pd_pool_param + S_pd_prefix = 513, // pd_prefix + S_514_89 = 514, // $@89 + S_pd_prefix_len = 515, // pd_prefix_len + S_excluded_prefix = 516, // excluded_prefix + S_517_90 = 517, // $@90 + S_excluded_prefix_len = 518, // excluded_prefix_len + S_pd_delegated_len = 519, // pd_delegated_len + S_reservations = 520, // reservations + S_521_91 = 521, // $@91 + S_reservations_list = 522, // reservations_list + S_not_empty_reservations_list = 523, // not_empty_reservations_list + S_reservation = 524, // reservation + S_525_92 = 525, // $@92 + S_sub_reservation = 526, // sub_reservation + S_527_93 = 527, // $@93 + S_reservation_params = 528, // reservation_params + S_not_empty_reservation_params = 529, // not_empty_reservation_params + S_reservation_param = 530, // reservation_param + S_ip_addresses = 531, // ip_addresses + S_532_94 = 532, // $@94 + S_prefixes = 533, // prefixes + S_534_95 = 534, // $@95 + S_duid = 535, // duid + S_536_96 = 536, // $@96 + S_hw_address = 537, // hw_address + S_538_97 = 538, // $@97 + S_hostname = 539, // hostname + S_540_98 = 540, // $@98 + S_flex_id_value = 541, // flex_id_value + S_542_99 = 542, // $@99 + S_reservation_client_classes = 543, // reservation_client_classes + S_544_100 = 544, // $@100 + S_relay = 545, // relay + S_546_101 = 546, // $@101 + S_relay_map = 547, // relay_map + S_ip_address = 548, // ip_address + S_549_102 = 549, // $@102 + S_client_classes = 550, // client_classes + S_551_103 = 551, // $@103 + S_client_classes_list = 552, // client_classes_list + S_client_class_entry = 553, // client_class_entry + S_554_104 = 554, // $@104 + S_client_class_params = 555, // client_class_params + S_not_empty_client_class_params = 556, // not_empty_client_class_params + S_client_class_param = 557, // client_class_param + S_client_class_name = 558, // client_class_name + S_client_class_test = 559, // client_class_test + S_560_105 = 560, // $@105 + S_only_if_required = 561, // only_if_required + S_server_id = 562, // server_id + S_563_106 = 563, // $@106 + S_server_id_params = 564, // server_id_params + S_server_id_param = 565, // server_id_param + S_server_id_type = 566, // server_id_type + S_567_107 = 567, // $@107 + S_duid_type = 568, // duid_type + S_htype = 569, // htype + S_identifier = 570, // identifier + S_571_108 = 571, // $@108 + S_time = 572, // time + S_enterprise_id = 573, // enterprise_id + S_dhcp4o6_port = 574, // dhcp4o6_port + S_control_socket = 575, // control_socket + S_576_109 = 576, // $@109 + S_control_socket_params = 577, // control_socket_params + S_control_socket_param = 578, // control_socket_param + S_socket_type = 579, // socket_type + S_580_110 = 580, // $@110 + S_socket_name = 581, // socket_name + S_582_111 = 582, // $@111 + S_dhcp_queue_control = 583, // dhcp_queue_control + S_584_112 = 584, // $@112 + S_queue_control_params = 585, // queue_control_params + S_queue_control_param = 586, // queue_control_param + S_enable_queue = 587, // enable_queue + S_queue_type = 588, // queue_type + S_589_113 = 589, // $@113 + S_capacity = 590, // capacity + S_arbitrary_map_entry = 591, // arbitrary_map_entry + S_592_114 = 592, // $@114 + S_dhcp_ddns = 593, // dhcp_ddns + S_594_115 = 594, // $@115 + S_sub_dhcp_ddns = 595, // sub_dhcp_ddns + S_596_116 = 596, // $@116 + S_dhcp_ddns_params = 597, // dhcp_ddns_params + S_dhcp_ddns_param = 598, // dhcp_ddns_param + S_enable_updates = 599, // enable_updates + S_dep_qualifying_suffix = 600, // dep_qualifying_suffix + S_601_117 = 601, // $@117 + S_server_ip = 602, // server_ip + S_603_118 = 603, // $@118 + S_server_port = 604, // server_port + S_sender_ip = 605, // sender_ip + S_606_119 = 606, // $@119 + S_sender_port = 607, // sender_port + S_max_queue_size = 608, // max_queue_size + S_ncr_protocol = 609, // ncr_protocol + S_610_120 = 610, // $@120 + S_ncr_protocol_value = 611, // ncr_protocol_value + S_ncr_format = 612, // ncr_format + S_613_121 = 613, // $@121 + S_dep_override_no_update = 614, // dep_override_no_update + S_dep_override_client_update = 615, // dep_override_client_update + S_dep_replace_client_name = 616, // dep_replace_client_name + S_617_122 = 617, // $@122 + S_dep_generated_prefix = 618, // dep_generated_prefix + S_619_123 = 619, // $@123 + S_dep_hostname_char_set = 620, // dep_hostname_char_set + S_621_124 = 621, // $@124 + S_dep_hostname_char_replacement = 622, // dep_hostname_char_replacement + S_623_125 = 623, // $@125 + S_config_control = 624, // config_control + S_625_126 = 625, // $@126 + S_sub_config_control = 626, // sub_config_control + S_627_127 = 627, // $@127 + S_config_control_params = 628, // config_control_params + S_config_control_param = 629, // config_control_param + S_config_databases = 630, // config_databases + S_631_128 = 631, // $@128 + S_config_fetch_wait_time = 632, // config_fetch_wait_time + S_loggers = 633, // loggers + S_634_129 = 634, // $@129 + S_loggers_entries = 635, // loggers_entries + S_logger_entry = 636, // logger_entry + S_637_130 = 637, // $@130 + S_logger_params = 638, // logger_params + S_logger_param = 639, // logger_param + S_debuglevel = 640, // debuglevel + S_severity = 641, // severity + S_642_131 = 642, // $@131 + S_output_options_list = 643, // output_options_list + S_644_132 = 644, // $@132 + S_output_options_list_content = 645, // output_options_list_content + S_output_entry = 646, // output_entry + S_647_133 = 647, // $@133 + S_output_params_list = 648, // output_params_list + S_output_params = 649, // output_params + S_output = 650, // output + S_651_134 = 651, // $@134 + S_flush = 652, // flush + S_maxsize = 653, // maxsize + S_maxver = 654, // maxver + S_pattern = 655, // pattern + S_656_135 = 656, // $@135 + S_compatibility = 657, // compatibility + S_658_136 = 658, // $@136 + S_compatibility_params = 659, // compatibility_params + S_compatibility_param = 660, // compatibility_param + S_lenient_option_parsing = 661 // lenient_option_parsing }; }; @@ -2327,6 +2336,51 @@ switch (yykind) return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_READ_TIMEOUT (location_type l) + { + return symbol_type (token::TOKEN_READ_TIMEOUT, std::move (l)); + } +#else + static + symbol_type + make_READ_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_READ_TIMEOUT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_WRITE_TIMEOUT (location_type l) + { + return symbol_type (token::TOKEN_WRITE_TIMEOUT, std::move (l)); + } +#else + static + symbol_type + make_WRITE_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_WRITE_TIMEOUT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_TCP_USER_TIMEOUT (location_type l) + { + return symbol_type (token::TOKEN_TCP_USER_TIMEOUT, std::move (l)); + } +#else + static + symbol_type + make_TCP_USER_TIMEOUT (const location_type& l) + { + return symbol_type (token::TOKEN_TCP_USER_TIMEOUT, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -5327,8 +5381,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1327, ///< Last index in yytable_. - yynnts_ = 442, ///< Number of nonterminal symbols. + yylast_ = 1339, ///< Last index in yytable_. + yynnts_ = 445, ///< Number of nonterminal symbols. yyfinal_ = 30 ///< Termination state number. }; @@ -5394,10 +5448,11 @@ switch (yykind) 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213 + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216 }; // Last valid token kind. - const int code_max = 468; + const int code_max = 471; if (t <= 0) return symbol_kind::S_YYEOF; @@ -5568,7 +5623,7 @@ switch (yykind) #line 14 "dhcp6_parser.yy" } } // isc::dhcp -#line 5572 "dhcp6_parser.h" +#line 5627 "dhcp6_parser.h" diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 5de00e1d26..e0609e1def 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -78,6 +78,9 @@ using namespace std; LFC_INTERVAL "lfc-interval" READONLY "readonly" CONNECT_TIMEOUT "connect-timeout" + READ_TIMEOUT "read-timeout" + WRITE_TIMEOUT "write-timeout" + TCP_USER_TIMEOUT "tcp-user-timeout" MAX_RECONNECT_TRIES "max-reconnect-tries" RECONNECT_WAIT_TIME "reconnect-wait-time" ON_FAIL "on-fail" @@ -939,6 +942,9 @@ database_map_param: database_type | lfc_interval | readonly | connect_timeout + | read_timeout + | write_timeout + | tcp_user_timeout | max_reconnect_tries | reconnect_wait_time | on_fail @@ -1029,6 +1035,25 @@ connect_timeout: CONNECT_TIMEOUT COLON INTEGER { ctx.stack_.back()->set("connect-timeout", n); }; +read_timeout: READ_TIMEOUT COLON INTEGER { + ctx.unique("read-timeout", ctx.loc2pos(@1)); + ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("read-timeout", n); +}; + +write_timeout: WRITE_TIMEOUT COLON INTEGER { + ctx.unique("write-timeout", ctx.loc2pos(@1)); + ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("write-timeout", n); +}; + +tcp_user_timeout: TCP_USER_TIMEOUT COLON INTEGER { + ctx.unique("tcp-user-timeout", ctx.loc2pos(@1)); + ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("tcp-user-timeout", n); +}; + + reconnect_wait_time: RECONNECT_WAIT_TIME COLON INTEGER { ctx.unique("reconnect-wait-time", ctx.loc2pos(@1)); ElementPtr n(new IntElement($3, ctx.loc2pos(@3))); diff --git a/src/bin/dhcp6/tests/parser_unittest.cc b/src/bin/dhcp6/tests/parser_unittest.cc index 3d3b39b117..e2f3b13545 100644 --- a/src/bin/dhcp6/tests/parser_unittest.cc +++ b/src/bin/dhcp6/tests/parser_unittest.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,11 @@ namespace test { void compareJSON(ConstElementPtr a, ConstElementPtr b) { ASSERT_TRUE(a); ASSERT_TRUE(b); - EXPECT_EQ(a->str(), b->str()); + EXPECT_EQ(a->str(), b->str()) +#ifdef HAVE_CREATE_UNIFIED_DIFF + << "\nDiff:\n" << generateDiff(prettyPrint(a), prettyPrint(b)) << "\n" +#endif + ; } /// @brief Tests if the input string can be parsed with specific parser diff --git a/src/bin/netconf/tests/parser_unittests.cc b/src/bin/netconf/tests/parser_unittests.cc index b496470b00..b0acbb491d 100644 --- a/src/bin/netconf/tests/parser_unittests.cc +++ b/src/bin/netconf/tests/parser_unittests.cc @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -38,7 +39,11 @@ namespace test { void compareJSON(ConstElementPtr a, ConstElementPtr b) { ASSERT_TRUE(a); ASSERT_TRUE(b); - EXPECT_EQ(a->str(), b->str()); + EXPECT_EQ(a->str(), b->str()) +#ifdef HAVE_CREATE_UNIFIED_DIFF + << "\nDiff:\n" << generateDiff(prettyPrint(a), prettyPrint(b)) << "\n" +#endif + ; } /// @brief Tests if the input string can be parsed with specific parser diff --git a/src/lib/database/database_connection.h b/src/lib/database/database_connection.h index 881bfbac3d..f28f326745 100644 --- a/src/lib/database/database_connection.h +++ b/src/lib/database/database_connection.h @@ -68,6 +68,15 @@ class DbInvalidTimeout : public Exception { isc::Exception(file, line, what) {} }; +/// @brief Invalid port number +/// +/// Thrown when the port number specified for the database connection is invalid. +class DbInvalidPort : public Exception { +public: + DbInvalidPort(const char* file, size_t line, const char* what) : + isc::Exception(file, line, what) {} +}; + /// @brief Invalid 'readonly' value specification. /// /// Thrown when the value of the 'readonly' boolean parameter is invalid. diff --git a/src/lib/database/dbaccess_parser.cc b/src/lib/database/dbaccess_parser.cc index caee236282..2048b3b8ed 100644 --- a/src/lib/database/dbaccess_parser.cc +++ b/src/lib/database/dbaccess_parser.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2022 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -48,7 +48,10 @@ DbAccessParser::parse(std::string& access_string, DatabaseConnection::ParameterMap values_copy = values_; int64_t lfc_interval = 0; - int64_t timeout = 0; + int64_t connect_timeout = 0; + int64_t read_timeout = 0; + int64_t write_timeout = 0; + int64_t tcp_user_timeout = 0; int64_t port = 0; int64_t max_reconnect_tries = 0; int64_t reconnect_wait_time = 0; @@ -68,9 +71,24 @@ DbAccessParser::parse(std::string& access_string, boost::lexical_cast(lfc_interval); } else if (param.first == "connect-timeout") { - timeout = param.second->intValue(); + connect_timeout = param.second->intValue(); values_copy[param.first] = - boost::lexical_cast(timeout); + boost::lexical_cast(connect_timeout); + + } else if (param.first == "read-timeout") { + read_timeout = param.second->intValue(); + values_copy[param.first] = + boost::lexical_cast(read_timeout); + + } else if (param.first == "write-timeout") { + write_timeout = param.second->intValue(); + values_copy[param.first] = + boost::lexical_cast(write_timeout); + + } else if (param.first == "tcp-user-timeout") { + tcp_user_timeout = param.second->intValue(); + values_copy[param.first] = + boost::lexical_cast(tcp_user_timeout); } else if (param.first == "max-reconnect-tries") { max_reconnect_tries = param.second->intValue(); @@ -148,15 +166,54 @@ DbAccessParser::parse(std::string& access_string, << " (" << value->getPosition() << ")"); } - // d. Check that the timeout is within a reasonable range. - if ((timeout < 0) || - (timeout > std::numeric_limits::max())) { + // d. Check that the timeouts are within a reasonable range. + if ((connect_timeout < 0) || + (connect_timeout > std::numeric_limits::max())) { ConstElementPtr value = database_config->get("connect-timeout"); - isc_throw(DbConfigError, "connect-timeout value: " << timeout + isc_throw(DbConfigError, "connect-timeout value: " << connect_timeout + << " is out of range, expected value: 0.." + << std::numeric_limits::max() + << " (" << value->getPosition() << ")"); + } + if ((read_timeout < 0) || + (read_timeout > std::numeric_limits::max())) { + ConstElementPtr value = database_config->get("read-timeout"); + isc_throw(DbConfigError, "read-timeout value: " << read_timeout + << " is out of range, expected value: 0.." + << std::numeric_limits::max() + << " (" << value->getPosition() << ")"); + } + if (read_timeout > 0 && (dbtype != "mysql")) { + ConstElementPtr value = database_config->get("read-timeout"); + isc_throw(DbConfigError, "read-timeout value is only supported by the mysql backend" + << " (" << value->getPosition() << ")"); + } + if ((write_timeout < 0) || + (write_timeout > std::numeric_limits::max())) { + ConstElementPtr value = database_config->get("write-timeout"); + isc_throw(DbConfigError, "write-timeout value: " << write_timeout + << " is out of range, expected value: 0.." + << std::numeric_limits::max() + << " (" << value->getPosition() << ")"); + } + if (write_timeout > 0 && (dbtype != "mysql")) { + ConstElementPtr value = database_config->get("write-timeout"); + isc_throw(DbConfigError, "write-timeout value is only supported by the mysql backend" + << " (" << value->getPosition() << ")"); + } + if ((tcp_user_timeout < 0) || + (tcp_user_timeout > std::numeric_limits::max())) { + ConstElementPtr value = database_config->get("tcp-user-timeout"); + isc_throw(DbConfigError, "tcp-user-timeout value: " << tcp_user_timeout << " is out of range, expected value: 0.." << std::numeric_limits::max() << " (" << value->getPosition() << ")"); } + if (tcp_user_timeout > 0 && (dbtype != "postgresql")) { + ConstElementPtr value = database_config->get("tcp-user-timeout"); + isc_throw(DbConfigError, "tcp-user-timeout value is only supported by the postgresql backend" + << " (" << value->getPosition() << ")"); + } // e. Check that the port is within a reasonable range. if ((port < 0) || diff --git a/src/lib/database/dbaccess_parser.h b/src/lib/database/dbaccess_parser.h index ce0c9e2e88..30a4ec9163 100644 --- a/src/lib/database/dbaccess_parser.h +++ b/src/lib/database/dbaccess_parser.h @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2021 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -47,9 +47,8 @@ class DbAccessParser: public isc::data::SimpleParser { /// @param database_config The configuration value for the "*-database" /// identifier. /// - /// @throw isc::dhcp::DbConfigError The 'type' keyword contains an - /// unknown database type or is missing from the list of - /// database access keywords. + /// @throw isc::dhcp::DbConfigError The connection parameters or their + /// combination is invalid. void parse(std::string& access_string, isc::data::ConstElementPtr database_config); diff --git a/src/lib/database/tests/dbaccess_parser_unittest.cc b/src/lib/database/tests/dbaccess_parser_unittest.cc index dca15890f5..29322e0727 100644 --- a/src/lib/database/tests/dbaccess_parser_unittest.cc +++ b/src/lib/database/tests/dbaccess_parser_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2020 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -167,6 +167,9 @@ class DbAccessParserTest : public ::testing::Test { bool quoteValue(const std::string& parameter) const { return ((parameter != "persist") && (parameter != "lfc-interval") && (parameter != "connect-timeout") && + (parameter != "read-timeout") && + (parameter != "write-timeout") && + (parameter != "tcp-user-timeout") && (parameter != "port") && (parameter != "max-row-errors") && (parameter != "readonly")); @@ -354,10 +357,10 @@ TEST_F(DbAccessParserTest, largeLFCInterval) { } // This test checks that the parser accepts the valid value of the -// timeout parameter. -TEST_F(DbAccessParserTest, validTimeout) { - const char* config[] = {"type", "memfile", - "name", "/opt/var/lib/kea/kea-leases6.csv", +// connect-timeout parameter. +TEST_F(DbAccessParserTest, validConnectTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", "connect-timeout", "3600", NULL}; @@ -372,10 +375,10 @@ TEST_F(DbAccessParserTest, validTimeout) { } // This test checks that the parser rejects the negative value of the -// timeout parameter. -TEST_F(DbAccessParserTest, negativeTimeout) { - const char* config[] = {"type", "memfile", - "name", "/opt/var/lib/kea/kea-leases6.csv", +// connect-timeout parameter. +TEST_F(DbAccessParserTest, negativeConnectTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", "connect-timeout", "-1", NULL}; @@ -388,10 +391,10 @@ TEST_F(DbAccessParserTest, negativeTimeout) { } // This test checks that the parser rejects a too large (greater than -// the max uint32_t) value of the timeout parameter. -TEST_F(DbAccessParserTest, largeTimeout) { - const char* config[] = {"type", "memfile", - "name", "/opt/var/lib/kea/kea-leases6.csv", +// the max uint32_t) value of the connecttimeout parameter. +TEST_F(DbAccessParserTest, largeConnectTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", "connect-timeout", "4294967296", NULL}; @@ -403,6 +406,252 @@ TEST_F(DbAccessParserTest, largeTimeout) { EXPECT_THROW(parser.parse(json_elements), DbConfigError); } +// This test checks that the parser accepts the valid value of the +// read-timeout parameter. +TEST_F(DbAccessParserTest, validReadTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "read-timeout", "3600", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_NO_THROW(parser.parse(json_elements)); + checkAccessString("Valid read timeout", parser.getDbAccessParameters(), + config); +} + +// This test checks that the parser rejects the negative value of the +// read-timeout parameter. +TEST_F(DbAccessParserTest, negativeReadTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "read-timeout", "-1", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test checks that the parser rejects a too large (greater than +// the max uint32_t) value of the read-timeout parameter. +TEST_F(DbAccessParserTest, largeReadTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "read-timeout", "4294967296", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test checks that the parser accepts the valid value of the +// write-timeout parameter. +TEST_F(DbAccessParserTest, validWriteTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "write-timeout", "3600", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_NO_THROW(parser.parse(json_elements)); + checkAccessString("Valid write timeout", parser.getDbAccessParameters(), + config); +} + +// This test checks that the parser rejects the negative value of the +// write-timeout parameter. +TEST_F(DbAccessParserTest, negativeWriteTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "write-timeout", "-1", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test checks that the parser rejects a too large (greater than +// the max uint32_t) value of the write-timeout parameter. +TEST_F(DbAccessParserTest, largeWriteTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "write-timeout", "4294967296", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test checks that the parser accepts the valid value of the +// tcp-user-timeout parameter. +TEST_F(DbAccessParserTest, validTcpUserTimeout) { + const char* config[] = {"type", "postgresql", + "name", "keatest", + "tcp-user-timeout", "3600", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_NO_THROW(parser.parse(json_elements)); + checkAccessString("Valid write timeout", parser.getDbAccessParameters(), + config); +} + +// This test checks that the parser rejects the negative value of the +// tcp-user-timeout parameter. +TEST_F(DbAccessParserTest, negativeTcpUserTimeout) { + const char* config[] = {"type", "postgresql", + "name", "keatest", + "tcp-user-timeout", "-1", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test checks that the parser rejects a too large (greater than +// the max uint32_t) value of the tcp-user-timeout parameter. +TEST_F(DbAccessParserTest, largeTcpUserTimeout) { + const char* config[] = {"type", "postgresql", + "name", "keatest", + "tcp-user-timeout", "4294967296", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test verifies that specifying the tcp-user-timeout for the +// memfile backend is not allowed. +TEST_F(DbAccessParserTest, memfileTcpUserTimeout) { + const char* config[] = {"type", "memfile", + "name", "keatest", + "tcp-user-timeout", "10", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test verifies that specifying the tcp-user-timeout for the +// mysql backend is not allowed. +TEST_F(DbAccessParserTest, mysqlTcpUserTimeout) { + const char* config[] = {"type", "mysql", + "name", "keatest", + "tcp-user-timeout", "10", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test verifies that specifying the read-timeout for the +// memfile backend is not allowed. +TEST_F(DbAccessParserTest, memfileReadTimeout) { + const char* config[] = {"type", "memfile", + "name", "keatest", + "read-timeout", "10", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test verifies that specifying the read-timeout for the +// postgresql backend is not allowed. +TEST_F(DbAccessParserTest, postgresqlReadTimeout) { + const char* config[] = {"type", "postgresql", + "name", "keatest", + "read-timeout", "10", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test verifies that specifying the write-timeout for the +// memfile backend is not allowed. +TEST_F(DbAccessParserTest, memfileWriteTimeout) { + const char* config[] = {"type", "memfile", + "name", "keatest", + "write-timeout", "10", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + +// This test verifies that specifying the write-timeout for the +// postgresql backend is not allowed. +TEST_F(DbAccessParserTest, postgresqlWriteTimeout) { + const char* config[] = {"type", "postgresql", + "name", "keatest", + "write-timeout", "10", + NULL}; + + string json_config = toJson(config); + ConstElementPtr json_elements = Element::fromJSON(json_config); + EXPECT_TRUE(json_elements); + + TestDbAccessParser parser; + EXPECT_THROW(parser.parse(json_elements), DbConfigError); +} + // This test checks that the parser accepts the valid value of the // port parameter. TEST_F(DbAccessParserTest, validPort) { diff --git a/src/lib/database/testutils/schema.cc b/src/lib/database/testutils/schema.cc index d6aef69a3e..b396b9ec45 100644 --- a/src/lib/database/testutils/schema.cc +++ b/src/lib/database/testutils/schema.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2016-2022 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2016-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -25,6 +25,7 @@ const char* INVALID_NAME = "name=invalidname"; const char* VALID_HOST = "host=localhost"; const char* VALID_HOST_TCP = "host=127.0.0.1"; const char* INVALID_HOST = "host=invalidhost"; +const char* INVALID_PORT_1 = "port=65536"; const char* VALID_USER = "user=keatest"; const char* VALID_READONLY_USER = "user=keatest_readonly"; const char* VALID_SECURE_USER = "user=keatest_secure"; @@ -34,6 +35,16 @@ const char* INVALID_PASSWORD = "password=invalid"; const char* VALID_TIMEOUT = "connect-timeout=10"; const char* INVALID_TIMEOUT_1 = "connect-timeout=foo"; const char* INVALID_TIMEOUT_2 = "connect-timeout=-17"; +const char* INVALID_TIMEOUT_3 = "connect-timeout=0"; +const char* VALID_READ_TIMEOUT = "read-timeout=11"; +const char* VALID_READ_TIMEOUT_ZERO = "read-timeout=0"; +const char* INVALID_READ_TIMEOUT_1 = "read-timeout=bar"; +const char* VALID_WRITE_TIMEOUT = "write-timeout=12"; +const char* VALID_WRITE_TIMEOUT_ZERO = "write-timeout=0"; +const char* INVALID_WRITE_TIMEOUT_1 = "write-timeout=baz"; +const char* VALID_TCP_USER_TIMEOUT = "tcp-user-timeout=8"; +const char* VALID_TCP_USER_TIMEOUT_ZERO = "tcp-user-timeout=0"; +const char* INVALID_TCP_USER_TIMEOUT_1 = "-7"; const char* VALID_READONLY_DB = "readonly=true"; const char* INVALID_READONLY_DB = "readonly=5"; const char* VALID_CERT = "cert-file=" TEST_CA_DIR "/kea-client.crt"; diff --git a/src/lib/database/testutils/schema.h b/src/lib/database/testutils/schema.h index 9e10148f37..2c08bed334 100644 --- a/src/lib/database/testutils/schema.h +++ b/src/lib/database/testutils/schema.h @@ -21,6 +21,7 @@ extern const char* INVALID_NAME; extern const char* VALID_HOST; extern const char* VALID_HOST_TCP; extern const char* INVALID_HOST; +extern const char* INVALID_PORT_1; extern const char* VALID_USER; extern const char* VALID_READONLY_USER; extern const char* VALID_SECURE_USER; @@ -30,6 +31,16 @@ extern const char* INVALID_PASSWORD; extern const char* VALID_TIMEOUT; extern const char* INVALID_TIMEOUT_1; extern const char* INVALID_TIMEOUT_2; +extern const char* INVALID_TIMEOUT_3; +extern const char* VALID_READ_TIMEOUT; +extern const char* VALID_READ_TIMEOUT_ZERO; +extern const char* INVALID_READ_TIMEOUT_1; +extern const char* VALID_WRITE_TIMEOUT; +extern const char* VALID_WRITE_TIMEOUT_ZERO; +extern const char* INVALID_WRITE_TIMEOUT_1; +extern const char* VALID_TCP_USER_TIMEOUT; +extern const char* VALID_TCP_USER_TIMEOUT_ZERO; +extern const char* INVALID_TCP_USER_TIMEOUT_1; extern const char* VALID_READONLY_DB; extern const char* INVALID_READONLY_DB; extern const char* VALID_CERT; diff --git a/src/lib/mysql/mysql_connection.cc b/src/lib/mysql/mysql_connection.cc index fc65cce45b..9db0da5416 100644 --- a/src/lib/mysql/mysql_connection.cc +++ b/src/lib/mysql/mysql_connection.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2022 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -65,30 +65,11 @@ MySqlConnection::openDatabase() { } unsigned int port = 0; - string sport; try { - sport = getParameter("port"); - } catch (...) { - // No port parameter, we are going to use the default port. - sport = ""; - } - - if (sport.size() > 0) { - // Port was given, so try to convert it to an integer. - - try { - port = boost::lexical_cast(sport); - } catch (...) { - // Port given but could not be converted to an unsigned int. - // Just fall back to the default value. - port = 0; - } + setIntParameterValue("port", 0, numeric_limits::max(), port); - // The port is only valid when it is in the 0..65535 range. - // Again fall back to the default when the given value is invalid. - if (port > numeric_limits::max()) { - port = 0; - } + } catch (const std::exception& ex) { + isc_throw(DbInvalidPort, ex.what()); } const char* user = NULL; @@ -120,40 +101,21 @@ MySqlConnection::openDatabase() { } unsigned int connect_timeout = MYSQL_DEFAULT_CONNECTION_TIMEOUT; - string stimeout; + unsigned int read_timeout = 0; + unsigned int write_timeout = 0; try { - stimeout = getParameter("connect-timeout"); - } catch (...) { - // No timeout parameter, we are going to use the default timeout. - stimeout = ""; - } - - if (stimeout.size() > 0) { - // Timeout was given, so try to convert it to an integer. - - try { - connect_timeout = boost::lexical_cast(stimeout); - } catch (...) { - // Timeout given but could not be converted to an unsigned int. Set - // the connection timeout to an invalid value to trigger throwing - // of an exception. - connect_timeout = 0; - } - // The timeout is only valid if greater than zero, as depending on the // database, a zero timeout might signify something like "wait // indefinitely". - // - // The check below also rejects a value greater than the maximum - // integer value. The lexical_cast operation used to obtain a numeric - // value from a string can get confused if trying to convert a negative - // integer to an unsigned int: instead of throwing an exception, it may - // produce a large positive value. - if ((connect_timeout == 0) || - (connect_timeout > numeric_limits::max())) { - isc_throw(DbInvalidTimeout, "database connection timeout (" << - stimeout << ") must be an integer greater than 0"); - } + setIntParameterValue("connect-timeout", 1, numeric_limits::max(), connect_timeout); + // Other timeouts can be 0, meaning that the database client will follow a default + // behavior. Earlier MySQL versions didn't have these parameters, so we allow 0 + // to skip setting them. + setIntParameterValue("read-timeout", 0, numeric_limits::max(), read_timeout); + setIntParameterValue("write-timeout", 0, numeric_limits::max(), write_timeout); + + } catch (const std::exception& ex) { + isc_throw(DbInvalidTimeout, ex.what()); } const char* ca_file(0); @@ -241,6 +203,26 @@ MySqlConnection::openDatabase() { mysql_error(mysql_)); } + // Set the read timeout if it has been specified. Otherwise, the timeout is + // not used. + if (read_timeout > 0) { + result = mysql_options(mysql_, MYSQL_OPT_READ_TIMEOUT, &read_timeout); + if (result != 0) { + isc_throw(DbOpenError, "unable to set database read timeout: " << + mysql_error(mysql_)); + } + } + + // Set the write timeout if it has been specified. Otherwise, the timeout + // is not used. + if (write_timeout > 0) { + result = mysql_options(mysql_, MYSQL_OPT_WRITE_TIMEOUT, &write_timeout); + if (result != 0) { + isc_throw(DbOpenError, "unable to set database write timeout: " << + mysql_error(mysql_)); + } + } + // If TLS is enabled set it. If something should go wrong it will happen // later at the mysql_real_connect call. if (tls_) { @@ -517,5 +499,37 @@ MySqlConnection::rollback() { } } +template +void +MySqlConnection::setIntParameterValue(const std::string& name, int64_t min, int64_t max, T& value) { + string svalue; + try { + svalue = getParameter(name); + } catch (...) { + // Do nothing if the parameter is not present. + } + if (svalue.empty()) { + return; + } + try { + // Try to convert the value. + auto parsed_value = boost::lexical_cast(svalue); + // Check if the value is within the specified range. + if ((parsed_value < min) || (parsed_value > max)) { + isc_throw(BadValue, "bad " << svalue << " value"); + } + // Everything is fine. Return the parsed value. + value = parsed_value; + + } catch (...) { + // We may end up here when lexical_cast fails or when the + // parsed value is not within the desired range. In both + // cases let's throw the same general error. + isc_throw(BadValue, name << " parameter (" << + svalue << ") must be an integer between " + << min << " and " << max); + } +} + } // namespace db } // namespace isc diff --git a/src/lib/mysql/mysql_connection.h b/src/lib/mysql/mysql_connection.h index 50ebc28d08..f68a42c5de 100644 --- a/src/lib/mysql/mysql_connection.h +++ b/src/lib/mysql/mysql_connection.h @@ -712,6 +712,27 @@ class MySqlConnection : public db::DatabaseConnection { return (cipher ? std::string(cipher) : ""); } +private: + + /// @brief Convenience function parsing and setting an integer parameter, + /// if it exists. + /// + /// If the parameter is not present, this function doesn't change the @c value. + /// Otherwise, it tries to convert the parameter to the type @c T. Finally, + /// it checks if the converted number is within the specified range. + /// + /// @param name Parameter name. + /// @param min Expected minimal value. + /// @param max Expected maximal value. + /// @param [out] value Reference to a value returning the parsed parameter. + /// @tparam T Parameter type. + /// @throw BadValue if the parameter is not a valid number or if it is out + /// of range. + template + void setIntParameterValue(const std::string& name, int64_t min, int64_t max, T& value); + +public: + /// @brief Prepared statements /// /// This field is public, because it is used heavily from MySqlConnection diff --git a/src/lib/mysql/tests/mysql_connection_unittest.cc b/src/lib/mysql/tests/mysql_connection_unittest.cc index 19d1a6ae72..a6d4bbde49 100644 --- a/src/lib/mysql/tests/mysql_connection_unittest.cc +++ b/src/lib/mysql/tests/mysql_connection_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2022 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2018-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -609,6 +609,136 @@ TEST_F(MySqlConnectionTest, transactions) { EXPECT_THROW(conn_.rollback(), isc::Unexpected); } +// Tests that invalid port value causes an error. +TEST_F(MySqlConnectionTest, portInvalid) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, INVALID_PORT_1); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.openDatabase(), DbInvalidPort); +} + + +// Tests that valid connection timeout is accepted. +TEST_F(MySqlConnectionTest, connectionTimeout) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, VALID_TIMEOUT); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + ASSERT_NO_THROW_LOG(conn.openDatabase()); + + auto mysql = static_cast(conn.mysql_); + ASSERT_TRUE(mysql); + unsigned int timeout = 123; + EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout)); + EXPECT_EQ(10, timeout); +} + +// Tests that invalid timeout value type causes an error. +TEST_F(MySqlConnectionTest, connectionTimeoutInvalid) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, INVALID_TIMEOUT_1); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout); +} + +// Tests that a negative connection timeout value causes an error. +TEST_F(MySqlConnectionTest, connectionTimeoutInvalid2) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, INVALID_TIMEOUT_2); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout); +} + +// Tests that a zero connection timeout value causes an error. +TEST_F(MySqlConnectionTest, connectionTimeoutInvalid3) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, INVALID_TIMEOUT_3); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout); +} + +// Tests that a valid read timeout is accepted. +TEST_F(MySqlConnectionTest, readTimeout) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, VALID_READ_TIMEOUT); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + ASSERT_NO_THROW_LOG(conn.openDatabase()); + + auto mysql = static_cast(conn.mysql_); + ASSERT_TRUE(mysql); + unsigned int timeout = 123; + EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_READ_TIMEOUT, &timeout)); + EXPECT_EQ(11, timeout); +} + +// Tests that a zero read timeout is accepted. +TEST_F(MySqlConnectionTest, readTimeoutZero) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, VALID_READ_TIMEOUT_ZERO); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + ASSERT_NO_THROW_LOG(conn.openDatabase()); + + auto mysql = static_cast(conn.mysql_); + ASSERT_TRUE(mysql); + unsigned int timeout = 123; + EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_READ_TIMEOUT, &timeout)); + EXPECT_EQ(0, timeout); +} + +// Tests that an invalid read timeout causes an error. +TEST_F(MySqlConnectionTest, readTimeoutInvalid) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, INVALID_READ_TIMEOUT_1); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout); +} + +// Tests that a valid write timeout is accepted. +TEST_F(MySqlConnectionTest, writeTimeout) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, VALID_WRITE_TIMEOUT); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + ASSERT_NO_THROW_LOG(conn.openDatabase()); + + auto mysql = static_cast(conn.mysql_); + ASSERT_TRUE(mysql); + unsigned int timeout = 123; + EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_WRITE_TIMEOUT, &timeout)); + EXPECT_EQ(12, timeout); +} + +// Tests that a zero write timeout is accepted. +TEST_F(MySqlConnectionTest, writeTimeoutZero) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, VALID_WRITE_TIMEOUT_ZERO); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + ASSERT_NO_THROW_LOG(conn.openDatabase()); + + auto mysql = static_cast(conn.mysql_); + ASSERT_TRUE(mysql); + unsigned int timeout = 123; + EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_WRITE_TIMEOUT, &timeout)); + EXPECT_EQ(0, timeout); +} + +// Tests that an invalid write timeout causes an error. +TEST_F(MySqlConnectionTest, writeTimeoutInvalid) { + std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME, + VALID_HOST_TCP, VALID_USER, + VALID_PASSWORD, INVALID_WRITE_TIMEOUT_1); + MySqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout); +} + TEST_F(MySqlConnectionWithPrimaryKeyTest, select) { select(); } diff --git a/src/lib/pgsql/pgsql_connection.cc b/src/lib/pgsql/pgsql_connection.cc index ae314e45aa..77b71260be 100644 --- a/src/lib/pgsql/pgsql_connection.cc +++ b/src/lib/pgsql/pgsql_connection.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2016-2022 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2016-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -180,8 +180,8 @@ PgSqlConnection::prepareStatements(const PgSqlTaggedStatement* start_statement, } } -void -PgSqlConnection::openDatabase() { +std::string +PgSqlConnection::getConnParameters() { string dbconnparameters; string shost = "localhost"; try { @@ -192,38 +192,19 @@ PgSqlConnection::openDatabase() { dbconnparameters += "host = '" + shost + "'" ; - string sport; + unsigned int port = 0; try { - sport = getParameter("port"); - } catch (...) { - // No port parameter, we are going to use the default port. - sport = ""; - } + setIntParameterValue("port", 0, numeric_limits::max(), port); - if (sport.size() > 0) { - unsigned int port = 0; - - // Port was given, so try to convert it to an integer. - try { - port = boost::lexical_cast(sport); - } catch (...) { - // Port given but could not be converted to an unsigned int. - // Just fall back to the default value. - port = 0; - } - - // The port is only valid when it is in the 0..65535 range. - // Again fall back to the default when the given value is invalid. - if (port > numeric_limits::max()) { - port = 0; - } + } catch (const std::exception& ex) { + isc_throw(DbInvalidPort, ex.what()); + } - // Add it to connection parameters when not default. - if (port > 0) { - std::ostringstream oss; - oss << port; - dbconnparameters += " port = " + oss.str(); - } + // Add port to connection parameters when not default. + if (port > 0) { + std::ostringstream oss; + oss << port; + dbconnparameters += " port = " + oss.str(); } string suser; @@ -252,46 +233,36 @@ PgSqlConnection::openDatabase() { } unsigned int connect_timeout = PGSQL_DEFAULT_CONNECTION_TIMEOUT; - string stimeout; + unsigned int tcp_user_timeout = 0; try { - stimeout = getParameter("connect-timeout"); - } catch (...) { - // No timeout parameter, we are going to use the default timeout. - stimeout = ""; - } - - if (stimeout.size() > 0) { - // Timeout was given, so try to convert it to an integer. - - try { - connect_timeout = boost::lexical_cast(stimeout); - } catch (...) { - // Timeout given but could not be converted to an unsigned int. Set - // the connection timeout to an invalid value to trigger throwing - // of an exception. - connect_timeout = 0; - } - // The timeout is only valid if greater than zero, as depending on the // database, a zero timeout might signify something like "wait // indefinitely". - // - // The check below also rejects a value greater than the maximum - // integer value. The lexical_cast operation used to obtain a numeric - // value from a string can get confused if trying to convert a negative - // integer to an unsigned int: instead of throwing an exception, it may - // produce a large positive value. - if ((connect_timeout == 0) || - (connect_timeout > numeric_limits::max())) { - isc_throw(DbInvalidTimeout, "database connection timeout (" << - stimeout << ") must be an integer greater than 0"); - } + setIntParameterValue("connect-timeout", 1, numeric_limits::max(), connect_timeout); + // This timeout value can be 0, meaning that the database client will + // follow a default behavior. Earlier Postgres versions didn't have + // this parameter, so we allow 0 to skip setting them for these + // earlier versions. + setIntParameterValue("tcp-user-timeout", 0, numeric_limits::max(), tcp_user_timeout); + + } catch (const std::exception& ex) { + isc_throw(DbInvalidTimeout, ex.what()); } + // Append timeouts. std::ostringstream oss; - oss << connect_timeout; - dbconnparameters += " connect_timeout = " + oss.str(); + oss << " connect_timeout = " << connect_timeout; + if (tcp_user_timeout > 0) { + oss << " tcp_user_timeout = " << tcp_user_timeout * 1000; + } + dbconnparameters += oss.str(); + return (dbconnparameters); +} + +void +PgSqlConnection::openDatabase() { + std::string dbconnparameters = getConnParameters(); // Connect to Postgres, saving the low level connection pointer // in the holder object PGconn* new_conn = PQconnectdb(dbconnparameters.c_str()); @@ -533,5 +504,38 @@ PgSqlConnection::updateDeleteQuery(PgSqlTaggedStatement& statement, return (boost::lexical_cast(PQcmdTuples(*result_set))); } +template +void +PgSqlConnection::setIntParameterValue(const std::string& name, int64_t min, int64_t max, T& value) { + string svalue; + try { + svalue = getParameter(name); + } catch (...) { + // Do nothing if the parameter is not present. + } + if (svalue.empty()) { + return; + } + try { + // Try to convert the value. + auto parsed_value = boost::lexical_cast(svalue); + // Check if the value is within the specified range. + if ((parsed_value < min) || (parsed_value > max)) { + isc_throw(BadValue, "bad " << svalue << " value"); + } + // Everything is fine. Return the parsed value. + value = parsed_value; + + } catch (...) { + // We may end up here when lexical_cast fails or when the + // parsed value is not within the desired range. In both + // cases let's throw the same general error. + isc_throw(BadValue, name << " parameter (" << + svalue << ") must be an integer between " + << min << " and " << max); + } +} + + } // end of isc::db namespace } // end of isc namespace diff --git a/src/lib/pgsql/pgsql_connection.h b/src/lib/pgsql/pgsql_connection.h index 65e8e42ada..eede3db055 100644 --- a/src/lib/pgsql/pgsql_connection.h +++ b/src/lib/pgsql/pgsql_connection.h @@ -265,6 +265,16 @@ class PgSqlConnection : public db::DatabaseConnection { void prepareStatements(const PgSqlTaggedStatement* start_statement, const PgSqlTaggedStatement* end_statement); + /// @brief Creates connection string from specified parameters. + /// + /// This function is called frin the @c openDatabase and from the unit + /// tests. + /// + /// @return connection string for @c openDatabase. + /// @throw NoDatabaseName Mandatory database name not given + /// @throw DbInvalidTimeout when the database timeout is wrong. + std::string getConnParameters(); + /// @brief Open Database /// /// Opens the database using the information supplied in the parameters @@ -500,6 +510,27 @@ class PgSqlConnection : public db::DatabaseConnection { return (conn_); } +private: + + /// @brief Convenience function parsing and setting an integer parameter, + /// if it exists. + /// + /// If the parameter is not present, this function doesn't change the @c value. + /// Otherwise, it tries to convert the parameter to the type @c T. Finally, + /// it checks if the converted number is within the specified range. + /// + /// @param name Parameter name. + /// @param min Expected minimal value. + /// @param max Expected maximal value. + /// @param [out] value Reference to a value returning the parsed parameter. + /// @tparam T Parameter type. + /// @throw BadValue if the parameter is not a valid number or if it is out + /// of range. + template + void setIntParameterValue(const std::string& name, int64_t min, int64_t max, T& value); + +public: + /// @brief Accessor function which returns the IOService that can be used to /// recover the connection. /// diff --git a/src/lib/pgsql/tests/pgsql_connection_unittest.cc b/src/lib/pgsql/tests/pgsql_connection_unittest.cc index b3b23e2fc0..906b3fc389 100644 --- a/src/lib/pgsql/tests/pgsql_connection_unittest.cc +++ b/src/lib/pgsql/tests/pgsql_connection_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2021-2022 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2021-2023 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -562,4 +562,87 @@ TEST_F(PgSqlConnectionTest, savepoints) { TestRowSet three_rows{{1, "one"}, {2, "two"}, {3, "three"}}; ASSERT_NO_THROW_LOG(testSelect(three_rows, 0, 10)); } + +// Tests that invalid port value causes an error. +TEST_F(PgSqlConnectionTest, portInvalid) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + INVALID_PORT_1); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.getConnParameters(), DbInvalidPort); +} + +// Tests that valid connection timeout is accepted. +TEST_F(PgSqlConnectionTest, connectionTimeout) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + VALID_TIMEOUT); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + std::string parameters; + ASSERT_NO_THROW_LOG(parameters = conn.getConnParameters()); + EXPECT_TRUE(parameters.find("connect_timeout = 10") != std::string::npos) + << "parameter not found in " << parameters; +} + +// Tests that invalid timeout value type causes an error. +TEST_F(PgSqlConnectionTest, connectionTimeoutInvalid) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + INVALID_TIMEOUT_1); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.getConnParameters(), DbInvalidTimeout); +} + +// Tests that a negative connection timeout value causes an error. +TEST_F(PgSqlConnectionTest, connectionTimeoutInvalid2) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + INVALID_TIMEOUT_2); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.getConnParameters(), DbInvalidTimeout); +} + +// Tests that a zero connection timeout value causes an error. +TEST_F(PgSqlConnectionTest, connectionTimeoutInvalid3) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + INVALID_TIMEOUT_3); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.getConnParameters(), DbInvalidTimeout); +} + +// Tests that valid tcp user timeout is accepted. +TEST_F(PgSqlConnectionTest, tcpUserTimeout) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + VALID_TCP_USER_TIMEOUT); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + std::string parameters; + ASSERT_NO_THROW_LOG(parameters = conn.getConnParameters()); + EXPECT_TRUE(parameters.find("tcp_user_timeout = 8000") != std::string::npos) + << "parameter not found in " << parameters; +} + +// Tests that a zero tcp user timeout is accepted. +TEST_F(PgSqlConnectionTest, tcpUserTimeoutZero) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + VALID_TCP_USER_TIMEOUT_ZERO); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + std::string parameters; + ASSERT_NO_THROW_LOG(parameters = conn.getConnParameters()); + EXPECT_FALSE(parameters.find("tcp_user_timeout") != std::string::npos) + << "parameter found in " << parameters << " but expected to be gone"; +} + +// Tests that an invalid tcp user timeout causes an error. +TEST_F(PgSqlConnectionTest, tcpUserTimeoutInvalid) { + std::string conn_str = connectionString(PGSQL_VALID_TYPE, VALID_NAME, + VALID_USER, VALID_PASSWORD, + INVALID_TIMEOUT_1); + PgSqlConnection conn(DatabaseConnection::parse(conn_str)); + EXPECT_THROW(conn.getConnParameters(), DbInvalidTimeout); +} + + }; // namespace