]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1307] kea-dhcp6 supports parked-packet-limit
authorThomas Markwalder <tmark@isc.org>
Fri, 3 Sep 2021 18:44:53 +0000 (14:44 -0400)
committerThomas Markwalder <tmark@isc.org>
Fri, 17 Sep 2021 15:10:34 +0000 (11:10 -0400)
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/lib/dhcpsrv/parsers/simple_parser6.cc
doc/examples/kea6/all-keys.json
    Added parked-packet-limit

src/bin/dhcp6/dhcp6_messages.*
    DHCP6_HOOK_LEASES6_PARKING_LOT_FULL

src/bin/dhcp6/dhcp6_srv.cc
    Dhcpv6Srv::processDhcp6Query() - drops the packet if the parking
    lot is full

src/bin/dhcp6/tests/get_config_unittest.cc
    updated

15 files changed:
doc/examples/kea4/all-keys.json
doc/examples/kea6/all-keys.json
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_messages.cc
src/bin/dhcp6/dhcp6_messages.h
src/bin/dhcp6/dhcp6_messages.mes
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/dhcp6_srv.cc
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/location.hh
src/bin/dhcp6/tests/get_config_unittest.cc
src/lib/dhcpsrv/parsers/simple_parser6.cc

index 303b61409130f5d15880dda47ebfee3a1f26afad..1ad524ce39d87af60aed6ce35a88073a3561b49d 100644 (file)
         // DHCPREQUESTs) that may be parked while waiting for hook library
         // work to complete, prior to a response (e.g. DHCPACK) being sent
         // back to the client.  A typical example is when kea-dhcp4 parks a
-        // DHCPREQUEST while it sends the requesite lease update(s) to its
+        // DHCPREQUEST while it sends the requisite lease update(s) to its
         // HA peer(s). The packet is unparked once the update(s) have been
         // acknowledged.  This value limits the number of packets that can
         // be held pending the updates. In times of heavy client traffic,
index 1504d5f75ff6f4c6c501b0e83b6a8605a52aedca..3eb2486280e4667c878cf20fdbffd36049fe0755 100644 (file)
             }
         ],
 
+        // Global value which limits the number of client packets (e.g.
+        // REQUESTs,RENEWs...) that may be parked while waiting for
+        // hook library work to complete, prior to a response (e.g. REPLY)
+        // being sent back to the client.  A typical example is when kea-dhcp6
+        // parks a REQUEST while it sends the requisite lease update(s) to its
+        // HA peer(s). The packet is unparked once the update(s) have been
+        // acknowledged.  This value limits the number of packets that can
+        // be held pending the updates. In times of heavy client traffic,
+        // this value can keep kea-dhcp6 from building an insurmountable
+        // backlog of updates.
+        "parked-packet-limit": 128,
+
         // Global (default) value of the preferred lifetime.
         "preferred-lifetime": 50,
 
index b43f15aa3465ef4087d0fce60e04f514fbd5bc3f..bc7298729f8887352d1688d8125749f9278cfc9a 100644 (file)
@@ -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 219
-#define YY_END_OF_BUFFER 220
+#define YY_NUM_RULES 220
+#define YY_END_OF_BUFFER 221
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[2025] =
+static const flex_int16_t yy_accept[2042] =
     {   0,
-      212,  212,    0,    0,    0,    0,    0,    0,    0,    0,
-      220,  218,   10,   11,  218,    1,  212,  209,  212,  212,
-      218,  211,  210,  218,  218,  218,  218,  218,  205,  206,
-      218,  218,  218,  207,  208,    5,    5,    5,  218,  218,
-      218,   10,   11,    0,    0,  200,    0,    0,    0,    0,
+      213,  213,    0,    0,    0,    0,    0,    0,    0,    0,
+      221,  219,   10,   11,  219,    1,  213,  210,  213,  213,
+      219,  212,  211,  219,  219,  219,  219,  219,  206,  207,
+      219,  219,  219,  208,  209,    5,    5,    5,  219,  219,
+      219,   10,   11,    0,    0,  201,    0,    0,    0,    0,
         0,    0,    0,    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,  212,  212,
-        0,  211,  212,    3,    2,    6,    0,  212,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  201,
+        0,    0,    0,    0,    0,    0,    0,    1,  213,  213,
+        0,  212,  213,    3,    2,    6,    0,  213,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  202,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  203,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  204,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -722,209 +722,211 @@ static const flex_int16_t yy_accept[2025] =
         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,
+        8,    0,    0,  172,    0,    0,  173,    0,    0,    0,
 
-        0,    0,    0,    0,  202,  204,    0,    0,    0,    0,
+        0,    0,    0,    0,  203,  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,  118,    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,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  217,
-      215,    0,  214,  213,    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,  218,
+      216,    0,  215,  214,    0,    0,    0,    0,    0,  171,
+        0,   28,    0,   27,    0,    0,  126,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        55,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  122,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  123,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  216,  213,    0,
-        0,    0,    0,   29,    0,   31,    0,    0,    0,    0,
-        0,    0,    0,    0,  129,    0,    0,    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,   58,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  217,  214,
+        0,    0,    0,    0,   29,    0,   31,    0,    0,    0,
+        0,    0,    0,    0,    0,  130,    0,    0,    0,    0,
+        0,    0,    0,    0,  104,    0,    0,    0,    0,    0,
+        0,    0,    0,  156,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   58,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  102,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  112,    0,
-       59,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  103,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      113,    0,   59,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  150,    0,  175,   51,    0,
-       56,    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,  151,    0,  176,
+       51,    0,   56,    0,    0,    0,    0,   37,   34,   33,
+        0,    0,    0,  164,    0,    0,    0,    0,    0,    0,
         0,    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,    0,    0,  142,    0,    0,    0,
+        0,    0,    0,    0,    0,  175,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   53,    0,    0,
-       32,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    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,   53,
+        0,    0,   32,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  165,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  159,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  160,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    7,   35,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    7,   35,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  124,    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,
-      143,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  140,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  107,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  144,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  141,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  108,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  115,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  114,
+        0,    0,    0,    0,    0,  116,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  115,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,    0,  142,   52,
-
-        0,    0,    0,    0,    0,   67,    0,    0,    0,    0,
-        0,    0,    0,    0,  144,    0,   60,    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,  169,  139,    0,    0,    0,    0,    0,
+
+        0,    0,  143,   52,    0,    0,    0,    0,    0,   67,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  145,
+        0,   60,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   97,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  195,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   98,    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,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  121,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  122,    0,    0,    0,
 
-        0,    0,    0,    0,  157,    0,    0,    0,    0,    0,
-        0,    0,   63,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  158,
+        0,    0,    0,    0,    0,    0,    0,   63,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   57,  106,    0,
-        0,    0,  154,    0,    0,    0,    0,   50,    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,   57,  107,    0,    0,    0,  155,    0,
+        0,    0,    0,   50,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  147,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    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,
-        0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
+        0,    0,    0,    0,    0,  197,    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,    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,    0,
-      169,   14,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   16,    0,    0,    0,  170,   14,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  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,  156,  173,    0,   40,    0,  165,    0,    0,    0,
+      161,    0,    0,    0,    0,    0,    0,    0,    0,  146,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   20,    0,    0,    0,  100,    0,    0,
-        0,    0,    0,  167,   54,    0,  108,    0,  194,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  157,  174,
+        0,   40,    0,  166,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       20,    0,    0,    0,  101,    0,    0,    0,    0,    0,
+      168,    0,   54,    0,  109,    0,  195,    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,  134,  135,    0,    0,    0,    0,    0,    0,
-        0,    0,  104,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   86,    0,    0,    0,    0,    0,    0,
+      135,  136,    0,    0,    0,    0,    0,    0,    0,    0,
+      105,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       64,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  163,    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,    0,    0,    0,    0,    0,  130,
+        0,    0,    0,    0,    0,    0,    0,  131,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
+      124,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   83,    0,    0,    0,    0,    0,
+
+        0,   17,    0,    0,   15,    0,  192,  191,    0,    0,
+        0,    0,   73,    0,    0,    0,    0,    0,   30,    0,
+        0,    0,  150,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  101,  123,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   83,    0,    0,    0,    0,
-        0,    0,   17,    0,    0,   15,    0,  191,  190,    0,
-
-        0,    0,    0,   73,    0,    0,    0,    0,    0,   30,
-        0,    0,    0,  149,    0,    0,    0,    0,    0,    0,
+        0,    0,  185,    0,  194,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  118,    0,  154,    0,
+       43,    0,    0,   61,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
+        0,    0,    0,  120,   84,    0,    0,  162,    0,    0,
+        0,    0,    0,  153,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,  114,    0,    0,  138,
+        0,    0,    0,  199,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
+        0,    0,    0,  177,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  184,    0,  193,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  117,    0,  153,
-        0,   43,    0,    0,   61,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   19,    0,    0,    0,    0,
-        0,    0,    0,  119,   84,    0,    0,  161,    0,    0,
-        0,    0,    0,  152,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  113,    0,    0,  137,
-
-        0,    0,    0,  198,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  111,
-        0,    0,    0,  176,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   42,    0,    0,    0,    0,
+        0,    0,    0,   72,    0,    0,    0,    0,    0,    0,
+      148,   47,    0,    0,    0,   74,  190,   38,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   12,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
+        0,    0,    0,   44,    0,    0,   18,    0,    0,    0,
+       76,    0,    0,    0,    0,    0,  140,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   42,    0,    0,    0,    0,    0,
-        0,    0,   72,    0,    0,    0,    0,    0,    0,  147,
-       47,    0,    0,    0,   74,  189,   38,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   12,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   45,    0,
-        0,    0,   44,    0,    0,   18,    0,    0,    0,   76,
-        0,    0,    0,    0,    0,  139,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   80,    0,  137,    0,    0,    0,   62,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       80,    0,  136,    0,    0,    0,   62,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  109,    0,
-        0,    0,    0,    0,  166,    0,    0,    0,   46,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  185,
+      110,    0,    0,    0,    0,    0,  167,    0,    0,    0,
+       46,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  186,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   71,    0,    0,    0,    0,    0,    0,
+        0,    0,  100,    0,   68,    0,    0,    0,   36,    0,
+       48,    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,  183,    0,    0,    0,
+        0,  152,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  121,    0,    0,    0,    0,    0,   69,
+        0,    0,  188,    0,    0,    0,    0,    0,    0,    0,
+        0,   90,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   25,   39,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  189,    0,    0,   13,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-       71,    0,    0,    0,    0,    0,    0,    0,    0,   99,
-        0,   68,    0,    0,    0,   36,    0,   48,    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,  120,
-        0,    0,    0,    0,    0,   69,    0,    0,  187,    0,
-        0,    0,    0,    0,    0,    0,    0,   89,    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,   13,    0,    0,    0,    0,    0,    0,
+        0,    0,  193,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  182,    0,   82,    0,   81,    0,   21,
+        0,   77,    0,    0,    0,    0,    0,    0,    0,    0,
+       65,    0,    0,    0,    0,  134,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  111,    0,    0,  181,
+        0,    0,    0,    0,    0,   75,    0,    0,   87,    0,
+
+       66,    0,   23,    0,  127,    0,    0,    0,    0,   99,
+        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,  192,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  181,    0,
-       82,    0,   81,    0,   21,   77,    0,    0,    0,    0,
-        0,    0,    0,    0,   65,    0,    0,    0,    0,  133,
+        0,    0,    0,    0,    0,   70,    0,    0,    0,   94,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      110,    0,    0,  180,    0,    0,    0,    0,    0,   75,
-        0,    0,    0,   66,    0,   23,    0,  126,    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,   70,    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,    0,   49,    0,    0,   94,
-        0,    0,    0,  186,    0,    0,    0,    0,  197,  199,
-       79,   78,   22,    0,  131,  148,  127,    0,    0,    0,
-        0,   90,    0,    0,    0,    0,    0,    0,    0,  178,
-        0,    0,  183,    0,   92,    0,   85,    0,    0,    0,
-        0,  128,    0,    0,    0,  177,    0,    0,   26,    0,
-
-        0,    0,    0,    0,    0,    0,    0,   91,    0,    0,
-        0,    0,    0,   96,    0,  132,   88,    0,    0,    0,
-        0,   87,  179,    0
+        0,    0,    0,   49,    0,    0,   95,    0,    0,    0,
+      187,    0,    0,    0,    0,  198,  200,   79,   78,   22,
+        0,  132,  149,  128,    0,    0,    0,    0,   91,    0,
+        0,    0,    0,    0,    0,    0,  179,    0,    0,  184,
+
+        0,   93,    0,   85,    0,    0,    0,    0,  129,    0,
+        0,    0,  178,    0,    0,   26,    0,    0,    0,    0,
+        0,    0,    0,    0,   92,    0,    0,    0,    0,    0,
+       97,    0,  133,   89,    0,    0,    0,    0,   88,  180,
+        0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -971,471 +973,473 @@ static const YY_CHAR yy_meta[74] =
         1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[2033] =
+static const flex_int16_t yy_base[2050] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2412, 2413,   34, 2408,  145,    0,  207, 2413,  214,  221,
-       13,  228, 2413, 2388,  118,   25,    2,    6, 2413, 2413,
-       73,   11,   17, 2413, 2413, 2413,  104, 2396, 2349,    0,
-     2386,  108, 2403,   24,  256, 2413,   67, 2352, 2372,   84,
-       75, 2372,   88,  226,   91,   89,  284,  196,  203,  279,
-      193,  224,  216,   60,  242, 2352,  286,  288,  314,  300,
-      319, 2335,  204,  324,  356,  329, 2354,    0,  380,  400,
-      420,  427,  406, 2413,    0, 2413,  385,  443,  238,  241,
-      310,  269,  299,  314, 2413, 2351, 2392, 2413,  405, 2413,
-
-      419,  400, 2349, 2390,  326,   10,  262,  407,  224,  409,
-      352,  206, 2389,    0,  480,  412, 2331,  415, 2339,  406,
-     2335, 2324, 2325, 2330,  442, 2340, 2323, 2332,  327,  431,
-      226, 2326, 2324,  452, 2313, 2371,  399, 2316, 2369, 2309,
-      441, 2330, 2330, 2324,  339, 2317, 2315, 2316, 2308, 2313,
-     2307,  414, 2318,  456, 2303, 2302, 2316,  454, 2354, 2301,
-      451, 2313,  474, 2301,  490, 2302,  476, 2314, 2311, 2312,
-      293, 2310, 2345, 2344,  449, 2290, 2290, 2294, 2290, 2282,
-     2299, 2291,    0,  457,  491,  401,  489,  501,  496, 2290,
-     2413,  510, 2285, 2413,  498,  508, 2413, 2339,  514, 2338,
-
-      515, 2337,  512, 2336, 2413, 2413,  558, 2335,  522, 2294,
-     2286, 2290, 2291, 2286, 2285,  219,  528, 2328, 2322, 2286,
-     2267, 2264, 2272, 2278, 2266, 2280, 2276, 2277, 2277, 2272,
-     2264, 2266, 2250, 2254, 2267, 2269, 2266, 2258, 2248, 2251,
-     2265, 2413, 2251, 2259,   80, 2244, 2243, 2252, 2294, 2241,
-     2251, 2291,  546, 2250, 2289, 2234, 2236, 2247, 2285,  528,
-     2289, 2243, 2223, 2238,  539, 2228, 2234, 2243, 2224, 2222,
-     2225, 2221, 2227, 2218, 2217, 2230, 2223, 2213, 2224, 2228,
-     2227, 2221,  431, 2228, 2223, 2215, 2205, 2220, 2215, 2219,
-      523, 2217, 2203, 2209, 2216, 2198,  410, 2203, 2200, 2199,
-
-      555, 2194, 2208, 2207, 2206, 2209, 2191, 2199,  553, 2413,
-     2413,  561, 2413, 2413, 2186,  519, 2233,  564, 2244, 2413,
-      534, 2413, 2243, 2413, 2237,  601, 2413,  529, 2177, 2196,
-     2179, 2196, 2184, 2236, 2191, 2194, 2185, 2188, 2183,  549,
-     2413, 2185,  590, 2224, 2182, 2179, 2180,  619, 2184, 2224,
-     2172, 2167, 2164, 2160, 2162, 2213, 2170, 2159, 2175, 2209,
-     2155,  626, 2168, 2168, 2151, 2152, 2165, 2163, 2151, 2161,
-     2160, 2155, 2162, 2157, 2142,  572, 2151, 2154, 2149,  577,
-     2148, 2144, 2194,  570,  559, 2413, 2153, 2187, 2137, 2136,
-     2129, 2131, 2143, 2134, 2123, 2140, 2129, 2134,  592, 2181,
-
-     2134,  509, 2131, 2134, 2134, 2132, 2121, 2121, 2133,  582,
-     2108, 2109, 2130,  592, 2112, 2109, 2123, 2126, 2121, 2107,
-     2119, 2118, 2117, 2112, 2154, 2114, 2113, 2112, 2111,  564,
-     2154, 2113, 2152, 2151, 2093,  647, 2106, 2413, 2413, 2105,
-      604, 2147, 2146, 2413, 2145, 2413,  623,  677,  607, 2144,
-     2138, 2091, 2093, 2081, 2413, 2086, 2079, 2091, 2094, 2077,
-     2092, 2079, 2078, 2413, 2088,  610, 2079, 2076, 2088,  605,
-     2073, 2075, 2413, 2081, 2066, 2068, 2079, 2077, 2072,  653,
-     2079, 2067, 2060, 2111, 2413, 2058, 2074, 2108, 2112, 2068,
-     2062, 2064, 2065, 2049, 2066, 2100, 2051, 2050, 2045, 2044,
-
-     2046, 2042, 2038,  615, 2057, 2031, 2038, 2043, 2036, 2052,
-     2086, 2090, 2413, 2035, 2031, 2087, 2038, 2037, 2031, 2038,
-     2023, 2033, 2021, 2035, 2024, 2020, 2022, 2017, 2413, 2074,
-     2413, 2016, 2015, 2008, 2025, 2064, 2063, 2008, 2013, 2022,
-     2016, 2010, 2019,  655, 2056, 2018, 2001, 2001, 1996, 1992,
-     1998, 2003,  649, 2005, 2009, 1992, 2050, 1991, 1991, 2042,
-     1987, 1988, 1987, 1999, 1988, 2413, 1998, 2413, 2413, 1987,
-     2413, 1997, 2033, 1993, 2036, 2413, 2413, 2413,  636,  643,
-      675, 2413,  622, 1995, 1975, 2028, 1973, 1983, 2025, 1970,
-     1969, 1968, 1975, 1968, 1976, 1979, 1961, 1961, 1976, 1975,
-
-      646, 1974, 1973, 1957, 1972, 1954, 2001, 1968, 2006, 1950,
-     1952, 1964, 1964, 1963, 2413, 1948, 1945, 2003, 1958, 1950,
-     1956, 1947, 1955, 2413, 1940, 1951, 1955, 1937, 1949, 1950,
-      640, 1932, 1931, 1925, 1930, 1927, 1942, 1941, 1942, 1921,
-     1931, 1937, 1980, 1935, 1934, 1926, 1917, 2413, 1918, 1920,
-     2413, 1922, 1927, 1966, 1965,   16, 1926, 1963, 1908, 1909,
-     1912, 1913, 1904, 2413, 1918, 1904,  702, 1896, 1900, 1916,
-     1913, 1905, 1950, 1902, 1909, 1947, 2413, 1893, 1891, 1905,
-     1889, 1903, 1906, 1940, 1939, 1938, 1885, 1936, 1881, 1934,
-     1933, 2413, 1878, 1892, 1891,  691, 1892, 1891, 1888, 1888,
-
-     1925, 1885, 1874, 1876, 2413, 2413,  646,  671, 1868, 1885,
-     1877, 1864, 1858, 1879, 1920, 1878,  666, 1913, 1873, 1911,
-     1910, 1862, 1856, 1859, 1867, 1870, 1854, 1851,   92,  170,
-      208,  333,  313,  543,  613,  666,  630,  671,  642,  662,
-      669,  708,  714,  672,  680, 2413,  683,  678,  670,  685,
-      690,  688,  685,  692,  691,  679,  693,  691,  699,  735,
-      697,  742,  743,  687,  700,  687,  697,  744,  702,  752,
-     2413,  753,  709,  707,  709,  705,  699,  759,  755,  718,
-      707, 2413,  709,  720,  709,  722,  724,  768,  711,  770,
-      713,  728, 2413,  722,  716,  727,  712,  723,  736,  715,
-
-      721,  776,  740,  724,  724,  737,  781,  782,  783,  730,
-      748,  743,  750,  749,  746,  731,  743,  744,  751,  741,
-      739, 2413,  804,  762,  763,  753,  765,  755,  768,  759,
-      765,  809,  785,  772,  754,  761,  775,  820,  770, 2413,
-      774,  769,  784,  781,  767,  774,  773,  771,  790,  787,
-      788,  776,  783,  784,  793,  797,  833,  795,  785,  798,
-      784,  784,  790,  846,  787,  788,  794,  810,  793,  847,
-      802, 2413,  812,  812,  805,  816,  814,  859,  801,  803,
-      818,  819,  807,  805,  867,  824,  810,  816,  814, 2413,
-     2413,  830,  829,  830,  835,  823,  833,  835, 2413, 2413,
-
-      835,  837,  824,  842,  829, 2413,  827,  845,  832,  832,
-      883,  830,  834,  892, 2413,  893, 2413,  838,  852,  852,
-      897,  845,  844,  848,  842,  902,  855,  845,  846,  842,
-      852,  856,  867,  851,  869,  864,  866,  859,  861,  862,
-      858,  875,  865,  880,  921,  878,  883,  860,  883,  869,
-      868, 2413,  875,  876,  891,  881,  879,  929,  876,  891,
-      909,  917,  886,  935,  897,  937, 2413,  903,  893,  892,
-      887,  888,  900,  907,  896,  897,  893,  911,  897,  898,
-      908,  917,  953,  900,  918,  911,  906,  960,  966,  923,
-      914, 2413,  918,  926,  928,  913,  929,  919,  931,  925,
-
-      972,  938,  922,  923, 2413,  939,  942,  925,  927,  985,
-      928,  947, 2413,  946,  949,  936,  931,  949,  937,  990,
-      948,  944,  941,  994,  943,  996,  958,  944,  962,  961,
-      947,  962,  954,  950,  968,  967,  954, 2413, 2413,  962,
-     1009,  962, 2413,  970,  973,  966, 1019, 2413,  968,  974,
-     1018,  969,  970,  982,  976,  980,  978,  976,  987, 1032,
-      976,  981,  978, 1036, 1037,  981,  993, 2413,  981,  989,
-      987, 1039,  981, 1002,  988,  989,  998, 1010,  997,  995,
-     1009, 1010, 1026, 1031, 1013, 1018, 1001, 1001, 1003, 1014,
-     1004, 1024, 1023, 1014, 1003, 1020, 1027, 1070, 1012, 1032,
-
-     1025, 1029, 1033, 1016, 1033, 1024, 1079, 1026, 1030, 2413,
-     1077, 1028, 1027, 1027, 1048, 1045, 1085, 1034, 1052, 1053,
-     1039, 1047, 1056, 1036, 1051, 1058, 1100, 1101, 2413, 1054,
-     1103, 1104, 1046, 1056, 1066, 1050, 1070, 1053, 1055, 1055,
-     1062, 1071, 1059, 1066, 1061, 1068, 1080, 1121, 1068, 1067,
-     1084, 1125, 1075, 1079, 1077, 1075, 1070, 1131, 1132, 1082,
-     1134, 1130, 1136, 1089, 2413, 1094, 1087, 1078, 1097, 1091,
-     1086, 1096, 1093, 1098, 1094, 1107, 2413, 1091, 1093, 1088,
-     2413, 2413, 1094, 1154, 1093, 1112, 1113, 1115, 1154, 1107,
-     1161, 1162, 1115, 1100, 1114, 1122, 1104, 1109, 1148, 1139,
-
-     1171, 1126, 1126, 1130, 1117, 1117, 1120, 1137, 1132, 1136,
-     1181, 1129, 1133, 2413, 1130, 1126, 1143, 1123, 1144, 1134,
-     1185, 1138, 2413, 1152, 1150, 1153, 1137, 1149, 1155, 1141,
-     1201, 1154, 1159, 1146, 1157, 1149, 1155, 1151, 1169, 1170,
-     1171, 2413, 2413, 1169, 2413, 1171, 2413, 1156, 1167, 1158,
-     1177, 1170, 1168, 1220, 1177, 1174, 1218, 1182, 1171, 1178,
-     1183, 1180, 1186, 2413, 1179, 1171, 1232, 2413, 1233, 1180,
-     1187, 1231, 1193, 2413, 2413, 1190, 2413, 1181, 2413, 1181,
-     1184, 1198, 1203, 1186, 1197, 1246, 1203, 1204, 1205, 1245,
-     1201, 1252, 1205, 1249, 1255, 2413, 1202, 1257, 1258, 1215,
-
-     1216, 1218, 2413, 2413, 1201, 1263, 1259, 1223, 1207, 1219,
-     1238, 1269, 2413, 1226, 1217, 1228, 1273, 1210, 1221, 1236,
-     1272, 1224, 2413, 1220, 1236, 1224, 1238, 1239, 1236, 1280,
-     1243, 1233, 1243, 1249, 1237, 1237, 1292, 1288, 1294, 1251,
-     2413, 1254, 1253, 1255, 1248, 1257, 1258, 1256, 1246, 1249,
-     1249, 1308, 1255, 1310, 1257, 1312, 1255, 1260, 1315, 2413,
-     1273, 1253, 1268, 1261, 1264, 1277, 1280, 1279, 1277, 1326,
-     1280, 2413, 2413, 1276, 1286, 1271, 1327, 1288, 1274, 1335,
-     1336, 1280, 1290, 1339, 1296, 2413, 1288, 1288, 1290, 1292,
-     1345, 1288, 2413, 1289, 1307, 2413, 1291, 2413, 2413, 1307,
-
-     1290, 1310, 1311, 2413, 1298, 1306, 1358, 1307, 1339, 2413,
-     1361, 1311, 1358, 2413, 1306, 1365, 1315, 1309, 1306, 1309,
-     1312, 1312, 1308, 1330, 1369, 1322, 1334, 1337, 1325, 1328,
-     1321, 1381, 1329, 2413, 1325, 2413, 1327, 1386, 1339, 1330,
-     1345, 1345, 1348, 1348, 1345, 1389, 1351, 2413, 1343, 2413,
-     1344, 2413, 1354, 1346, 2413, 1395, 1357, 1358, 1355, 1399,
-     1347, 1362, 1402, 1364, 1356, 2413, 1353, 1353, 1359, 1358,
-     1356, 1371, 1371, 2413, 2413, 1412, 1359, 2413, 1376, 1361,
-     1361, 1363, 1369, 2413, 1378, 1425, 1368, 1374, 1366, 1380,
-     1391, 1385, 1391, 1435, 1388, 1397, 2413, 1394, 1413, 2413,
-
-     1397, 1382, 1442, 2413, 1443, 1400, 1405, 1387, 1447, 1448,
-     1449, 1445, 1409, 1406, 1402, 1395, 1450, 1408, 1409, 2413,
-     1399, 1412, 1460, 2413, 1398, 1458, 1421, 1417, 1462, 1410,
-     1415, 1413, 1472, 1428, 1416, 1475, 1471, 1426, 1478, 1439,
-     1428, 1422, 1482, 1424, 1433, 1426, 1440, 1443, 1488, 1430,
-     1447, 1443, 1433, 1448, 1432, 1490, 1491, 1492, 1439, 1494,
-     1457, 1450, 1449, 1443, 2413, 1460, 1452, 1458, 1449, 1448,
-     1450, 1505, 2413, 1446, 1464, 1513, 1483, 1515, 1468, 2413,
-     2413, 1459, 1470, 1519, 2413, 2413, 2413, 1465, 1470, 1468,
-     1518, 1476, 1481, 1469, 1485, 1474, 1472, 1474, 2413, 1532,
-
-     1478, 1529, 1472, 1477, 1538, 1486, 1496, 1497, 2413, 1543,
-     1496, 1540, 2413, 1491, 1499, 2413, 1490, 1505, 1493, 2413,
-     1503, 1504, 1505, 1554, 1512, 2413, 1551, 1517, 1493, 1511,
-     1512, 1521, 1503, 1509, 1511, 1565, 1524, 1523, 1514, 1564,
-     1511, 1518, 1513, 1514, 1574, 1524, 1576, 1529, 1534, 1527,
-     2413, 1580, 2413, 1529, 1582, 1524, 2413, 1527, 1537, 1581,
-     1529, 1544, 1531, 1546, 1532, 1539, 1539, 1550, 2413, 1544,
-     1539, 1538, 1598, 1551, 2413, 1595, 1546, 1543, 2413, 1557,
-     1544, 1565, 1561, 1563, 1608, 1561, 1558, 1566, 1560, 2413,
-     1613, 1554, 1556, 1572, 1565, 1555, 1571, 1572, 1566, 1582,
-
-     2413, 1572, 1624, 1584, 1568, 1622, 1586, 1581, 1630, 2413,
-     1572, 2413, 1579, 1633, 1629, 2413, 1591, 2413, 1631, 1593,
-     1594, 1579, 1580, 1588, 1642, 1590, 1639, 1640, 1595, 1607,
-     1604, 1595, 1602, 2413, 1599, 1604, 1602, 1654, 1655, 1603,
-     1600, 1614, 1601, 2413, 1616, 1617, 1618, 1619, 2413, 1609,
-     1621, 1666, 1623, 1668, 1610, 1618, 1612, 1620, 1633, 2413,
-     1634, 1615, 1622, 1613, 1625, 2413, 1674, 1635, 2413, 1639,
-     1624, 1624, 1639, 1632, 1631, 1642, 1629, 2413, 1645, 1633,
-     1636, 1692, 1650, 1641, 1653, 1644, 1653, 1655, 1659, 2413,
-     2413, 1652, 1643, 1643, 1703, 1646, 1705, 1647, 1707, 1665,
-
-     1709, 2413, 1710, 2413, 1706, 1668, 1665, 1670, 1657, 1665,
-     1676, 1673, 1719, 1660, 1663, 1668, 1659, 1724, 1677, 1678,
-     1668, 1685, 1684, 1725, 1669, 1688, 1689, 2413, 1686, 1735,
-     1692, 1693, 1738, 1695, 1698, 1685, 1694, 1695, 2413, 1744,
-     2413, 1697, 2413, 1706, 2413, 2413, 1688, 1748, 1695, 1750,
-     1693, 1752, 1700, 1749, 2413, 1711, 1716, 1757, 1716, 2413,
-     1707, 1697, 1756, 1722, 1715, 1711, 1765, 1708, 1710, 1715,
-     2413, 1711, 1713, 2413, 1718, 1728, 1713, 1721, 1723, 2413,
-     1724, 1718, 1730, 2413, 1726, 2413, 1736, 2413, 1737, 1727,
-     1783, 1732, 2413, 1734, 1742, 1787, 1728, 1730, 1727, 1751,
-
-     2413, 1738, 1745, 1748, 1737, 1791, 1738, 1746, 1755, 1754,
-     1757, 1758, 1759, 1752, 1747, 1748, 1748, 1754, 2413, 1754,
-     1766, 1811, 2413, 1757, 1769, 1814, 1763, 1765, 1763, 1818,
-     1771, 1758, 1773, 1778, 1823, 1824, 1825, 1826, 1827, 1784,
-     1829, 1830, 1831, 1778, 1782, 1776, 2413, 1792, 1836, 2413,
-     1793, 1778, 1796, 2413, 1787, 1801, 1797, 1790, 2413, 2413,
-     2413, 2413, 2413, 1844, 2413, 2413, 2413, 1794, 1802, 1847,
-     1808, 2413, 1849, 1791, 1851, 1806, 1805, 1806, 1796, 2413,
-     1856, 1852, 2413, 1799, 2413, 1811, 2413, 1860, 1802, 1818,
-     1863, 2413, 1824, 1821, 1813, 2413, 1863, 1812, 2413, 1824,
-
-     1817, 1872, 1820, 1815, 1817, 1832, 1817, 2413, 1878, 1831,
-     1880, 1881, 1829, 2413, 1831, 2413, 2413, 1825, 1841, 1886,
-     1887, 2413, 2413, 2413, 1893, 1896, 1899, 1900, 1902, 1905,
-     1908, 1911
+     2429, 2430,   34, 2425,  145,    0,  207, 2430,  214,  221,
+       13,  228, 2430, 2405,  118,   25,    2,    6, 2430, 2430,
+       73,   11,   17, 2430, 2430, 2430,  104, 2413, 2366,    0,
+     2403,  108, 2420,   24,  256, 2430,   67, 2369, 2389,   84,
+       75, 2389,   88,  226,   91,   89,  284,  196,  203,  279,
+      193,  224,  216,   60,  242, 2369,  286,  288,  314,  300,
+      319, 2352,  204,  324,  356,  329, 2371,    0,  380,  400,
+      420,  427,  406, 2430,    0, 2430,  385,  443,  238,  241,
+      310,  269,  299,  314, 2430, 2368, 2409, 2430,  405, 2430,
+
+      419,  400, 2366, 2407,  326,   10,  262,  407,  224,  409,
+      352,  206, 2406,    0,  480,  412, 2348,  415, 2356,  406,
+     2352, 2341, 2342, 2347,  442, 2357, 2340, 2349,  327,  431,
+      226, 2343, 2341,  452, 2330, 2388,  399, 2333, 2386, 2326,
+      441, 2347, 2347, 2341,  339, 2334, 2332, 2333, 2325, 2330,
+     2324,  414, 2335,  456, 2320, 2319, 2333,  454, 2371, 2318,
+      451, 2330,  474, 2318,  490, 2319,  476, 2331, 2328, 2329,
+      293, 2327, 2362, 2361,  449, 2307, 2307, 2311, 2307, 2299,
+     2316, 2308,    0,  457,  491,  401,  489,  501,  496, 2307,
+     2430,  510, 2302, 2430,  498,  508, 2430, 2356,  514, 2355,
+
+      515, 2354,  512, 2353, 2430, 2430,  558, 2352,  522, 2311,
+     2303, 2307, 2308, 2303, 2302,  219,  528, 2345, 2339, 2303,
+     2284, 2281, 2289, 2295, 2283, 2297, 2293, 2294, 2294, 2289,
+     2281, 2283, 2267, 2271, 2284, 2286, 2283, 2275, 2265, 2268,
+     2282, 2430, 2268, 2276,   80, 2261, 2260, 2269, 2311, 2258,
+     2268, 2308,  546, 2267, 2306, 2251, 2253, 2264, 2302,  528,
+     2306, 2260, 2240, 2255,  539, 2245, 2251,  513, 2242, 2240,
+     2243, 2239, 2245, 2236, 2235, 2248, 2241, 2231, 2242, 2246,
+     2245, 2239,  431, 2246, 2241, 2233, 2223, 2238, 2233, 2237,
+      523, 2235, 2221, 2227, 2234, 2216,  410, 2221, 2218, 2217,
+
+      555, 2212, 2226, 2225, 2224, 2227, 2209, 2217,  553, 2430,
+     2430,  561, 2430, 2430, 2204,  519, 2251,  564, 2262, 2430,
+      535, 2430, 2261, 2430, 2255,  601, 2430,  553, 2195, 2214,
+     2197, 2214, 2202, 2254, 2209, 2212, 2203, 2206, 2201,  549,
+     2430, 2203,  590, 2242, 2200, 2197, 2198,  619, 2202, 2242,
+     2190, 2185, 2182, 2178, 2180, 2231, 2188, 2177, 2193, 2227,
+     2173,  626, 2186, 2186, 2169, 2170, 2183, 2181, 2169, 2179,
+     2178, 2173, 2180, 2175, 2160,  572, 2169, 2172, 2167,  577,
+     2166, 2162, 2212,  570,  605, 2430, 2171, 2205, 2155, 2154,
+     2147, 2149, 2161, 2152, 2159, 2140, 2157, 2146, 2151,  591,
+
+     2198, 2151,  591, 2148, 2151, 2151, 2149, 2138, 2138, 2150,
+      583, 2125, 2126, 2147,  603, 2129, 2126, 2140, 2143, 2138,
+     2124, 2136, 2135, 2134, 2129, 2171, 2131, 2130, 2129, 2128,
+      543, 2171, 2130, 2169, 2168, 2110,  648, 2123, 2430, 2430,
+     2122,  607, 2164, 2163, 2430, 2162, 2430,  628,  677,  620,
+     2161, 2155, 2108, 2110, 2098, 2430, 2103, 2096, 2108, 2111,
+     2094, 2109, 2096, 2095, 2430, 2105,  612, 2096, 2093, 2105,
+      617, 2090, 2092, 2430, 2098, 2083, 2085, 2096, 2094, 2089,
+      652, 2096, 2084, 2077, 2128, 2430, 2075, 2091, 2125, 2129,
+     2085, 2079, 2081, 2082, 2066, 2083, 2117, 2068, 2067, 2062,
+
+     2061, 2063, 2059, 2055,  617, 2074, 2048, 2055, 2060, 2053,
+     2069, 2103, 2107, 2430, 2052, 2048, 2104, 2055, 2054, 2048,
+     2055, 2040, 2050, 2038, 2052, 2052, 2040, 2036, 2038, 2033,
+     2430, 2090, 2430, 2032, 2031, 2024, 2041, 2080, 2079, 2024,
+     2029, 2038, 2032, 2026, 2035,  659, 2072, 2034, 2017, 2017,
+     2012, 2008, 2014, 2019,  650, 2021, 2025, 2008, 2066, 2007,
+     2007, 2058, 2003, 2004, 2003, 2015, 2004, 2430, 2014, 2430,
+     2430, 2003, 2430, 2013, 2049, 2009, 2052, 2430, 2430, 2430,
+      636,  645,  675, 2430,  641, 2011, 1991, 2044, 1989, 1999,
+     2041, 1986, 1985, 1984, 1991, 1984, 1992, 1995, 1977, 1977,
+
+     1992, 1991,  646, 1990, 1989, 1973, 1988, 1970, 2017, 1984,
+     2022, 1966, 1968, 1980, 1980, 1979, 2430, 1964, 1961, 2019,
+     1974, 1966, 1972, 1963, 1971, 2430, 1956, 1967, 1971, 1953,
+     1965, 1966,  634, 1948, 1947, 1941, 1946, 1943, 1958, 1957,
+     1958, 1937, 1947, 1953, 1996, 1951, 1950, 1942, 1933, 2430,
+     1934, 1936, 2430, 1938, 1943, 1982, 1981,   16, 1942, 1979,
+     1924, 1977, 1924, 1927, 1928, 1919, 2430, 1933, 1919,  703,
+     1911, 1915, 1931, 1928, 1920, 1965, 1917, 1924, 1962, 2430,
+     1908, 1906, 1920, 1904, 1918, 1921, 1955, 1954, 1953, 1900,
+     1951, 1896, 1949, 1948, 2430, 1893, 1907, 1906,  711, 1907,
+
+     1906, 1903, 1903, 1940, 1900, 1889, 1891, 2430, 2430,  651,
+      670, 1883, 1900, 1892, 1879, 1873, 1894, 1935, 1893,  670,
+     1928, 1888, 1926, 1925, 1877, 1871, 1874, 1882, 1881,   80,
+      161,  226,  294,  296,  552,  570,  563,  623,  687,  662,
+      672,  655,  661,  673,  720,  726,  683,  685, 2430,  688,
+      683,  675,  690,  695,  692,  689,  696,  695,  683,  697,
+      695,  703,  739,  701,  746,  748,  692,  705,  691,  701,
+      748,  706,  756, 2430,  757,  713,  711,  713,  709,  703,
+      763,  759,  722,  711, 2430,  713,  724,  713,  726,  716,
+      729,  773,  716,  775,  718,  733, 2430,  727,  721,  732,
+
+      717,  728,  741,  720,  726,  781,  745,  729,  729,  742,
+      786,  787,  788,  735,  753,  748,  755,  754,  751,  736,
+      748,  749,  756,  746,  744, 2430,  809,  767,  768,  758,
+      770,  760,  773,  764,  770,  814,  790,  777,  759,  766,
+      780,  825,  775, 2430,  779,  774,  789,  786,  772,  779,
+      778,  776,  795,  792,  793,  781,  788,  789,  798,  802,
+      838,  800,  790,  803,  789,  789,  795,  851,  792,  793,
+      799,  815,  798,  852,  807, 2430,  817,  817,  810,  821,
+      819,  864,  806,  808,  823,  824,  812,  810,  872,  829,
+      815,  821,  819, 2430, 2430,  835,  834,  835,  840,  828,
+
+      838,  840, 2430, 2430,  840,  842,  829,  847,  834, 2430,
+      832,  850,  837,  837,  888,  835,  839,  857,  898, 2430,
+      899, 2430,  844,  858,  858,  903,  851,  850,  854,  848,
+      908,  861,  851,  852,  848,  858,  862,  873,  857,  875,
+      870,  872,  865,  867,  868,  864,  881,  871,  886,  927,
+      884,  889,  866,  889,  875,  874, 2430,  881,  882,  897,
+      887,  885,  935,  882,  897,  915,  923,  892,  941,  903,
+      943, 2430,  909,  899,  898,  893,  894,  906,  913,  902,
+      903,  899,  917,  903,  904,  914,  923,  959,  906,  924,
+      917,  912,  966,  972,  929,  920, 2430,  924,  932,  934,
+
+      919,  935,  925,  937,  931,  978,  944,  928,  929, 2430,
+      945,  948,  931,  933,  991,  934,  953, 2430,  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, 2430, 2430,  969, 1016,  969, 2430,  977,
+      980,  973, 1026, 2430,  976,  981, 1025,  976,  977,  989,
+      983,  987,  985,  983,  994, 1039,  983,  988,  985, 1043,
+     1044,  988, 1000, 2430,  988,  996,  995, 1046,  988, 1009,
+      995,  996, 1005, 1017, 1004, 1002, 1016, 1017, 1033, 1038,
+     1020, 1025, 1008, 1008, 1010, 1021, 1011, 1031, 1030, 1021,
+
+     1010, 1027, 1034, 1077, 1019, 1039, 1032, 1036, 1040, 1023,
+     1040, 1031, 1086, 1033, 1037, 2430, 1084, 1035, 1034, 1034,
+     1055, 1052, 1092, 1041, 1059, 1060, 1046, 1054, 1063, 1043,
+     1058, 1065, 1107, 1108, 2430, 1061, 1110, 1111, 1053, 1063,
+     1073, 1057, 1077, 1060, 1062, 1062, 1069, 1078, 1066, 1073,
+     1068, 1075, 1087, 1128, 1075, 1074, 1091, 1132, 1082, 1086,
+     1084, 1082, 1077, 1138, 1089, 1140, 1090, 1142, 1138, 1144,
+     1097, 2430, 1102, 1095, 1086, 1105, 1099, 1094, 1104, 1101,
+     1106, 1103, 1115, 2430, 1099, 1101, 1096, 2430, 2430, 1102,
+     1162, 1101, 1120, 1121, 1123, 1162, 1115, 1169, 1170, 1123,
+
+     1108, 1122, 1130, 1112, 1117, 1156, 1147, 1179, 1134, 1134,
+     1138, 1125, 1125, 1128, 1145, 1140, 1144, 1189, 1137, 1141,
+     2430, 1138, 1134, 1151, 1131, 1152, 1142, 1193, 1146, 2430,
+     1160, 1158, 1161, 1145, 1157, 1163, 1149, 1209, 1162, 1167,
+     1154, 1165, 1157, 1163, 1159, 1177, 1178, 1179, 2430, 2430,
+     1177, 2430, 1179, 2430, 1164, 1175, 1166, 1185, 1178, 1176,
+     1228, 1185, 1182, 1226, 1190, 1179, 1186, 1191, 1188, 1194,
+     2430, 1187, 1179, 1240, 2430, 1241, 1188, 1195, 1239, 1201,
+     2430, 1202, 2430, 1199, 2430, 1190, 2430, 1190, 1193, 1207,
+     1212, 1195, 1206, 1255, 1212, 1213, 1214, 1254, 1210, 1261,
+
+     1214, 1258, 1264, 2430, 1211, 1266, 1267, 1224, 1225, 1227,
+     2430, 2430, 1210, 1272, 1268, 1232, 1216, 1228, 1247, 1278,
+     2430, 1235, 1226, 1237, 1282, 1219, 1230, 1245, 1281, 1233,
+     2430, 1229, 1245, 1233, 1247, 1248, 1245, 1289, 1252, 1242,
+     1252, 1258, 1246, 1246, 1301, 1297, 1303, 1260, 2430, 1263,
+     1262, 1264, 1257, 1266, 1267, 1265, 1255, 1258, 1258, 1317,
+     1264, 1319, 1266, 1321, 1264, 1269, 1324, 2430, 1282, 1262,
+     1277, 1270, 1273, 1286, 1289, 1288, 1286, 1335, 1289, 2430,
+     2430, 1285, 1295, 1280, 1336, 1283, 1298, 1284, 1345, 1346,
+     1290, 1300, 1349, 1306, 2430, 1298, 1298, 1300, 1302, 1355,
+
+     1298, 2430, 1299, 1317, 2430, 1301, 2430, 2430, 1317, 1300,
+     1320, 1321, 2430, 1308, 1316, 1368, 1317, 1349, 2430, 1371,
+     1321, 1368, 2430, 1316, 1375, 1325, 1319, 1316, 1319, 1322,
+     1322, 1318, 1340, 1379, 1332, 1344, 1347, 1335, 1338, 1331,
+     1391, 1339, 2430, 1335, 2430, 1337, 1396, 1349, 1340, 1355,
+     1355, 1358, 1358, 1355, 1399, 1361, 2430, 1353, 2430, 1354,
+     2430, 1364, 1356, 2430, 1405, 1367, 1368, 1365, 1409, 1357,
+     1372, 1412, 1374, 1366, 2430, 1363, 1363, 1369, 1368, 1366,
+     1420, 1382, 1382, 2430, 2430, 1423, 1370, 2430, 1387, 1372,
+     1372, 1374, 1380, 2430, 1389, 1436, 1379, 1385, 1377, 1391,
+
+     1402, 1396, 1402, 1446, 1399, 1408, 2430, 1405, 1424, 2430,
+     1408, 1393, 1453, 2430, 1454, 1411, 1416, 1398, 1458, 1459,
+     1460, 1456, 1420, 1417, 1413, 1406, 1461, 1419, 1420, 2430,
+     1410, 1423, 1471, 2430, 1409, 1469, 1432, 1428, 1473, 1421,
+     1426, 1424, 1483, 1439, 1427, 1486, 1482, 1437, 1489, 1450,
+     1439, 1433, 1493, 1435, 1444, 1437, 1451, 1454, 1499, 1441,
+     1458, 1454, 1452, 1445, 1460, 1444, 1502, 1503, 1504, 1451,
+     1506, 1469, 1462, 1461, 1455, 2430, 1472, 1464, 1470, 1461,
+     1460, 1462, 1517, 2430, 1458, 1476, 1525, 1495, 1527, 1480,
+     2430, 2430, 1471, 1482, 1531, 2430, 2430, 2430, 1477, 1482,
+
+     1480, 1530, 1488, 1493, 1481, 1497, 1486, 1485, 1486, 2430,
+     1544, 1490, 1541, 1484, 1489, 1550, 1498, 1508, 1509, 2430,
+     1555, 1508, 1552, 2430, 1503, 1511, 2430, 1502, 1517, 1505,
+     2430, 1515, 1516, 1517, 1566, 1524, 2430, 1563, 1529, 1505,
+     1523, 1524, 1525, 1534, 1516, 1522, 1524, 1578, 1537, 1536,
+     1527, 1577, 1524, 1531, 1526, 1527, 1587, 1537, 1589, 1542,
+     1547, 1540, 2430, 1593, 2430, 1542, 1595, 1537, 2430, 1540,
+     1550, 1594, 1542, 1557, 1544, 1559, 1545, 1552, 1552, 1563,
+     2430, 1557, 1552, 1551, 1611, 1564, 2430, 1608, 1559, 1556,
+     2430, 1570, 1557, 1578, 1574, 1576, 1621, 1574, 1571, 1579,
+
+     1573, 2430, 1626, 1567, 1569, 1585, 1578, 1579, 1569, 1585,
+     1586, 1580, 1596, 2430, 1586, 1638, 1598, 1582, 1636, 1600,
+     1595, 1644, 2430, 1586, 2430, 1593, 1647, 1643, 2430, 1605,
+     2430, 1645, 1607, 1608, 1593, 1594, 1602, 1656, 1604, 1653,
+     1654, 1609, 1621, 1618, 1609, 1616, 2430, 1613, 1618, 1616,
+     1668, 1669, 1617, 1614, 1628, 1615, 2430, 1630, 1631, 1632,
+     1633, 2430, 1623, 1635, 1680, 1633, 1638, 1683, 1625, 1633,
+     1627, 1635, 1648, 2430, 1649, 1630, 1637, 1628, 1640, 2430,
+     1689, 1650, 2430, 1654, 1639, 1639, 1654, 1647, 1646, 1657,
+     1644, 2430, 1660, 1648, 1651, 1707, 1665, 1656, 1668, 1659,
+
+     1668, 1670, 1674, 2430, 2430, 1667, 1658, 1658, 1718, 1661,
+     1720, 1662, 1722, 1680, 1724, 2430, 1666, 1726, 2430, 1722,
+     1684, 1681, 1686, 1673, 1681, 1692, 1689, 1735, 1676, 1679,
+     1684, 1675, 1740, 1693, 1694, 1684, 1701, 1700, 1741, 1685,
+     1704, 1705, 2430, 1702, 1751, 1708, 1709, 1754, 1711, 1714,
+     1701, 1710, 1711, 2430, 1760, 2430, 1713, 2430, 1722, 2430,
+     1763, 2430, 1705, 1765, 1712, 1767, 1710, 1769, 1717, 1766,
+     2430, 1728, 1733, 1774, 1733, 2430, 1724, 1714, 1773, 1739,
+     1732, 1728, 1782, 1725, 1727, 1732, 2430, 1728, 1730, 2430,
+     1735, 1745, 1730, 1738, 1740, 2430, 1741, 1735, 2430, 1747,
+
+     2430, 1743, 2430, 1753, 2430, 1754, 1744, 1800, 1749, 2430,
+     1751, 1759, 1804, 1745, 1747, 1744, 1768, 2430, 1755, 1762,
+     1765, 1754, 1808, 1755, 1763, 1772, 1771, 1774, 1775, 1776,
+     1769, 1764, 1765, 1765, 1771, 2430, 1771, 1783, 1828, 2430,
+     1774, 1786, 1831, 1780, 1782, 1780, 1835, 1788, 1775, 1790,
+     1795, 1840, 1841, 1842, 1843, 1844, 1801, 1846, 1847, 1848,
+     1795, 1799, 1793, 2430, 1809, 1853, 2430, 1810, 1795, 1813,
+     2430, 1804, 1818, 1814, 1807, 2430, 2430, 2430, 2430, 2430,
+     1861, 2430, 2430, 2430, 1811, 1819, 1864, 1825, 2430, 1866,
+     1808, 1868, 1823, 1822, 1823, 1813, 2430, 1873, 1869, 2430,
+
+     1816, 2430, 1828, 2430, 1877, 1819, 1835, 1880, 2430, 1841,
+     1838, 1830, 2430, 1880, 1829, 2430, 1841, 1834, 1889, 1837,
+     1832, 1834, 1849, 1834, 2430, 1895, 1848, 1897, 1898, 1846,
+     2430, 1848, 2430, 2430, 1842, 1858, 1903, 1904, 2430, 2430,
+     2430, 1910, 1913, 1916, 1917, 1919, 1922, 1925, 1928
     } ;
 
-static const flex_int16_t yy_def[2033] =
+static const flex_int16_t yy_def[2050] =
     {   0,
-     2025, 2025, 2026, 2026, 2025, 2025, 2025, 2025, 2025, 2025,
-     2024, 2024, 2024, 2024, 2024, 2027, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2028,
-     2024, 2024, 2024, 2029,   15, 2024,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2030,   45,   45,   45,
+     2042, 2042, 2043, 2043, 2042, 2042, 2042, 2042, 2042, 2042,
+     2041, 2041, 2041, 2041, 2041, 2044, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2045,
+     2041, 2041, 2041, 2046,   15, 2041,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2047,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2027, 2024, 2024,
-     2024, 2024, 2024, 2024, 2031, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2028, 2024, 2029, 2024,
+       45,   45,   45,   45,   45,   45,   45, 2044, 2041, 2041,
+     2041, 2041, 2041, 2041, 2048, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2045, 2041, 2046, 2041,
 
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2032,   45, 2030,   45,   45,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2049,   45, 2047,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2031, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024,   45,   45, 2024,   45,   45, 2024,   45,   45,   45,
+       45,   45, 2048, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041,   45,   45, 2041,   45,   45, 2041,   45,   45,   45,
 
-       45,   45,   45, 2032, 2024, 2024,  115,   45,   45,   45,
+       45,   45,   45, 2049, 2041, 2041,  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,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024,   45,   45,   45,   45, 2024,
-       45, 2024,   45, 2024,   45,  115, 2024,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041,   45,   45,   45,   45, 2041,
+       45, 2041,   45, 2041,   45,  115, 2041,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024, 2024, 2024,
-       45,   45,   45, 2024,   45, 2024,   45,  115,   45,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2041, 2041,
+     2041,   45,   45,   45, 2041,   45, 2041,   45,  115,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2041,   45, 2041,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2024,   45, 2024, 2024,   45,
-     2024,   45,   45, 2024,   45, 2024, 2024, 2024,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2041,   45, 2041,
+     2041,   45, 2041,   45,   45, 2041,   45, 2041, 2041, 2041,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024,   45,   45,
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2024,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45,   45, 2041,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45, 2024, 2024,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2041, 2041,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2041,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
-     2024,   45,   45,   45,   45,   45,   45,   45, 2024, 2024,
-
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
-       45,   45,   45,   45, 2024,   45, 2024,   45,   45,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041, 2041,   45,   45,   45,   45,   45,
+
+       45,   45, 2041, 2041,   45,   45,   45,   45,   45, 2041,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2024,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
 
-       45,   45,   45,   45, 2024,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45,   45,   45,   45,   45,   45,   45, 2041,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024, 2024,   45,
-       45,   45, 2024,   45,   45,   45,   45, 2024,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024,   45,   45,
+       45,   45,   45, 2041, 2041,   45,   45,   45, 2041,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2024,   45,   45,   45,
-     2024, 2024,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45, 2041, 2041,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024, 2024,   45, 2024,   45, 2024,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2041, 2041,
+       45, 2041,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45, 2024,   45,   45,
-       45,   45,   45, 2024, 2024,   45, 2024,   45, 2024,   45,
+     2041,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
+     2041,   45, 2041,   45, 2041,   45, 2041,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
 
-       45,   45, 2024, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+     2041, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2041,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
+       45,   45,   45,   45,   45,   45,   45, 2041,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
+
+       45, 2041,   45,   45, 2041,   45, 2041, 2041,   45,   45,
+       45,   45, 2041,   45,   45,   45,   45,   45, 2041,   45,
+       45,   45, 2041,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2024, 2024,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45, 2024,   45, 2024, 2024,   45,
-
-       45,   45,   45, 2024,   45,   45,   45,   45,   45, 2024,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
+       45,   45, 2041,   45, 2041,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45, 2041,   45,
+     2041,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041, 2041,   45,   45, 2041,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 2041,   45,   45, 2041,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45, 2024,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024,   45, 2024,
-       45, 2024,   45,   45, 2024,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
-       45,   45,   45, 2024, 2024,   45,   45, 2024,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2024,   45,   45, 2024,
-
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+     2041, 2041,   45,   45,   45, 2041, 2041, 2041,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2041,
+       45,   45,   45, 2041,   45,   45, 2041,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45, 2024,
-     2024,   45,   45,   45, 2024, 2024, 2024,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
-       45,   45, 2024,   45,   45, 2024,   45,   45,   45, 2024,
-       45,   45,   45,   45,   45, 2024,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2041,   45, 2041,   45,   45,   45, 2041,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2024,   45, 2024,   45,   45,   45, 2024,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45, 2024,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
+     2041,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45,   45,
+       45,   45, 2041,   45, 2041,   45,   45,   45, 2041,   45,
+     2041,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45,   45,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45,   45,   45,   45,   45, 2041,
+       45,   45, 2041,   45,   45,   45,   45,   45,   45,   45,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45, 2041, 2041,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2041,   45,   45, 2041,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-     2024,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
-       45, 2024,   45,   45,   45, 2024,   45, 2024,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2024,   45,   45,   45,   45, 2024,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
-       45,   45,   45,   45,   45, 2024,   45,   45, 2024,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2024,
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45, 2024,   45, 2024,   45,   45,   45,   45,   45,   45,
+       45,   45, 2041,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2041,   45, 2041,   45, 2041,   45, 2041,
+       45, 2041,   45,   45,   45,   45,   45,   45,   45,   45,
+     2041,   45,   45,   45,   45, 2041,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45, 2041,
+       45,   45,   45,   45,   45, 2041,   45,   45, 2041,   45,
+
+     2041,   45, 2041,   45, 2041,   45,   45,   45,   45, 2041,
+       45,   45,   45,   45,   45,   45,   45, 2041,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2024,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
-     2024,   45, 2024,   45, 2024, 2024,   45,   45,   45,   45,
-       45,   45,   45,   45, 2024,   45,   45,   45,   45, 2024,
+       45,   45,   45,   45,   45, 2041,   45,   45,   45, 2041,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2024,   45,   45, 2024,   45,   45,   45,   45,   45, 2024,
-       45,   45,   45, 2024,   45, 2024,   45, 2024,   45,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
-
-     2024,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2024,   45,
-       45,   45, 2024,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2024,   45,   45, 2024,
-       45,   45,   45, 2024,   45,   45,   45,   45, 2024, 2024,
-     2024, 2024, 2024,   45, 2024, 2024, 2024,   45,   45,   45,
-       45, 2024,   45,   45,   45,   45,   45,   45,   45, 2024,
-       45,   45, 2024,   45, 2024,   45, 2024,   45,   45,   45,
-       45, 2024,   45,   45,   45, 2024,   45,   45, 2024,   45,
-
-       45,   45,   45,   45,   45,   45,   45, 2024,   45,   45,
-       45,   45,   45, 2024,   45, 2024, 2024,   45,   45,   45,
-       45, 2024, 2024,    0, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024
+       45,   45,   45, 2041,   45,   45, 2041,   45,   45,   45,
+     2041,   45,   45,   45,   45, 2041, 2041, 2041, 2041, 2041,
+       45, 2041, 2041, 2041,   45,   45,   45,   45, 2041,   45,
+       45,   45,   45,   45,   45,   45, 2041,   45,   45, 2041,
+
+       45, 2041,   45, 2041,   45,   45,   45,   45, 2041,   45,
+       45,   45, 2041,   45,   45, 2041,   45,   45,   45,   45,
+       45,   45,   45,   45, 2041,   45,   45,   45,   45,   45,
+     2041,   45, 2041, 2041,   45,   45,   45,   45, 2041, 2041,
+        0, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041
     } ;
 
-static const flex_int16_t yy_nxt[2487] =
+static const flex_int16_t yy_nxt[2504] =
     {   0,
-     2024,   13,   14,   13, 2024,   15,   16, 2024,   17,   18,
+     2041,   13,   14,   13, 2041,   15,   16, 2041,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  782,   37,   14,   37,   85,   25,   26,   38,  100,
-     2024,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  785,   37,   14,   37,   85,   25,   26,   38,  100,
+     2041,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  196,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      783,   13,   14,   13,   33,   40,  101,   90,   91,  196,
+      786,   13,   14,   13,   33,   40,  101,   90,   91,  196,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  102,   25,   26,
@@ -1444,7 +1448,7 @@ static const flex_int16_t yy_nxt[2487] =
       106,   42,   41,   29,  108,   30,  111,  112,   92,  134,
        41,   25,   31,  102,  135,  367,   87,  136,   87,  105,
        32,   88,   88,   88,   88,   88,   33,  108,  106,  111,
-      856,  112,  368,   34,   35,   44,   44,   44,   45,   45,
+      858,  112,  368,   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,
@@ -1452,13 +1456,13 @@ static const flex_int16_t yy_nxt[2487] =
        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,  857,
+       76,   77,   56,   45,   45,   45,   45,   45,   79,  859,
        80,   80,   80,   80,   80,   79,  102,   82,   82,   82,
        82,   82,  203,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  105,   81,  118,  164,
       109,  129,  116,  165,   81,  203,   81,  200,  117,  119,
       110,  130,  120,   81,  121,  132,  122,  197,  184,  105,
-       81,  185,  133,  109,  858,  233,  335,   81,   45,  336,
+       81,  185,  133,  109,  860,  233,  335,   81,   45,  336,
       131,   45,   45,   45,  200,   45,   45,   45,  110,  114,
       137,  234,   45,   45,  184,   45,   45,  185,  198,  184,
 
@@ -1466,9 +1470,9 @@ static const flex_int16_t yy_nxt[2487] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  123,  187,   45,  124,  125,  185,
        45,  126,  127,  145,   45,  141,  142,  146,  296,  143,
-      108,  147,   45,  859,  128,  144,   45,  186,   45,  115,
+      108,  147,   45,  861,  128,  144,   45,  186,   45,  115,
       153,  186,  297,  148,  111,  188,  195,  149,  154,  150,
-      155,  151,  860,  152,  158,  156,  157,  159,  160,  166,
+      155,  151,  862,  152,  158,  156,  157,  159,  160,  166,
       173,  174,  228,  167,  229,  186,  168,  111,  161,  189,
       109,  162,  195,  169,  170,  202,  252,  180,  171,  172,
       110,  230,  181,   83,   83,   83,   83,   83,   88,   88,
@@ -1480,126 +1484,126 @@ static const flex_int16_t yy_nxt[2487] =
        82,   82,   82,   82,   82,  199,  201,  101,  243,   81,
       311,  192,  199,   81,  215,   81,   88,   88,   88,   88,
        88,   99,  211,  216,  217,   99,  262,  192,  208,   99,
-      425,  212,  426,  199,  201,  213,   81,   99,  231,  209,
-      260,   99,  200,   99,   99,  206,  247,  409,  222,  223,
-      410,  232,  309,  207,  207,  207,  207,  207,  224,  248,
+      426,  212,  427,  199,  201,  213,   81,   99,  231,  209,
+      260,   99,  200,   99,   99,  206,  247,  410,  222,  223,
+      411,  232,  309,  207,  207,  207,  207,  207,  224,  248,
 
       280,  267,  207,  207,  207,  207,  207,  207,  237,  301,
       273,  238,  263,  274,  275,  239,  268,  269,  270,  277,
       309,  310,  311,  278,  309,  207,  207,  207,  207,  207,
       207,  310,  316,  318,  290,  281,  282,  283,  291,  319,
       321,  323,  292,  325,  316,  314,  284,  310,  285,  390,
-      286,  287,  312,  288,  321,  316,  376,  313,  533,  441,
-      322,  318,  534,  321,  323,  430,  319,  328,  445,  441,
-      325,  326,  326,  326,  326,  326,  418,  385,  337,  438,
-      326,  326,  326,  326,  326,  326,  338,  438,  441,  419,
-      443,  339,  340,  445,  461,  464,  445,  529,  449,  391,
-
-      465,  861,  438,  326,  326,  326,  326,  326,  326,  377,
-      439,  462,  378,  443,  448,  448,  448,  448,  448,  564,
-      514,  516,  565,  448,  448,  448,  448,  448,  448,  470,
-      515,  485,  502,  503,  504,  471,  486,  509,  505,  575,
-      542,  547,  575,  510,  543,  548,  448,  448,  448,  448,
-      448,  448,  571,  605,  579,  530,  580,  572,  615,  687,
-      677,  596,  862,  616,  639,  678,  606,  575,  707,  597,
-      581,  598,  599,  600,  640,  601,  863,  708,  864,  710,
-      706,  579,  832,  580,  487,  709,  711,  758,  759,  488,
-       45,   45,   45,   45,   45,  707,  822,  833,  868,   45,
-
-       45,   45,   45,   45,   45,  708,  729,  793,  823,  730,
-      832,  688,  794,  842,  843,  869,  844,  870,  871,  872,
-      833,  873,   45,   45,   45,   45,   45,   45,  865,  874,
-      875,  876,  866,  877,  878,  879,  867,  880,  881,  882,
+      286,  287,  312,  288,  321,  316,  376,  313,  394,  442,
+      322,  318,  863,  321,  323,  431,  319,  328,  395,  446,
+      325,  326,  326,  326,  326,  326,  419,  385,  337,  439,
+      326,  326,  326,  326,  326,  326,  338,  439,  442,  420,
+      444,  339,  340,  442,  462,  465,  531,  446,  566,  391,
+
+      466,  567,  439,  326,  326,  326,  326,  326,  326,  377,
+      440,  463,  378,  444,  449,  449,  449,  449,  449,  864,
+      515,  865,  450,  449,  449,  449,  449,  449,  449,  471,
+      516,  486,  503,  504,  505,  472,  487,  510,  506,  446,
+      535,  544,  577,  511,  536,  545,  449,  449,  449,  449,
+      449,  449,  549,  573,  532,  577,  550,  617,  574,  581,
+      690,  582,  618,  598,  680,  607,  641,  517,  710,  681,
+      577,  599,  866,  600,  601,  602,  642,  603,  608,  711,
+      709,  761,  762,  583,  488,  712,  581,  836,  582,  489,
+       45,   45,   45,   45,   45,  710,  837,  867,  713,   45,
+
+       45,   45,   45,   45,   45,  714,  732,  711,  797,  733,
+      868,  872,  691,  798,  873,  836,  826,  846,  847,  837,
+      848,  874,   45,   45,   45,   45,   45,   45,  827,  869,
+      875,  876,  877,  870,  878,  879,  880,  871,  881,  882,
       883,  884,  885,  886,  887,  888,  889,  890,  891,  892,
-      893,  795,  894,  895,  897,  898,  896,  899,  900,  901,
-      902,  903,  904,  905,  906,  907,  908,  909,  910,  911,
+      893,  894,  799,  895,  896,  897,  898,  899,  901,  902,
+      900,  903,  904,  905,  906,  907,  908,  909,  910,  911,
       912,  913,  914,  915,  916,  917,  918,  919,  920,  921,
       922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
-      932,  933,  934,  935,  936,  937,  938,  940,  941,  942,
+      932,  933,  934,  935,  936,  937,  938,  939,  940,  941,
 
-      945,  946,  947,  939,  949,  950,  943,  951,  948,  952,
-      944,  953,  954,  955,  956,  957,  958,  959,  960,  961,
+      942,  943,  945,  946,  947,  950,  951,  952,  944,  954,
+      955,  948,  956,  953,  957,  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,  962,  990,
-      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
-     1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1006,
-     1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
+      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,
+     1012, 1013, 1014, 1015, 1011, 1016, 1017, 1018, 1019, 1020,
      1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
-     1031, 1033, 1034, 1035, 1032, 1036, 1037, 1038, 1039, 1040,
+     1031, 1032, 1033, 1034, 1035, 1036, 1038, 1039, 1040, 1037,
 
      1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
      1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
-     1061, 1062, 1063, 1064, 1066, 1067, 1068, 1069, 1070, 1071,
-     1072, 1073, 1074, 1075, 1076, 1065, 1077, 1078, 1079, 1080,
-     1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
+     1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,
+     1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
+     1082, 1071, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
      1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100,
-     1101, 1102, 1103, 1104, 1105, 1106, 1084, 1107, 1108, 1083,
-     1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
+     1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
+     1111, 1112, 1090, 1113, 1114, 1089, 1115, 1116, 1117, 1118,
      1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
-     1129, 1132, 1133, 1134, 1135, 1130, 1136, 1137, 1138, 1139,
-
-     1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149,
-     1150, 1151, 1152, 1153, 1154, 1155, 1157, 1158, 1159, 1160,
-     1161, 1162, 1163, 1164, 1165, 1166, 1156, 1167, 1168, 1169,
-     1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179,
-     1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1131, 1188,
-     1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
-     1199, 1201, 1200, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
+     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, 1205, 1206, 1208, 1207,
      1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
-     1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1199, 1200,
-     1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
+     1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228,
+     1229, 1230, 1231, 1232, 1233, 1206, 1207, 1234, 1235, 1236,
 
-     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1247,
-     1249, 1250, 1251, 1246, 1252, 1253, 1254, 1255, 1256, 1257,
-     1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
+     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
+     1247, 1248, 1249, 1250, 1251, 1252, 1254, 1256, 1257, 1258,
+     1253, 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, 1248, 1291, 1292, 1293, 1294, 1295, 1296,
-     1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306,
+     1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
+     1255, 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, 1311, 1334, 1335,
+     1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336,
 
-     1336, 1337, 1338, 1312, 1339, 1340, 1341, 1342, 1343, 1344,
-     1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354,
+     1337, 1338, 1339, 1340, 1341, 1319, 1342, 1343, 1344, 1345,
+     1346, 1320, 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, 1392, 1393, 1394, 1395,
-     1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
-     1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1416,
-     1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
+     1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394,
+     1395, 1396, 1397, 1398, 1399, 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, 1409, 1438, 1439, 1440, 1441, 1442, 1443, 1391, 1444,
-     1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454,
-     1455, 1456, 1415, 1457, 1458, 1460, 1461, 1462, 1463, 1464,
-     1465, 1466, 1459, 1467, 1468, 1469, 1470, 1471, 1472, 1473,
-     1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483,
-     1484, 1486, 1487, 1490, 1488, 1485, 1489, 1491, 1492, 1493,
-     1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503,
+     1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446,
+     1418, 1447, 1448, 1449, 1450, 1451, 1452, 1400, 1453, 1454,
+     1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464,
+     1465, 1424, 1466, 1467, 1469, 1470, 1471, 1472, 1473, 1474,
+     1475, 1468, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483,
+     1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493,
+     1494, 1496, 1497, 1500, 1498, 1495, 1499, 1501, 1502, 1503,
      1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513,
-     1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1499, 1522,
-     1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532,
+     1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523,
+     1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1509, 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,
-     1565, 1563, 1566, 1567, 1568, 1569, 1570, 1564, 1571, 1572,
-     1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582,
-     1583, 1584, 1585, 1586, 1587, 1588, 1589, 1591, 1592, 1593,
-     1594, 1595, 1596, 1597, 1598, 1599, 1600, 1590, 1601, 1602,
-     1603, 1577, 1604, 1605, 1606, 1607, 1608, 1609, 1611, 1612,
-     1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622,
+     1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572,
+     1573, 1576, 1574, 1577, 1578, 1579, 1580, 1581, 1575, 1582,
+     1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592,
+     1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1602, 1603,
+     1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1601, 1612,
+     1613, 1614, 1588, 1615, 1616, 1617, 1618, 1619, 1620, 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, 1610, 1668, 1669, 1671, 1672,
-     1673, 1674, 1670, 1675, 1676, 1677, 1678, 1652, 1679, 1680,
-     1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
+     1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672,
+     1673, 1674, 1675, 1676, 1677, 1678, 1621, 1679, 1680, 1681,
+     1683, 1684, 1685, 1686, 1682, 1687, 1688, 1689, 1690, 1664,
      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,
@@ -1634,85 +1638,88 @@ static const flex_int16_t yy_nxt[2487] =
      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,
-     2002, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-     2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,
-     2021, 2022, 2023,   12,   12,   12,   36,   36,   36,   78,
-
-       97,   78,   99,   99,   99,  113,  113,  113,  183,  855,
-      183,  204,  204,  204,  854,  853,  852,  851,  850,  849,
-      848,  847,  846,  845,  841,  840,  839,  838,  837,  836,
-      835,  834,  831,  830,  829,  828,  827,  826,  825,  824,
-      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,  792,  791,  790,  789,
-      788,  787,  786,  785,  784,  781,  780,  779,  778,  777,
-      776,  775,  774,  773,  772,  771,  770,  769,  768,  767,
-      766,  765,  764,  763,  762,  761,  760,  757,  756,  755,
-
-      754,  753,  752,  751,  750,  749,  748,  747,  746,  745,
-      744,  743,  742,  741,  740,  739,  738,  737,  736,  735,
-      734,  733,  732,  731,  728,  727,  726,  725,  724,  723,
-      722,  721,  720,  719,  718,  717,  716,  715,  714,  713,
-      712,  706,  705,  704,  703,  702,  701,  700,  699,  698,
-      697,  696,  695,  694,  693,  692,  691,  690,  689,  686,
-      685,  684,  683,  682,  681,  680,  679,  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,  638,  637,  636,  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,  604,  603,  602,  595,  594,  593,  592,
-      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
-      578,  577,  576,  574,  573,  570,  569,  568,  567,  566,
-      563,  562,  561,  560,  559,  558,  557,  556,  555,  554,
-      553,  552,  551,  550,  549,  546,  545,  544,  541,  540,
-      539,  538,  537,  536,  535,  532,  531,  528,  527,  526,
-      525,  524,  523,  522,  521,  520,  519,  518,  517,  513,
-
-      512,  511,  508,  507,  506,  501,  500,  499,  498,  497,
-      496,  495,  494,  493,  492,  491,  490,  489,  484,  483,
-      482,  481,  480,  479,  478,  477,  476,  475,  474,  473,
-      472,  469,  468,  467,  466,  463,  460,  459,  458,  457,
-      456,  455,  454,  453,  452,  451,  450,  447,  446,  444,
-      442,  440,  437,  436,  435,  434,  433,  432,  431,  429,
-      428,  427,  424,  423,  422,  421,  420,  417,  416,  415,
-      414,  413,  412,  411,  408,  407,  406,  405,  404,  403,
-      402,  401,  400,  399,  398,  397,  396,  395,  394,  393,
-      392,  389,  388,  387,  386,  384,  383,  382,  381,  380,
-
-      379,  375,  374,  373,  372,  371,  370,  369,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
-      354,  353,  352,  351,  350,  349,  348,  347,  346,  345,
-      344,  343,  342,  341,  334,  333,  332,  331,  330,  329,
-      327,  205,  324,  322,  320,  317,  315,  308,  307,  306,
-      305,  304,  303,  302,  300,  299,  298,  295,  294,  293,
-      289,  279,  276,  272,  271,  266,  265,  264,  261,  259,
-      258,  257,  256,  255,  254,  251,  250,  249,  246,  245,
-      244,  241,  240,  236,  235,  227,  226,  225,  221,  220,
-      219,  218,  214,  210,  205,  194,  193,  191,  190,  182,
-
-      163,  140,  107,  104,  103,   43,   98,   96,   95,   86,
-       43, 2024,   11, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024
+     2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+     2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2018, 2020,
+     2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030,
+
+     2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040,
+       12,   12,   12,   36,   36,   36,   78,   97,   78,   99,
+       99,   99,  113,  113,  113,  183,  857,  183,  204,  204,
+      204,  856,  855,  854,  853,  852,  851,  850,  849,  845,
+      844,  843,  842,  841,  840,  839,  838,  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,  796,  795,  794,  793,  792,  791,  790,  789,  788,
+      787,  784,  783,  782,  781,  780,  779,  778,  777,  776,
+
+      775,  774,  773,  772,  771,  770,  769,  768,  767,  766,
+      765,  764,  763,  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,  735,  734,
+      731,  730,  729,  728,  727,  726,  725,  724,  723,  722,
+      721,  720,  719,  718,  717,  716,  715,  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,  679,  678,  677,  676,  675,  674,  673,
+      672,  671,  670,  669,  668,  667,  666,  665,  664,  663,
+
+      662,  661,  660,  659,  658,  657,  656,  655,  654,  653,
+      652,  651,  650,  649,  648,  647,  646,  645,  644,  643,
+      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
+      630,  629,  628,  627,  626,  625,  624,  623,  622,  621,
+      620,  619,  616,  615,  614,  613,  612,  611,  610,  609,
+      606,  605,  604,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  580,  579,  578,
+      576,  575,  572,  571,  570,  569,  568,  565,  564,  563,
+      562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
+      552,  551,  548,  547,  546,  543,  542,  541,  540,  539,
+
+      538,  537,  534,  533,  530,  529,  528,  527,  526,  525,
+      524,  523,  522,  521,  520,  519,  518,  514,  513,  512,
+      509,  508,  507,  502,  501,  500,  499,  498,  497,  496,
+      495,  494,  493,  492,  491,  490,  485,  484,  483,  482,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  470,
+      469,  468,  467,  464,  461,  460,  459,  458,  457,  456,
+      455,  454,  453,  452,  451,  448,  447,  445,  443,  441,
+      438,  437,  436,  435,  434,  433,  432,  430,  429,  428,
+      425,  424,  423,  422,  421,  418,  417,  416,  415,  414,
+      413,  412,  409,  408,  407,  406,  405,  404,  403,  402,
+
+      401,  400,  399,  398,  397,  396,  393,  392,  389,  388,
+      387,  386,  384,  383,  382,  381,  380,  379,  375,  374,
+      373,  372,  371,  370,  369,  366,  365,  364,  363,  362,
+      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  334,  333,  332,  331,  330,  329,  327,  205,  324,
+      322,  320,  317,  315,  308,  307,  306,  305,  304,  303,
+      302,  300,  299,  298,  295,  294,  293,  289,  279,  276,
+      272,  271,  266,  265,  264,  261,  259,  258,  257,  256,
+      255,  254,  251,  250,  249,  246,  245,  244,  241,  240,
+
+      236,  235,  227,  226,  225,  221,  220,  219,  218,  214,
+      210,  205,  194,  193,  191,  190,  182,  163,  140,  107,
+      104,  103,   43,   98,   96,   95,   86,   43, 2041,   11,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+     2041, 2041, 2041
     } ;
 
-static const flex_int16_t yy_chk[2487] =
+static const flex_int16_t yy_chk[2504] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  656,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  658,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  106,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      656,    8,    8,    8,    1,    8,   44,   27,   28,  106,
+      658,    8,    8,    8,    1,    8,   44,   27,   28,  106,
        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,
@@ -1721,7 +1728,7 @@ static const flex_int16_t yy_chk[2487] =
        51,   42,    9,    2,   53,    2,   55,   56,   31,   64,
        10,    2,    2,   47,   64,  245,   25,   64,   25,   50,
         2,   25,   25,   25,   25,   25,    2,   53,   51,   55,
-      729,   56,  245,    2,    2,   15,   15,   15,   15,   15,
+      730,   56,  245,    2,    2,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1729,13 +1736,13 @@ static const flex_int16_t yy_chk[2487] =
        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,  730,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  731,
        17,   17,   17,   17,   17,   19,   58,   19,   19,   19,
        19,   19,  112,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   62,   20,   59,   73,
        54,   61,   58,   73,   22,  112,   17,  109,   58,   59,
        54,   61,   59,   19,   59,   63,   59,  107,   89,   62,
-       20,   90,   63,   54,  731,  131,  216,   22,   45,  216,
+       20,   90,   63,   54,  732,  131,  216,   22,   45,  216,
        62,   45,   45,   45,  109,   45,   45,   45,   54,   57,
        65,  131,   45,   45,   89,   45,   57,   90,  107,   92,
 
@@ -1743,9 +1750,9 @@ static const flex_int16_t yy_chk[2487] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   60,   92,   57,   60,   60,   93,
        57,   60,   60,   68,   57,   67,   67,   68,  171,   67,
-       69,   68,   57,  732,   60,   67,   57,   91,   57,   57,
+       69,   68,   57,  733,   60,   67,   57,   91,   57,   57,
        70,   94,  171,   68,   76,   93,  105,   68,   70,   69,
-       70,   69,  733,   69,   71,   70,   70,   71,   71,   74,
+       70,   69,  734,   69,   71,   70,   70,   71,   71,   74,
        75,   75,  129,   74,  129,   91,   74,   76,   71,   94,
        75,   71,  105,   74,   74,  111,  145,   76,   74,   74,
        75,  129,   76,   79,   79,   79,   79,   79,   87,   87,
@@ -1766,219 +1773,222 @@ static const flex_int16_t yy_chk[2487] =
       184,  185,  189,  163,  187,  115,  115,  115,  115,  115,
       115,  188,  192,  195,  167,  165,  165,  165,  167,  196,
       199,  201,  167,  203,  209,  189,  165,  185,  165,  265,
-      165,  165,  187,  165,  260,  192,  253,  188,  402,  316,
-      301,  195,  402,  199,  201,  301,  196,  209,  321,  328,
+      165,  165,  187,  165,  260,  192,  253,  188,  268,  316,
+      301,  195,  735,  199,  201,  301,  196,  209,  268,  321,
       203,  207,  207,  207,  207,  207,  291,  260,  217,  309,
       207,  207,  207,  207,  207,  207,  217,  312,  316,  291,
-      318,  217,  217,  385,  340,  343,  321,  399,  328,  265,
-
-      343,  734,  309,  207,  207,  207,  207,  207,  207,  253,
-      312,  340,  253,  318,  326,  326,  326,  326,  326,  430,
-      384,  385,  430,  326,  326,  326,  326,  326,  326,  348,
-      384,  362,  376,  376,  376,  348,  362,  380,  376,  441,
-      410,  414,  449,  380,  410,  414,  326,  326,  326,  326,
-      326,  326,  436,  470,  447,  399,  447,  436,  480,  553,
-      544,  466,  735,  480,  504,  544,  470,  441,  579,  466,
-      449,  466,  466,  466,  504,  466,  736,  580,  737,  583,
-      581,  447,  707,  447,  362,  581,  583,  631,  631,  362,
-      448,  448,  448,  448,  448,  579,  696,  708,  739,  448,
-
-      448,  448,  448,  448,  448,  580,  601,  667,  696,  601,
-      707,  553,  667,  717,  717,  740,  717,  741,  742,  743,
-      708,  744,  448,  448,  448,  448,  448,  448,  738,  745,
-      747,  748,  738,  749,  750,  751,  738,  752,  753,  754,
-      755,  756,  757,  758,  759,  760,  761,  762,  763,  764,
-      765,  667,  766,  767,  768,  769,  767,  770,  772,  773,
-      774,  775,  776,  777,  778,  779,  780,  781,  783,  784,
-      785,  786,  787,  788,  789,  790,  791,  792,  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,  812,  819,  820,  815,  821,  818,  823,
-      815,  824,  825,  826,  827,  828,  829,  830,  831,  832,
-      833,  834,  835,  836,  837,  838,  839,  841,  842,  843,
-      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
-      854,  855,  856,  857,  858,  859,  860,  861,  833,  862,
-      863,  864,  865,  866,  867,  868,  869,  870,  871,  873,
-      874,  875,  876,  877,  878,  879,  880,  881,  882,  878,
-      883,  884,  885,  886,  887,  888,  889,  892,  893,  894,
-      895,  896,  897,  898,  901,  902,  903,  904,  905,  907,
-      908,  909,  910,  911,  908,  912,  913,  914,  916,  918,
-
-      919,  920,  921,  922,  923,  924,  925,  926,  927,  928,
-      929,  930,  931,  932,  933,  934,  935,  936,  937,  938,
-      939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
-      949,  950,  951,  953,  954,  942,  955,  956,  957,  958,
-      959,  960,  961,  962,  963,  964,  965,  966,  968,  969,
-      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
-      980,  981,  982,  983,  984,  985,  962,  986,  987,  961,
-      988,  989,  990,  991,  993,  994,  995,  996,  997,  998,
-      999, 1000, 1001, 1002, 1003, 1004, 1006, 1007, 1008, 1009,
-     1010, 1011, 1012, 1014, 1015, 1010, 1016, 1017, 1018, 1019,
-
-     1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
-     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1040, 1041,
-     1042, 1044, 1045, 1046, 1047, 1049, 1035, 1050, 1051, 1052,
-     1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
-     1063, 1064, 1065, 1066, 1067, 1069, 1070, 1071, 1010, 1072,
-     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1085, 1084, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1111, 1083, 1084,
-     1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
-
-     1122, 1123, 1124, 1125, 1126, 1127, 1128, 1130, 1131, 1132,
-     1133, 1134, 1135, 1131, 1136, 1137, 1138, 1139, 1140, 1141,
-     1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
-     1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
-     1162, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
-     1173, 1174, 1175, 1132, 1176, 1178, 1179, 1180, 1183, 1184,
-     1185, 1186, 1187, 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, 1215,
-     1216, 1217, 1218, 1219, 1220, 1221, 1222, 1199, 1224, 1225,
-
-     1226, 1227, 1228, 1200, 1229, 1230, 1231, 1232, 1233, 1234,
-     1235, 1236, 1237, 1238, 1239, 1240, 1241, 1244, 1246, 1248,
-     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
-     1259, 1260, 1261, 1262, 1263, 1265, 1266, 1267, 1269, 1270,
-     1271, 1272, 1273, 1276, 1278, 1280, 1281, 1282, 1283, 1284,
-     1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
-     1295, 1297, 1298, 1299, 1300, 1301, 1302, 1305, 1306, 1307,
-     1308, 1309, 1310, 1311, 1312, 1314, 1315, 1316, 1317, 1318,
-     1319, 1320, 1321, 1322, 1324, 1325, 1326, 1327, 1328, 1329,
-     1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339,
-
-     1340, 1311, 1342, 1343, 1344, 1345, 1346, 1347, 1290, 1348,
-     1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
-     1359, 1361, 1317, 1362, 1363, 1364, 1365, 1366, 1367, 1368,
-     1369, 1370, 1363, 1371, 1374, 1375, 1376, 1377, 1378, 1379,
-     1380, 1381, 1382, 1383, 1384, 1385, 1387, 1388, 1389, 1390,
-     1391, 1392, 1394, 1397, 1395, 1391, 1395, 1400, 1401, 1402,
-     1403, 1405, 1406, 1407, 1408, 1409, 1411, 1412, 1413, 1415,
-     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
-     1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1409, 1435,
-     1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446,
-
-     1447, 1449, 1451, 1453, 1454, 1456, 1457, 1458, 1459, 1460,
-     1461, 1462, 1463, 1464, 1465, 1467, 1468, 1469, 1470, 1471,
-     1472, 1473, 1476, 1477, 1479, 1480, 1481, 1482, 1483, 1485,
-     1486, 1485, 1487, 1488, 1489, 1490, 1491, 1485, 1492, 1493,
-     1494, 1495, 1496, 1498, 1499, 1501, 1502, 1503, 1505, 1506,
-     1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
-     1517, 1518, 1519, 1521, 1522, 1523, 1525, 1513, 1526, 1527,
-     1528, 1499, 1529, 1530, 1531, 1532, 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, 1566,
-     1567, 1568, 1569, 1570, 1571, 1572, 1574, 1575, 1576, 1577,
-     1578, 1579, 1582, 1583, 1584, 1588, 1589, 1590, 1591, 1592,
-     1593, 1594, 1595, 1596, 1597, 1533, 1598, 1600, 1601, 1602,
-     1603, 1604, 1600, 1605, 1606, 1607, 1608, 1577, 1610, 1611,
-     1612, 1614, 1615, 1617, 1618, 1619, 1621, 1622, 1623, 1624,
-     1625, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635,
-     1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645,
-     1646, 1647, 1648, 1649, 1650, 1652, 1654, 1655, 1656, 1658,
-     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668,
-
-     1670, 1671, 1672, 1673, 1674, 1676, 1677, 1678, 1680, 1681,
-     1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1691, 1692,
-     1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1702, 1703,
-     1704, 1705, 1706, 1707, 1708, 1709, 1711, 1713, 1714, 1715,
-     1717, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727,
-     1728, 1729, 1730, 1731, 1732, 1733, 1735, 1736, 1737, 1738,
-     1739, 1740, 1741, 1742, 1743, 1745, 1746, 1747, 1748, 1750,
-     1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1761,
-     1762, 1763, 1764, 1765, 1767, 1768, 1770, 1771, 1772, 1773,
-     1774, 1775, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784,
-
-     1785, 1786, 1787, 1788, 1789, 1792, 1793, 1794, 1795, 1796,
-     1797, 1798, 1799, 1800, 1801, 1803, 1805, 1806, 1807, 1808,
-     1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818,
-     1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1829,
-     1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1840,
-     1842, 1844, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854,
-     1856, 1857, 1858, 1859, 1861, 1862, 1863, 1864, 1865, 1866,
-     1867, 1868, 1869, 1870, 1872, 1873, 1875, 1876, 1877, 1878,
-     1879, 1881, 1882, 1883, 1885, 1887, 1889, 1890, 1891, 1892,
-     1894, 1895, 1896, 1897, 1898, 1899, 1900, 1902, 1903, 1904,
-
-     1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914,
-     1915, 1916, 1917, 1918, 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,
-     1948, 1949, 1951, 1952, 1953, 1955, 1956, 1957, 1958, 1964,
-     1968, 1969, 1970, 1971, 1973, 1974, 1975, 1976, 1977, 1978,
-     1979, 1981, 1982, 1984, 1986, 1988, 1989, 1990, 1991, 1993,
-     1994, 1993, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-     2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2015, 2018,
-     2019, 2020, 2021, 2025, 2025, 2025, 2026, 2026, 2026, 2027,
-
-     2028, 2027, 2029, 2029, 2029, 2030, 2030, 2030, 2031,  728,
-     2031, 2032, 2032, 2032,  727,  726,  725,  724,  723,  722,
-      721,  720,  719,  718,  716,  715,  714,  713,  712,  711,
-      710,  709,  704,  703,  702,  701,  700,  699,  698,  697,
-      695,  694,  693,  691,  690,  689,  688,  687,  686,  685,
-      684,  683,  682,  681,  680,  679,  678,  676,  675,  674,
-      673,  672,  671,  670,  669,  668,  666,  665,  663,  662,
-      661,  660,  659,  658,  657,  655,  654,  653,  652,  650,
-      649,  647,  646,  645,  644,  643,  642,  641,  640,  639,
-      638,  637,  636,  635,  634,  633,  632,  630,  629,  628,
-
-      627,  626,  625,  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,  575,  574,  573,  572,  570,  567,  565,  564,  563,
-      562,  561,  560,  559,  558,  557,  556,  555,  554,  552,
-      551,  550,  549,  548,  547,  546,  545,  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,  512,  511,  510,  509,  508,
-
-      507,  506,  505,  503,  502,  501,  500,  499,  498,  497,
-      496,  495,  494,  493,  492,  491,  490,  489,  488,  487,
-      486,  484,  483,  482,  481,  479,  478,  477,  476,  475,
-      474,  472,  471,  469,  468,  467,  465,  463,  462,  461,
-      460,  459,  458,  457,  456,  454,  453,  452,  451,  450,
-      445,  443,  442,  440,  437,  435,  434,  433,  432,  431,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-      419,  418,  417,  416,  415,  413,  412,  411,  409,  408,
-      407,  406,  405,  404,  403,  401,  400,  398,  397,  396,
-      395,  394,  393,  392,  391,  390,  389,  388,  387,  383,
-
-      382,  381,  379,  378,  377,  375,  374,  373,  372,  371,
-      370,  369,  368,  367,  366,  365,  364,  363,  361,  360,
-      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  347,  346,  345,  344,  342,  339,  338,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  325,  323,  319,
-      317,  315,  308,  307,  306,  305,  304,  303,  302,  300,
-      299,  298,  296,  295,  294,  293,  292,  290,  289,  288,
-      287,  286,  285,  284,  282,  281,  280,  279,  278,  277,
-      276,  275,  274,  273,  272,  271,  270,  269,  268,  267,
-      266,  264,  263,  262,  261,  259,  258,  257,  256,  255,
-
-      254,  252,  251,  250,  249,  248,  247,  246,  244,  243,
-      241,  240,  239,  238,  237,  236,  235,  234,  233,  232,
-      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
-      221,  220,  219,  218,  215,  214,  213,  212,  211,  210,
-      208,  204,  202,  200,  198,  193,  190,  182,  181,  180,
-      179,  178,  177,  176,  174,  173,  172,  170,  169,  168,
-      166,  164,  162,  160,  159,  157,  156,  155,  153,  151,
-      150,  149,  148,  147,  146,  144,  143,  142,  140,  139,
-      138,  136,  135,  133,  132,  128,  127,  126,  124,  123,
-      122,  121,  119,  117,  113,  104,  103,   97,   96,   77,
-
-       72,   66,   52,   49,   48,   43,   41,   39,   38,   24,
-       14,   11, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
-     2024, 2024, 2024, 2024, 2024, 2024
+      318,  217,  217,  328,  340,  343,  400,  321,  431,  265,
+
+      343,  431,  309,  207,  207,  207,  207,  207,  207,  253,
+      312,  340,  253,  318,  326,  326,  326,  326,  326,  736,
+      384,  737,  328,  326,  326,  326,  326,  326,  326,  348,
+      384,  362,  376,  376,  376,  348,  362,  380,  376,  385,
+      403,  411,  442,  380,  403,  411,  326,  326,  326,  326,
+      326,  326,  415,  437,  400,  450,  415,  481,  437,  448,
+      555,  448,  481,  467,  546,  471,  505,  385,  581,  546,
+      442,  467,  738,  467,  467,  467,  505,  467,  471,  582,
+      583,  633,  633,  450,  362,  583,  448,  710,  448,  362,
+      449,  449,  449,  449,  449,  581,  711,  739,  585,  449,
+
+      449,  449,  449,  449,  449,  585,  603,  582,  670,  603,
+      740,  742,  555,  670,  743,  710,  699,  720,  720,  711,
+      720,  744,  449,  449,  449,  449,  449,  449,  699,  741,
+      745,  746,  747,  741,  748,  750,  751,  741,  752,  753,
+      754,  755,  756,  757,  758,  759,  760,  761,  762,  763,
+      764,  765,  670,  766,  767,  768,  769,  770,  771,  772,
+      770,  773,  775,  776,  777,  778,  779,  780,  781,  782,
+      783,  784,  786,  787,  788,  789,  790,  791,  792,  793,
+      794,  795,  796,  798,  799,  800,  801,  802,  803,  804,
+      805,  806,  807,  808,  809,  810,  811,  812,  813,  814,
+
+      815,  816,  817,  818,  819,  820,  821,  822,  816,  823,
+      824,  819,  825,  822,  827,  819,  828,  829,  830,  831,
+      832,  833,  834,  835,  836,  837,  838,  839,  840,  841,
+      842,  843,  845,  846,  847,  848,  849,  850,  851,  852,
+      853,  854,  855,  856,  857,  858,  859,  860,  861,  862,
+      863,  864,  865,  837,  866,  867,  868,  869,  870,  871,
+      872,  873,  874,  875,  877,  878,  879,  880,  881,  882,
+      883,  884,  885,  886,  882,  887,  888,  889,  890,  891,
+      892,  893,  896,  897,  898,  899,  900,  901,  902,  905,
+      906,  907,  908,  909,  911,  912,  913,  914,  915,  912,
+
+      916,  917,  918,  919,  921,  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,  958,
+      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, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1019,
+
+     1020, 1015, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
+     1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
+     1039, 1040, 1041, 1042, 1043, 1046, 1047, 1048, 1050, 1051,
+     1052, 1053, 1040, 1055, 1056, 1057, 1058, 1059, 1060, 1061,
+     1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
+     1072, 1073, 1075, 1076, 1015, 1077, 1078, 1079, 1080, 1081,
+     1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1090,
+     1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
+     1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+     1112, 1113, 1114, 1115, 1117, 1089, 1090, 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, 1183, 1185, 1186, 1187, 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, 1218, 1219, 1220, 1222, 1223, 1224,
+
+     1225, 1226, 1227, 1228, 1229, 1206, 1231, 1232, 1233, 1234,
+     1235, 1207, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
+     1244, 1245, 1246, 1247, 1248, 1251, 1253, 1255, 1256, 1257,
+     1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
+     1268, 1269, 1270, 1272, 1273, 1274, 1276, 1277, 1278, 1279,
+     1280, 1282, 1284, 1286, 1288, 1289, 1290, 1291, 1292, 1293,
+     1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
+     1305, 1306, 1307, 1308, 1309, 1310, 1313, 1314, 1315, 1316,
+     1317, 1318, 1319, 1320, 1322, 1323, 1324, 1325, 1326, 1327,
+     1328, 1329, 1330, 1332, 1333, 1334, 1335, 1336, 1337, 1338,
+
+     1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
+     1319, 1350, 1351, 1352, 1353, 1354, 1355, 1298, 1356, 1357,
+     1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
+     1369, 1325, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
+     1378, 1371, 1379, 1382, 1383, 1384, 1385, 1386, 1387, 1388,
+     1389, 1390, 1391, 1392, 1393, 1394, 1396, 1397, 1398, 1399,
+     1400, 1401, 1403, 1406, 1404, 1400, 1404, 1409, 1410, 1411,
+     1412, 1414, 1415, 1416, 1417, 1418, 1420, 1421, 1422, 1424,
+     1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
+     1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1418, 1444,
+
+     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455,
+     1456, 1458, 1460, 1462, 1463, 1465, 1466, 1467, 1468, 1469,
+     1470, 1471, 1472, 1473, 1474, 1476, 1477, 1478, 1479, 1480,
+     1481, 1482, 1483, 1486, 1487, 1489, 1490, 1491, 1492, 1493,
+     1495, 1496, 1495, 1497, 1498, 1499, 1500, 1501, 1495, 1502,
+     1503, 1504, 1505, 1506, 1508, 1509, 1511, 1512, 1513, 1515,
+     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
+     1526, 1527, 1528, 1529, 1531, 1532, 1533, 1535, 1523, 1536,
+     1537, 1538, 1509, 1539, 1540, 1541, 1542, 1542, 1543, 1544,
+     1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554,
+
+     1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564,
+     1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574,
+     1575, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1585, 1586,
+     1587, 1588, 1589, 1590, 1593, 1594, 1595, 1599, 1600, 1601,
+     1602, 1603, 1604, 1605, 1606, 1607, 1543, 1608, 1609, 1611,
+     1612, 1613, 1614, 1615, 1611, 1616, 1617, 1618, 1619, 1588,
+     1621, 1622, 1623, 1625, 1626, 1628, 1629, 1630, 1632, 1633,
+     1634, 1635, 1636, 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, 1664, 1666,
+
+     1667, 1668, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
+     1678, 1679, 1680, 1682, 1683, 1684, 1685, 1686, 1688, 1689,
+     1690, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
+     1701, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
+     1712, 1713, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722,
+     1724, 1726, 1727, 1728, 1730, 1732, 1733, 1734, 1735, 1736,
+     1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746,
+     1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1758,
+     1759, 1760, 1761, 1763, 1764, 1765, 1766, 1767, 1768, 1769,
+     1770, 1771, 1772, 1773, 1775, 1776, 1777, 1778, 1779, 1781,
+
+     1782, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1793,
+     1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803,
+     1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815,
+     1817, 1818, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827,
+     1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837,
+     1838, 1839, 1840, 1841, 1842, 1844, 1845, 1846, 1847, 1848,
+     1849, 1850, 1851, 1852, 1853, 1855, 1857, 1859, 1861, 1863,
+     1864, 1865, 1866, 1867, 1868, 1869, 1870, 1872, 1873, 1874,
+     1875, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,
+     1886, 1888, 1889, 1891, 1892, 1893, 1894, 1895, 1897, 1898,
+
+     1900, 1902, 1904, 1906, 1907, 1908, 1909, 1911, 1912, 1913,
+     1914, 1915, 1916, 1917, 1919, 1920, 1921, 1922, 1923, 1924,
+     1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934,
+     1935, 1937, 1938, 1939, 1941, 1942, 1943, 1944, 1945, 1946,
+     1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956,
+     1957, 1958, 1959, 1960, 1961, 1962, 1963, 1965, 1966, 1968,
+     1969, 1970, 1972, 1973, 1974, 1975, 1981, 1985, 1986, 1987,
+     1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,
+     2001, 2003, 2005, 2006, 2007, 2008, 2010, 2011, 2010, 2012,
+     2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
+
+     2026, 2027, 2028, 2029, 2030, 2032, 2035, 2036, 2037, 2038,
+     2042, 2042, 2042, 2043, 2043, 2043, 2044, 2045, 2044, 2046,
+     2046, 2046, 2047, 2047, 2047, 2048,  729, 2048, 2049, 2049,
+     2049,  728,  727,  726,  725,  724,  723,  722,  721,  719,
+      718,  717,  716,  715,  714,  713,  712,  707,  706,  705,
+      704,  703,  702,  701,  700,  698,  697,  696,  694,  693,
+      692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
+      682,  681,  679,  678,  677,  676,  675,  674,  673,  672,
+      671,  669,  668,  666,  665,  664,  663,  662,  661,  660,
+      659,  657,  656,  655,  654,  652,  651,  649,  648,  647,
+
+      646,  645,  644,  643,  642,  641,  640,  639,  638,  637,
+      636,  635,  634,  632,  631,  630,  629,  628,  627,  625,
+      624,  623,  622,  621,  620,  619,  618,  616,  615,  614,
+      613,  612,  611,  610,  609,  608,  607,  606,  605,  604,
+      602,  601,  600,  599,  598,  597,  596,  595,  594,  593,
+      592,  591,  590,  589,  588,  587,  586,  577,  576,  575,
+      574,  572,  569,  567,  566,  565,  564,  563,  562,  561,
+      560,  559,  558,  557,  556,  554,  553,  552,  551,  550,
+      549,  548,  547,  545,  544,  543,  542,  541,  540,  539,
+      538,  537,  536,  535,  534,  532,  530,  529,  528,  527,
+
+      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
+      516,  515,  513,  512,  511,  510,  509,  508,  507,  506,
+      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
+      494,  493,  492,  491,  490,  489,  488,  487,  485,  484,
+      483,  482,  480,  479,  478,  477,  476,  475,  473,  472,
+      470,  469,  468,  466,  464,  463,  462,  461,  460,  459,
+      458,  457,  455,  454,  453,  452,  451,  446,  444,  443,
+      441,  438,  436,  435,  434,  433,  432,  430,  429,  428,
+      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
+      417,  416,  414,  413,  412,  410,  409,  408,  407,  406,
+
+      405,  404,  402,  401,  399,  398,  397,  396,  395,  394,
+      393,  392,  391,  390,  389,  388,  387,  383,  382,  381,
+      379,  378,  377,  375,  374,  373,  372,  371,  370,  369,
+      368,  367,  366,  365,  364,  363,  361,  360,  359,  358,
+      357,  356,  355,  354,  353,  352,  351,  350,  349,  347,
+      346,  345,  344,  342,  339,  338,  337,  336,  335,  334,
+      333,  332,  331,  330,  329,  325,  323,  319,  317,  315,
+      308,  307,  306,  305,  304,  303,  302,  300,  299,  298,
+      296,  295,  294,  293,  292,  290,  289,  288,  287,  286,
+      285,  284,  282,  281,  280,  279,  278,  277,  276,  275,
+
+      274,  273,  272,  271,  270,  269,  267,  266,  264,  263,
+      262,  261,  259,  258,  257,  256,  255,  254,  252,  251,
+      250,  249,  248,  247,  246,  244,  243,  241,  240,  239,
+      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
+      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
+      218,  215,  214,  213,  212,  211,  210,  208,  204,  202,
+      200,  198,  193,  190,  182,  181,  180,  179,  178,  177,
+      176,  174,  173,  172,  170,  169,  168,  166,  164,  162,
+      160,  159,  157,  156,  155,  153,  151,  150,  149,  148,
+      147,  146,  144,  143,  142,  140,  139,  138,  136,  135,
+
+      133,  132,  128,  127,  126,  124,  123,  122,  121,  119,
+      117,  113,  104,  103,   97,   96,   77,   72,   66,   52,
+       49,   48,   43,   41,   39,   38,   24,   14,   11, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+     2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+     2041, 2041, 2041
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1987,7 +1997,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[219] =
+static const flex_int16_t yy_rule_linenum[220] =
     {   0,
       148,  150,  152,  157,  158,  163,  164,  165,  177,  180,
       185,  192,  201,  210,  219,  228,  237,  246,  255,  264,
@@ -1997,22 +2007,22 @@ static const flex_int16_t yy_rule_linenum[219] =
       558,  571,  580,  589,  598,  607,  618,  629,  640,  651,
       663,  674,  685,  696,  707,  718,  729,  740,  749,  758,
       767,  778,  789,  800,  811,  822,  831,  843,  855,  867,
-      879,  891,  903,  914,  925,  934,  943,  952,  961,  972,
-      983,  994, 1005, 1016, 1027, 1038, 1050, 1060, 1071, 1080,
-
-     1089, 1104, 1120, 1129, 1138, 1147, 1156, 1165, 1174, 1183,
-     1192, 1201, 1210, 1234, 1258, 1267, 1277, 1287, 1296, 1306,
-     1317, 1326, 1335, 1344, 1353, 1362, 1373, 1384, 1395, 1405,
-     1414, 1423, 1432, 1443, 1454, 1465, 1476, 1487, 1496, 1505,
-     1514, 1523, 1532, 1541, 1550, 1559, 1568, 1578, 1590, 1603,
-     1612, 1621, 1631, 1641, 1650, 1661, 1671, 1680, 1690, 1700,
-     1709, 1718, 1727, 1736, 1746, 1755, 1764, 1773, 1782, 1791,
+      879,  891,  903,  914,  925,  934,  943,  952,  961,  970,
+      981,  992, 1003, 1014, 1025, 1036, 1047, 1059, 1069, 1080,
+
+     1089, 1098, 1113, 1129, 1138, 1147, 1156, 1165, 1174, 1183,
+     1192, 1201, 1210, 1219, 1243, 1267, 1276, 1286, 1296, 1305,
+     1315, 1326, 1335, 1344, 1353, 1362, 1371, 1382, 1393, 1404,
+     1414, 1423, 1432, 1441, 1452, 1463, 1474, 1485, 1496, 1505,
+     1514, 1523, 1532, 1541, 1550, 1559, 1568, 1577, 1587, 1599,
+     1612, 1621, 1630, 1640, 1650, 1659, 1670, 1680, 1689, 1699,
+     1709, 1718, 1727, 1736, 1745, 1755, 1764, 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,
 
-     2162, 2178, 2227, 2235, 2250, 2251, 2252, 2253, 2254, 2255,
-     2257, 2275, 2288, 2293, 2297, 2299, 2301, 2303
+     2070, 2171, 2187, 2236, 2244, 2259, 2260, 2261, 2262, 2263,
+     2264, 2266, 2284, 2297, 2302, 2306, 2308, 2310, 2312
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2066,7 +2076,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 2069 "dhcp6_lexer.cc"
+#line 2079 "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
@@ -2092,8 +2102,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 2095 "dhcp6_lexer.cc"
-#line 2096 "dhcp6_lexer.cc"
+#line 2105 "dhcp6_lexer.cc"
+#line 2106 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2423,7 +2433,7 @@ YY_DECL
     }
 
 
-#line 2426 "dhcp6_lexer.cc"
+#line 2436 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2452,13 +2462,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 2025 )
+                               if ( yy_current_state >= 2042 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 2024 );
+               while ( yy_current_state != 2041 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2477,13 +2487,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 219 )
+                       else if ( yy_act < 220 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 219 )
+                       else if ( yy_act == 220 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 220 )
+                       else if ( yy_act == 221 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3569,9 +3579,9 @@ YY_RULE_SETUP
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
-        return isc::dhcp::Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_PARKED_PACKET_LIMIT(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("statistic-default-sample-count", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("parked-packet-limit", driver.loc_);
     }
 }
        YY_BREAK
@@ -3581,15 +3591,27 @@ YY_RULE_SETUP
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
-        return isc::dhcp::Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("statistic-default-sample-age", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("statistic-default-sample-count", driver.loc_);
     }
 }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 961 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+        return isc::dhcp::Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("statistic-default-sample-age", driver.loc_);
+    }
+}
+       YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 970 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3601,9 +3623,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 972 "dhcp6_lexer.ll"
+#line 981 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3615,9 +3637,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 983 "dhcp6_lexer.ll"
+#line 992 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3629,9 +3651,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 994 "dhcp6_lexer.ll"
+#line 1003 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3643,9 +3665,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 1005 "dhcp6_lexer.ll"
+#line 1014 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3657,9 +3679,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 1016 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3671,9 +3693,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 1027 "dhcp6_lexer.ll"
+#line 1036 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3685,9 +3707,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 1038 "dhcp6_lexer.ll"
+#line 1047 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3699,9 +3721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 1050 "dhcp6_lexer.ll"
+#line 1059 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3712,9 +3734,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 1060 "dhcp6_lexer.ll"
+#line 1069 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3726,9 +3748,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 1071 "dhcp6_lexer.ll"
+#line 1080 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3738,9 +3760,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1080 "dhcp6_lexer.ll"
+#line 1089 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3750,9 +3772,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1089 "dhcp6_lexer.ll"
+#line 1098 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3768,9 +3790,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1104 "dhcp6_lexer.ll"
+#line 1113 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3787,9 +3809,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1120 "dhcp6_lexer.ll"
+#line 1129 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3799,9 +3821,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1129 "dhcp6_lexer.ll"
+#line 1138 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3811,9 +3833,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1138 "dhcp6_lexer.ll"
+#line 1147 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3823,9 +3845,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1147 "dhcp6_lexer.ll"
+#line 1156 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3835,9 +3857,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1156 "dhcp6_lexer.ll"
+#line 1165 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3847,9 +3869,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1165 "dhcp6_lexer.ll"
+#line 1174 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3859,9 +3881,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1174 "dhcp6_lexer.ll"
+#line 1183 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3871,9 +3893,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1183 "dhcp6_lexer.ll"
+#line 1192 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3883,9 +3905,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1192 "dhcp6_lexer.ll"
+#line 1201 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3895,9 +3917,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1201 "dhcp6_lexer.ll"
+#line 1210 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3907,9 +3929,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1210 "dhcp6_lexer.ll"
+#line 1219 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3934,9 +3956,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1234 "dhcp6_lexer.ll"
+#line 1243 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3961,9 +3983,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1258 "dhcp6_lexer.ll"
+#line 1267 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3973,9 +3995,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1267 "dhcp6_lexer.ll"
+#line 1276 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3986,9 +4008,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1277 "dhcp6_lexer.ll"
+#line 1286 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3999,9 +4021,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1287 "dhcp6_lexer.ll"
+#line 1296 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4011,9 +4033,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1296 "dhcp6_lexer.ll"
+#line 1305 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4024,9 +4046,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1306 "dhcp6_lexer.ll"
+#line 1315 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4038,9 +4060,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1317 "dhcp6_lexer.ll"
+#line 1326 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4050,9 +4072,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1326 "dhcp6_lexer.ll"
+#line 1335 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4062,9 +4084,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1335 "dhcp6_lexer.ll"
+#line 1344 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4074,9 +4096,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1344 "dhcp6_lexer.ll"
+#line 1353 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4086,9 +4108,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1353 "dhcp6_lexer.ll"
+#line 1362 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4098,9 +4120,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1362 "dhcp6_lexer.ll"
+#line 1371 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4112,9 +4134,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1373 "dhcp6_lexer.ll"
+#line 1382 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4126,9 +4148,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1384 "dhcp6_lexer.ll"
+#line 1393 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4140,9 +4162,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1395 "dhcp6_lexer.ll"
+#line 1404 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4153,9 +4175,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1405 "dhcp6_lexer.ll"
+#line 1414 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4165,9 +4187,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1414 "dhcp6_lexer.ll"
+#line 1423 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4177,9 +4199,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1423 "dhcp6_lexer.ll"
+#line 1432 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4189,9 +4211,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1432 "dhcp6_lexer.ll"
+#line 1441 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4203,9 +4225,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1443 "dhcp6_lexer.ll"
+#line 1452 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4217,9 +4239,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1454 "dhcp6_lexer.ll"
+#line 1463 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4231,9 +4253,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1465 "dhcp6_lexer.ll"
+#line 1474 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4245,9 +4267,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1476 "dhcp6_lexer.ll"
+#line 1485 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4259,9 +4281,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1487 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4271,9 +4293,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1496 "dhcp6_lexer.ll"
+#line 1505 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4283,9 +4305,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1505 "dhcp6_lexer.ll"
+#line 1514 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4295,9 +4317,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1514 "dhcp6_lexer.ll"
+#line 1523 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4307,9 +4329,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1523 "dhcp6_lexer.ll"
+#line 1532 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4319,9 +4341,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4331,9 +4353,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1541 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4343,9 +4365,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1550 "dhcp6_lexer.ll"
+#line 1559 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4355,9 +4377,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1559 "dhcp6_lexer.ll"
+#line 1568 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4367,9 +4389,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1568 "dhcp6_lexer.ll"
+#line 1577 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4380,9 +4402,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1578 "dhcp6_lexer.ll"
+#line 1587 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4395,9 +4417,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1590 "dhcp6_lexer.ll"
+#line 1599 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4411,9 +4433,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1603 "dhcp6_lexer.ll"
+#line 1612 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4423,9 +4445,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1612 "dhcp6_lexer.ll"
+#line 1621 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4435,9 +4457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1621 "dhcp6_lexer.ll"
+#line 1630 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4448,9 +4470,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 1631 "dhcp6_lexer.ll"
+#line 1640 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4461,9 +4483,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 1641 "dhcp6_lexer.ll"
+#line 1650 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4473,9 +4495,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 1650 "dhcp6_lexer.ll"
+#line 1659 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -4487,9 +4509,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 1661 "dhcp6_lexer.ll"
+#line 1670 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4500,9 +4522,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 1671 "dhcp6_lexer.ll"
+#line 1680 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4512,9 +4534,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 1680 "dhcp6_lexer.ll"
+#line 1689 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4525,9 +4547,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 1690 "dhcp6_lexer.ll"
+#line 1699 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4538,9 +4560,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 1700 "dhcp6_lexer.ll"
+#line 1709 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4550,9 +4572,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 1709 "dhcp6_lexer.ll"
+#line 1718 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4562,9 +4584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 1718 "dhcp6_lexer.ll"
+#line 1727 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4574,9 +4596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 1727 "dhcp6_lexer.ll"
+#line 1736 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4586,9 +4608,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 1736 "dhcp6_lexer.ll"
+#line 1745 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4599,9 +4621,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 1746 "dhcp6_lexer.ll"
+#line 1755 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -4611,9 +4633,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 1755 "dhcp6_lexer.ll"
+#line 1764 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4623,9 +4645,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 1764 "dhcp6_lexer.ll"
+#line 1773 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4635,9 +4657,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 1773 "dhcp6_lexer.ll"
+#line 1782 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4647,9 +4669,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 1782 "dhcp6_lexer.ll"
+#line 1791 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4659,9 +4681,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 1791 "dhcp6_lexer.ll"
+#line 1800 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4671,9 +4693,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 1800 "dhcp6_lexer.ll"
+#line 1809 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4683,9 +4705,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 1809 "dhcp6_lexer.ll"
+#line 1818 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4695,9 +4717,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 1818 "dhcp6_lexer.ll"
+#line 1827 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4707,9 +4729,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 1827 "dhcp6_lexer.ll"
+#line 1836 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4719,9 +4741,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 1836 "dhcp6_lexer.ll"
+#line 1845 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4731,9 +4753,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 1845 "dhcp6_lexer.ll"
+#line 1854 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4743,9 +4765,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 1854 "dhcp6_lexer.ll"
+#line 1863 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4755,9 +4777,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 1863 "dhcp6_lexer.ll"
+#line 1872 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4767,9 +4789,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 1872 "dhcp6_lexer.ll"
+#line 1881 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4779,9 +4801,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 1881 "dhcp6_lexer.ll"
+#line 1890 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4791,9 +4813,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 1890 "dhcp6_lexer.ll"
+#line 1899 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4803,9 +4825,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 1899 "dhcp6_lexer.ll"
+#line 1908 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4815,9 +4837,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 1908 "dhcp6_lexer.ll"
+#line 1917 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4827,9 +4849,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 1917 "dhcp6_lexer.ll"
+#line 1926 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4839,9 +4861,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 1926 "dhcp6_lexer.ll"
+#line 1935 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4851,9 +4873,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 1935 "dhcp6_lexer.ll"
+#line 1944 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4863,9 +4885,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 1944 "dhcp6_lexer.ll"
+#line 1953 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4875,9 +4897,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 1953 "dhcp6_lexer.ll"
+#line 1962 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4887,9 +4909,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 1962 "dhcp6_lexer.ll"
+#line 1971 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4899,9 +4921,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 1971 "dhcp6_lexer.ll"
+#line 1980 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4911,9 +4933,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 191:
+case 192:
 YY_RULE_SETUP
-#line 1980 "dhcp6_lexer.ll"
+#line 1989 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4923,9 +4945,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 192:
+case 193:
 YY_RULE_SETUP
-#line 1989 "dhcp6_lexer.ll"
+#line 1998 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4935,9 +4957,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 1998 "dhcp6_lexer.ll"
+#line 2007 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4947,9 +4969,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 2007 "dhcp6_lexer.ll"
+#line 2016 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4959,9 +4981,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 2016 "dhcp6_lexer.ll"
+#line 2025 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4971,9 +4993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 2025 "dhcp6_lexer.ll"
+#line 2034 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4983,9 +5005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 2034 "dhcp6_lexer.ll"
+#line 2043 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4995,9 +5017,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 198:
+case 199:
 YY_RULE_SETUP
-#line 2043 "dhcp6_lexer.ll"
+#line 2052 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5007,9 +5029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 199:
+case 200:
 YY_RULE_SETUP
-#line 2052 "dhcp6_lexer.ll"
+#line 2061 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::COMPATIBILITY:
@@ -5019,9 +5041,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 200:
+case 201:
 YY_RULE_SETUP
-#line 2061 "dhcp6_lexer.ll"
+#line 2070 "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.
@@ -5123,10 +5145,10 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 201:
-/* rule 201 can match eol */
+case 202:
+/* rule 202 can match eol */
 YY_RULE_SETUP
-#line 2162 "dhcp6_lexer.ll"
+#line 2171 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     std::string raw(yytext+1);
@@ -5143,10 +5165,10 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 202:
-/* rule 202 can match eol */
+case 203:
+/* rule 203 can match eol */
 YY_RULE_SETUP
-#line 2178 "dhcp6_lexer.ll"
+#line 2187 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     std::string raw(yytext+1);
@@ -5196,9 +5218,9 @@ YY_RULE_SETUP
                  pos);
 }
        YY_BREAK
-case 203:
+case 204:
 YY_RULE_SETUP
-#line 2227 "dhcp6_lexer.ll"
+#line 2236 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     std::string raw(yytext+1);
@@ -5207,9 +5229,9 @@ YY_RULE_SETUP
                  raw.size() + 1);
 }
        YY_BREAK
-case 204:
+case 205:
 YY_RULE_SETUP
-#line 2235 "dhcp6_lexer.ll"
+#line 2244 "dhcp6_lexer.ll"
 {
     /* Bad string with an open unicode escape at the end */
     std::string raw(yytext+1);
@@ -5225,39 +5247,39 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 205:
+case 206:
 YY_RULE_SETUP
-#line 2250 "dhcp6_lexer.ll"
+#line 2259 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 206:
+case 207:
 YY_RULE_SETUP
-#line 2251 "dhcp6_lexer.ll"
+#line 2260 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 207:
+case 208:
 YY_RULE_SETUP
-#line 2252 "dhcp6_lexer.ll"
+#line 2261 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 208:
+case 209:
 YY_RULE_SETUP
-#line 2253 "dhcp6_lexer.ll"
+#line 2262 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 209:
+case 210:
 YY_RULE_SETUP
-#line 2254 "dhcp6_lexer.ll"
+#line 2263 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 210:
+case 211:
 YY_RULE_SETUP
-#line 2255 "dhcp6_lexer.ll"
+#line 2264 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 211:
+case 212:
 YY_RULE_SETUP
-#line 2257 "dhcp6_lexer.ll"
+#line 2266 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -5276,9 +5298,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 212:
+case 213:
 YY_RULE_SETUP
-#line 2275 "dhcp6_lexer.ll"
+#line 2284 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -5292,43 +5314,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 213:
+case 214:
 YY_RULE_SETUP
-#line 2288 "dhcp6_lexer.ll"
+#line 2297 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 214:
+case 215:
 YY_RULE_SETUP
-#line 2293 "dhcp6_lexer.ll"
+#line 2302 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 215:
+case 216:
 YY_RULE_SETUP
-#line 2297 "dhcp6_lexer.ll"
+#line 2306 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 216:
+case 217:
 YY_RULE_SETUP
-#line 2299 "dhcp6_lexer.ll"
+#line 2308 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 217:
+case 218:
 YY_RULE_SETUP
-#line 2301 "dhcp6_lexer.ll"
+#line 2310 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 218:
+case 219:
 YY_RULE_SETUP
-#line 2303 "dhcp6_lexer.ll"
+#line 2312 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2305 "dhcp6_lexer.ll"
+#line 2314 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -5352,12 +5374,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 219:
+case 220:
 YY_RULE_SETUP
-#line 2328 "dhcp6_lexer.ll"
+#line 2337 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 5360 "dhcp6_lexer.cc"
+#line 5382 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5676,7 +5698,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 >= 2025 )
+                       if ( yy_current_state >= 2042 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5709,11 +5731,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 >= 2025 )
+               if ( yy_current_state >= 2042 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 2024);
+       yy_is_jam = (yy_current_state == 2041);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6462,7 +6484,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2328 "dhcp6_lexer.ll"
+#line 2337 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 3e801b95ade786854a594f2bfa51c352cf56a79c..c1f9ef23565aa412b64725f4a177c5553fee8ba0 100644 (file)
@@ -939,6 +939,15 @@ ControlCharacterFill            [^"\\]|\\["\\/bfnrtu]
     }
 }
 
+\"parked-packet-limit\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+        return isc::dhcp::Dhcp6Parser::make_PARKED_PACKET_LIMIT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("parked-packet-limit", driver.loc_);
+    }
+}
+
 \"statistic-default-sample-count\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
index d49a77797f704342558eb32fd28befaef4243ed0..b249d9b5a19cbbc91611fa924f1005acbcc4fb2f 100644 (file)
@@ -73,6 +73,7 @@ extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_NA_SKIP = "DHCP6_HOOK
 extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP = "DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP";
 extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_DROP = "DHCP6_HOOK_LEASES6_COMMITTED_DROP";
 extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_PARK = "DHCP6_HOOK_LEASES6_COMMITTED_PARK";
+extern const isc::log::MessageID DHCP6_HOOK_LEASES6_PARKING_LOT_FULL = "DHCP6_HOOK_LEASES6_PARKING_LOT_FULL";
 extern const isc::log::MessageID DHCP6_HOOK_PACKET_RCVD_SKIP = "DHCP6_HOOK_PACKET_RCVD_SKIP";
 extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_DROP = "DHCP6_HOOK_PACKET_SEND_DROP";
 extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_SKIP = "DHCP6_HOOK_PACKET_SEND_SKIP";
@@ -229,6 +230,7 @@ const char* values[] = {
     "DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP", "%1: prefix lease was not released because a callout set the next step to SKIP",
     "DHCP6_HOOK_LEASES6_COMMITTED_DROP", "%1: packet is dropped, because a callout set the next step to DROP",
     "DHCP6_HOOK_LEASES6_COMMITTED_PARK", "%1: packet is parked, because a callout set the next step to PARK",
+    "DHCP6_HOOK_LEASES6_PARKING_LOT_FULL", "The parked-packet-limit %1, has been reached, dropping query: %2",
     "DHCP6_HOOK_PACKET_RCVD_SKIP", "%1: packet is dropped, because a callout set the next step to SKIP",
     "DHCP6_HOOK_PACKET_SEND_DROP", "%1: prepared DHCPv6 response was not sent because a callout set the next ste to DROP",
     "DHCP6_HOOK_PACKET_SEND_SKIP", "%1: prepared DHCPv6 response is not built because a callout set the next step to SKIP",
index aa70f8dd5ebefdfc4aa25d20f82da14f4ff20f6e..6c2bf2408560b6e21200a5f6ad4bb1ae9bbb3a0c 100644 (file)
@@ -74,6 +74,7 @@ extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_NA_SKIP;
 extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP;
 extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_DROP;
 extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_PARK;
+extern const isc::log::MessageID DHCP6_HOOK_LEASES6_PARKING_LOT_FULL;
 extern const isc::log::MessageID DHCP6_HOOK_PACKET_RCVD_SKIP;
 extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_DROP;
 extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_SKIP;
index 96c245714d7255a64ad85321b2ab69c75071a94b..fc5bf36f351ae020c916abac22fa5d1153cf892a 100644 (file)
@@ -422,6 +422,14 @@ not build the wire data (pack) because it was already done by the
 book. The argument specifies the client and transaction identification
 information.
 
+% DHCP6_HOOK_LEASES6_PARKING_LOT_FULL The parked-packet-limit %1, has been reached, dropping query: %2
+This debug message occurs when the parking lot used to hold client queries
+while hook library work for them completes has reached or exceeded the
+limit set by the parked-packet-limit global parameter. This can occur when
+kea-dhcp6 is using hook libraries (e.g. HA) that implement the
+"leases6-committed" callout and client queries are arriving faster than
+those callouts can fulfill them.
+
 % DHCP6_HOOK_SUBNET6_SELECT_DROP %1: packet was dropped because a callout set the drop flag
 This debug message is printed when a callout installed on the
 subnet6_select hook point set the drop flag. For this particular hook
index 57f8a22b2e446fc76cee004282eff014d0df7888..b3eb0ee03de0dc67f1ea2c4557159bd5292a1961 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.6.
+// A Bison parser, made by GNU Bison 3.3.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -30,9 +30,8 @@
 // This special exception was added by the Free Software Foundation in
 // version 2.2 of Bison.
 
-// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-// especially those whose name start with YY_ or yy_.  They are
-// private implementation details that can be changed or removed.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details.  Do not rely on them.
 
 
 // Take the name prefix into account.
 
 
 // Unqualified %code blocks.
-#line 34 "dhcp6_parser.yy"
+#line 34 "dhcp6_parser.yy" // lalr1.cc:435
 
 #include <dhcp6/parser_context.h>
 
-#line 52 "dhcp6_parser.cc"
+#line 51 "dhcp6_parser.cc" // lalr1.cc:435
 
 
 #ifndef YY_
@@ -63,7 +62,6 @@
 # endif
 #endif
 
-
 // Whether we are compiled with exception support.
 #ifndef YY_EXCEPTIONS
 # if defined __GNUC__ && !defined __EXCEPTIONS
@@ -94,6 +92,9 @@
 # endif
 
 
+// Suppress unused-variable warnings by "using" E.
+#define YYUSE(E) ((void) (E))
+
 // Enable debugging if requested.
 #if PARSER6_DEBUG
 
 # define YY_STACK_PRINT()               \
   do {                                  \
     if (yydebug_)                       \
-      yy_stack_print_ ();                \
+      yystack_print_ ();                \
   } while (false)
 
 #else // !PARSER6_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
 #define YYERROR         goto yyerrorlab
 #define YYRECOVERING()  (!!yyerrstatus_)
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:510
 namespace isc { namespace dhcp {
-#line 145 "dhcp6_parser.cc"
+#line 146 "dhcp6_parser.cc" // lalr1.cc:510
+
+  /* Return YYSTR after stripping away unnecessary quotes and
+     backslashes, so that it's suitable for yyerror.  The heuristic is
+     that double-quoting is unnecessary unless the string contains an
+     apostrophe, a comma, or backslash (other than backslash-backslash).
+     YYSTR is taken from yytname.  */
+  std::string
+  Dhcp6Parser::yytnamerr_ (const char *yystr)
+  {
+    if (*yystr == '"')
+      {
+        std::string yyr;
+        char const *yyp = yystr;
+
+        for (;;)
+          switch (*++yyp)
+            {
+            case '\'':
+            case ',':
+              goto do_not_strip_quotes;
+
+            case '\\':
+              if (*++yyp != '\\')
+                goto do_not_strip_quotes;
+              else
+                goto append;
+
+            append:
+            default:
+              yyr += *yyp;
+              break;
+
+            case '"':
+              return yyr;
+            }
+      do_not_strip_quotes: ;
+      }
+
+    return yystr;
+  }
+
 
   /// Build a parser object.
   Dhcp6Parser::Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg)
+    :
 #if PARSER6_DEBUG
-    : yydebug_ (false),
+      yydebug_ (false),
       yycdebug_ (&std::cerr),
-#else
-    :
 #endif
       ctx (ctx_yyarg)
   {}
@@ -161,7 +202,7 @@ namespace isc { namespace dhcp {
   {}
 
   /*---------------.
-  | symbol kinds.  |
+  | Symbol types.  |
   `---------------*/
 
 
@@ -192,13 +233,13 @@ namespace isc { namespace dhcp {
     : state (s)
   {}
 
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::by_state::kind () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_number_type
+  Dhcp6Parser::by_state::type_get () const YY_NOEXCEPT
   {
     if (state == empty_state)
-      return symbol_kind::S_YYEMPTY;
+      return empty_symbol;
     else
-      return YY_CAST (symbol_kind_type, yystos_[+state]);
+      return yystos_[state];
   }
 
   Dhcp6Parser::stack_symbol_type::stack_symbol_type ()
@@ -207,32 +248,32 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
     : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
   {
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+    switch (that.type_get ())
+    {
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -249,32 +290,32 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
     : super_type (s, YY_MOVE (that.location))
   {
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+    switch (that.type_get ())
+    {
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,81 +324,40 @@ namespace isc { namespace dhcp {
     }
 
     // that is emptied.
-    that.kind_ = symbol_kind::S_YYEMPTY;
+    that.type = empty_symbol;
   }
 
 #if YY_CPLUSPLUS < 201103L
-  Dhcp6Parser::stack_symbol_type&
-  Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
-  {
-    state = that.state;
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.copy< ElementPtr > (that.value);
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.copy< bool > (that.value);
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.copy< double > (that.value);
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.copy< int64_t > (that.value);
-        break;
-
-      case symbol_kind::S_STRING: // "constant string"
-        value.copy< std::string > (that.value);
-        break;
-
-      default:
-        break;
-    }
-
-    location = that.location;
-    return *this;
-  }
-
   Dhcp6Parser::stack_symbol_type&
   Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
   {
     state = that.state;
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+    switch (that.type_get ())
+    {
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -383,97 +383,99 @@ namespace isc { namespace dhcp {
 #if PARSER6_DEBUG
   template <typename Base>
   void
-  Dhcp6Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
+  Dhcp6Parser::yy_print_ (std::ostream& yyo,
+                                     const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YY_USE (yyoutput);
+    YYUSE (yyoutput);
+    symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
+    // Avoid a (spurious) G++ 4.8 warning about "array subscript is
+    // below array bounds".
     if (yysym.empty ())
-      yyo << "empty symbol";
-    else
-      {
-        symbol_kind_type yykind = yysym.kind ();
-        yyo << (yykind < YYNTOKENS ? "token" : "nterm")
-            << ' ' << yysym.name () << " ("
-            << yysym.location << ": ";
-        switch (yykind)
-    {
-      case symbol_kind::S_STRING: // "constant string"
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < std::string > (); }
-#line 404 "dhcp6_parser.cc"
+      std::abort ();
+#endif
+    yyo << (yytype < yyntokens_ ? "token" : "nterm")
+        << ' ' << yytname_[yytype] << " ("
+        << yysym.location << ": ";
+    switch (yytype)
+    {
+      case 209: // "constant string"
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < std::string > (); }
+#line 407 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < int64_t > (); }
-#line 410 "dhcp6_parser.cc"
+      case 210: // "integer"
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < int64_t > (); }
+#line 413 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < double > (); }
-#line 416 "dhcp6_parser.cc"
+      case 211: // "floating point"
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < double > (); }
+#line 419 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < bool > (); }
-#line 422 "dhcp6_parser.cc"
+      case 212: // "boolean"
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < bool > (); }
+#line 425 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_value: // value
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 428 "dhcp6_parser.cc"
+      case 229: // value
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 431 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_map_value: // map_value
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 434 "dhcp6_parser.cc"
+      case 233: // map_value
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 437 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 440 "dhcp6_parser.cc"
+      case 274: // ddns_replace_client_name_value
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 443 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_db_type: // db_type
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 446 "dhcp6_parser.cc"
+      case 315: // db_type
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 449 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 452 "dhcp6_parser.cc"
+      case 332: // on_fail_mode
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 455 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_hr_mode: // hr_mode
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 458 "dhcp6_parser.cc"
+      case 422: // hr_mode
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 461 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_duid_type: // duid_type
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 464 "dhcp6_parser.cc"
+      case 558: // duid_type
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 467 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 291 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 470 "dhcp6_parser.cc"
+      case 601: // ncr_protocol_value
+#line 292 "dhcp6_parser.yy" // lalr1.cc:676
+        { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 473 "dhcp6_parser.cc" // lalr1.cc:676
         break;
 
       default:
         break;
     }
-        yyo << ')';
-      }
+    yyo << ')';
   }
 #endif
 
@@ -532,11 +534,11 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::state_type
   Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
   {
-    int yyr = yypgoto_[yysym - YYNTOKENS] + yystate;
+    int yyr = yypgoto_[yysym - yyntokens_] + yystate;
     if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
       return yytable_[yyr];
     else
-      return yydefgoto_[yysym - YYNTOKENS];
+      return yydefgoto_[yysym - yyntokens_];
   }
 
   bool
@@ -560,6 +562,7 @@ namespace isc { namespace dhcp {
   int
   Dhcp6Parser::parse ()
   {
+    // State.
     int yyn;
     /// Length of the RHS of the rule being reduced.
     int yylen = 0;
@@ -595,8 +598,7 @@ namespace isc { namespace dhcp {
   | yynewstate -- push a new symbol on the stack.  |
   `-----------------------------------------------*/
   yynewstate:
-    YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n';
-    YY_STACK_PRINT ();
+    YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
 
     // Accept?
     if (yystack_[0].state == yyfinal_)
@@ -610,14 +612,14 @@ namespace isc { namespace dhcp {
   `-----------*/
   yybackup:
     // Try to take a decision without lookahead.
-    yyn = yypact_[+yystack_[0].state];
+    yyn = yypact_[yystack_[0].state];
     if (yy_pact_value_is_default_ (yyn))
       goto yydefault;
 
     // Read a lookahead token.
     if (yyla.empty ())
       {
-        YYCDEBUG << "Reading a token\n";
+        YYCDEBUG << "Reading a token";
 #if YY_EXCEPTIONS
         try
 #endif // YY_EXCEPTIONS
@@ -636,23 +638,11 @@ namespace isc { namespace dhcp {
       }
     YY_SYMBOL_PRINT ("Next token is", yyla);
 
-    if (yyla.kind () == symbol_kind::S_YYerror)
-    {
-      // The scanner already issued an error message, process directly
-      // to error recovery.  But do not keep the error token as
-      // lookahead, it is too special and may lead us to an endless
-      // loop in error recovery. */
-      yyla.kind_ = symbol_kind::S_YYUNDEF;
-      goto yyerrlab1;
-    }
-
     /* If the proper action on seeing token YYLA.TYPE is to reduce or
        to detect an error, take that action.  */
-    yyn += yyla.kind ();
-    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
-      {
-        goto yydefault;
-      }
+    yyn += yyla.type_get ();
+    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
+      goto yydefault;
 
     // Reduce or error.
     yyn = yytable_[yyn];
@@ -669,7 +659,7 @@ namespace isc { namespace dhcp {
       --yyerrstatus_;
 
     // Shift the lookahead token.
-    yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
+    yypush_ ("Shifting", yyn, YY_MOVE (yyla));
     goto yynewstate;
 
 
@@ -677,7 +667,7 @@ namespace isc { namespace dhcp {
   | yydefault -- do the default action for the current state.  |
   `-----------------------------------------------------------*/
   yydefault:
-    yyn = yydefact_[+yystack_[0].state];
+    yyn = yydefact_[yystack_[0].state];
     if (yyn == 0)
       goto yyerrlab;
     goto yyreduce;
@@ -696,30 +686,30 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -743,284 +733,284 @@ namespace isc { namespace dhcp {
         {
           switch (yyn)
             {
-  case 2: // $@1: %empty
-#line 300 "dhcp6_parser.yy"
-                     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 750 "dhcp6_parser.cc"
+  case 2:
+#line 301 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.NO_KEYWORD; }
+#line 740 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 4: // $@2: %empty
-#line 301 "dhcp6_parser.yy"
-                      { ctx.ctx_ = ctx.CONFIG; }
-#line 756 "dhcp6_parser.cc"
+  case 4:
+#line 302 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.CONFIG; }
+#line 746 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 6: // $@3: %empty
-#line 302 "dhcp6_parser.yy"
-                 { ctx.ctx_ = ctx.DHCP6; }
-#line 762 "dhcp6_parser.cc"
+  case 6:
+#line 303 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.DHCP6; }
+#line 752 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 8: // $@4: %empty
-#line 303 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 768 "dhcp6_parser.cc"
+  case 8:
+#line 304 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
+#line 758 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 10: // $@5: %empty
-#line 304 "dhcp6_parser.yy"
-                   { ctx.ctx_ = ctx.SUBNET6; }
-#line 774 "dhcp6_parser.cc"
+  case 10:
+#line 305 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.SUBNET6; }
+#line 764 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 12: // $@6: %empty
-#line 305 "dhcp6_parser.yy"
-                 { ctx.ctx_ = ctx.POOLS; }
-#line 780 "dhcp6_parser.cc"
+  case 12:
+#line 306 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.POOLS; }
+#line 770 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 14: // $@7: %empty
-#line 306 "dhcp6_parser.yy"
-                   { ctx.ctx_ = ctx.PD_POOLS; }
-#line 786 "dhcp6_parser.cc"
+  case 14:
+#line 307 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.PD_POOLS; }
+#line 776 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 16: // $@8: %empty
-#line 307 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 792 "dhcp6_parser.cc"
+  case 16:
+#line 308 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.RESERVATIONS; }
+#line 782 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 18: // $@9: %empty
-#line 308 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.DHCP6; }
-#line 798 "dhcp6_parser.cc"
+  case 18:
+#line 309 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.DHCP6; }
+#line 788 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 20: // $@10: %empty
-#line 309 "dhcp6_parser.yy"
-                      { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 804 "dhcp6_parser.cc"
+  case 20:
+#line 310 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.OPTION_DEF; }
+#line 794 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 22: // $@11: %empty
-#line 310 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 810 "dhcp6_parser.cc"
+  case 22:
+#line 311 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.OPTION_DATA; }
+#line 800 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 24: // $@12: %empty
-#line 311 "dhcp6_parser.yy"
-                         { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 816 "dhcp6_parser.cc"
+  case 24:
+#line 312 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
+#line 806 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 26: // $@13: %empty
-#line 312 "dhcp6_parser.yy"
-                     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 822 "dhcp6_parser.cc"
+  case 26:
+#line 313 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.DHCP_DDNS; }
+#line 812 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 28: // $@14: %empty
-#line 313 "dhcp6_parser.yy"
-                          { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 828 "dhcp6_parser.cc"
+  case 28:
+#line 314 "dhcp6_parser.yy" // lalr1.cc:919
+    { ctx.ctx_ = ctx.CONFIG_CONTROL; }
+#line 818 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 30: // value: "integer"
-#line 321 "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"
+  case 30:
+#line 322 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 824 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 31: // value: "floating point"
-#line 322 "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"
+  case 31:
+#line 323 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 830 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 32: // value: "boolean"
-#line 323 "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"
+  case 32:
+#line 324 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 836 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 33: // value: "constant string"
-#line 324 "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"
+  case 33:
+#line 325 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 842 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 34: // value: "null"
-#line 325 "dhcp6_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 858 "dhcp6_parser.cc"
+  case 34:
+#line 326 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 848 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 35: // value: map2
-#line 326 "dhcp6_parser.yy"
-            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 864 "dhcp6_parser.cc"
+  case 35:
+#line 327 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 854 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 36: // value: list_generic
-#line 327 "dhcp6_parser.yy"
-                    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 870 "dhcp6_parser.cc"
+  case 36:
+#line 328 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 860 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 37: // sub_json: value
-#line 330 "dhcp6_parser.yy"
-                {
+  case 37:
+#line 331 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
 }
-#line 879 "dhcp6_parser.cc"
+#line 869 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 38: // $@15: %empty
-#line 335 "dhcp6_parser.yy"
-                     {
+  case 38:
+#line 336 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 890 "dhcp6_parser.cc"
+#line 880 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 39: // map2: "{" $@15 map_content "}"
-#line 340 "dhcp6_parser.yy"
-                             {
+  case 39:
+#line 341 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 900 "dhcp6_parser.cc"
+#line 890 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 40: // map_value: map2
-#line 346 "dhcp6_parser.yy"
-                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 906 "dhcp6_parser.cc"
+  case 40:
+#line 347 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 896 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 43: // not_empty_map: "constant string" ":" value
-#line 353 "dhcp6_parser.yy"
-                                  {
+  case 43:
+#line 354 "dhcp6_parser.yy" // lalr1.cc:919
+    {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
                   }
-#line 916 "dhcp6_parser.cc"
+#line 906 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 358 "dhcp6_parser.yy"
-                                                      {
+  case 44:
+#line 359 "dhcp6_parser.yy" // lalr1.cc:919
+    {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
                   }
-#line 927 "dhcp6_parser.cc"
+#line 917 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 45: // $@16: %empty
-#line 366 "dhcp6_parser.yy"
-                              {
+  case 45:
+#line 367 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 936 "dhcp6_parser.cc"
+#line 926 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 46: // list_generic: "[" $@16 list_content "]"
-#line 369 "dhcp6_parser.yy"
-                               {
+  case 46:
+#line 370 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // list parsing complete. Put any sanity checking here
 }
-#line 944 "dhcp6_parser.cc"
+#line 934 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 49: // not_empty_list: value
-#line 377 "dhcp6_parser.yy"
-                      {
+  case 49:
+#line 378 "dhcp6_parser.yy" // lalr1.cc:919
+    {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
                   }
-#line 953 "dhcp6_parser.cc"
+#line 943 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 50: // not_empty_list: not_empty_list "," value
-#line 381 "dhcp6_parser.yy"
-                                           {
+  case 50:
+#line 382 "dhcp6_parser.yy" // lalr1.cc:919
+    {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
                   }
-#line 962 "dhcp6_parser.cc"
+#line 952 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 51: // $@17: %empty
-#line 388 "dhcp6_parser.yy"
-                              {
+  case 51:
+#line 389 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // List parsing about to start
 }
-#line 970 "dhcp6_parser.cc"
+#line 960 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 52: // list_strings: "[" $@17 list_strings_content "]"
-#line 390 "dhcp6_parser.yy"
-                                       {
+  case 52:
+#line 391 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 979 "dhcp6_parser.cc"
+#line 969 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 55: // not_empty_list_strings: "constant string"
-#line 399 "dhcp6_parser.yy"
-                               {
+  case 55:
+#line 400 "dhcp6_parser.yy" // lalr1.cc:919
+    {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 988 "dhcp6_parser.cc"
+#line 978 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 403 "dhcp6_parser.yy"
-                                                            {
+  case 56:
+#line 404 "dhcp6_parser.yy" // lalr1.cc:919
+    {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 997 "dhcp6_parser.cc"
+#line 987 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 57: // unknown_map_entry: "constant string" ":"
-#line 414 "dhcp6_parser.yy"
-                                {
+  case 57:
+#line 415 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 1008 "dhcp6_parser.cc"
+#line 998 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 58: // $@18: %empty
-#line 423 "dhcp6_parser.yy"
-                           {
+  case 58:
+#line 424 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1019 "dhcp6_parser.cc"
+#line 1009 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 59: // syntax_map: "{" $@18 global_object "}"
-#line 428 "dhcp6_parser.yy"
-                               {
+  case 59:
+#line 429 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
@@ -1028,12 +1018,12 @@ namespace isc { namespace dhcp {
     // Dhcp6 is required
     ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 1032 "dhcp6_parser.cc"
+#line 1022 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 60: // $@19: %empty
-#line 438 "dhcp6_parser.yy"
-                     {
+  case 60:
+#line 439 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // This code is executed when we're about to start parsing
     // the content of the map
     // Prevent against duplicate.
@@ -1043,973 +1033,983 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 1047 "dhcp6_parser.cc"
+#line 1037 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 61: // global_object: "Dhcp6" $@19 ":" "{" global_params "}"
-#line 447 "dhcp6_parser.yy"
-                                                    {
+  case 61:
+#line 448 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1057 "dhcp6_parser.cc"
+#line 1047 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 62: // $@20: %empty
-#line 455 "dhcp6_parser.yy"
-                          {
+  case 62:
+#line 456 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1067 "dhcp6_parser.cc"
+#line 1057 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 63: // sub_dhcp6: "{" $@20 global_params "}"
-#line 459 "dhcp6_parser.yy"
-                               {
+  case 63:
+#line 460 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No global parameter is required
     // parsing completed
 }
-#line 1076 "dhcp6_parser.cc"
+#line 1066 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 128: // $@21: %empty
-#line 534 "dhcp6_parser.yy"
-                               {
+  case 129:
+#line 536 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1085 "dhcp6_parser.cc"
+#line 1075 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 129: // data_directory: "data-directory" $@21 ":" "constant string"
-#line 537 "dhcp6_parser.yy"
-               {
+  case 130:
+#line 539 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
     ctx.leave();
 }
-#line 1095 "dhcp6_parser.cc"
+#line 1085 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 130: // preferred_lifetime: "preferred-lifetime" ":" "integer"
-#line 543 "dhcp6_parser.yy"
-                                                     {
+  case 131:
+#line 545 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
 }
-#line 1105 "dhcp6_parser.cc"
+#line 1095 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 131: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
-#line 549 "dhcp6_parser.yy"
-                                                             {
+  case 132:
+#line 551 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("min-preferred-lifetime", prf);
 }
-#line 1115 "dhcp6_parser.cc"
+#line 1105 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 132: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
-#line 555 "dhcp6_parser.yy"
-                                                             {
+  case 133:
+#line 557 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("max-preferred-lifetime", prf);
 }
-#line 1125 "dhcp6_parser.cc"
+#line 1115 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 133: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 561 "dhcp6_parser.yy"
-                                             {
+  case 134:
+#line 563 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
 }
-#line 1135 "dhcp6_parser.cc"
+#line 1125 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 134: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 567 "dhcp6_parser.yy"
-                                                     {
+  case 135:
+#line 569 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("min-valid-lifetime", prf);
 }
-#line 1145 "dhcp6_parser.cc"
+#line 1135 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 135: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 573 "dhcp6_parser.yy"
-                                                     {
+  case 136:
+#line 575 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("max-valid-lifetime", prf);
 }
-#line 1155 "dhcp6_parser.cc"
+#line 1145 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 136: // renew_timer: "renew-timer" ":" "integer"
-#line 579 "dhcp6_parser.yy"
-                                       {
+  case 137:
+#line 581 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
 }
-#line 1165 "dhcp6_parser.cc"
+#line 1155 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 137: // rebind_timer: "rebind-timer" ":" "integer"
-#line 585 "dhcp6_parser.yy"
-                                         {
+  case 138:
+#line 587 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
 }
-#line 1175 "dhcp6_parser.cc"
+#line 1165 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 138: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 591 "dhcp6_parser.yy"
-                                                       {
+  case 139:
+#line 593 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("calculate-tee-times", ctt);
 }
-#line 1185 "dhcp6_parser.cc"
+#line 1175 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 139: // t1_percent: "t1-percent" ":" "floating point"
-#line 597 "dhcp6_parser.yy"
-                                   {
+  case 140:
+#line 599 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
 }
-#line 1195 "dhcp6_parser.cc"
+#line 1185 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 140: // t2_percent: "t2-percent" ":" "floating point"
-#line 603 "dhcp6_parser.yy"
-                                   {
+  case 141:
+#line 605 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
 }
-#line 1205 "dhcp6_parser.cc"
+#line 1195 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 141: // cache_threshold: "cache-threshold" ":" "floating point"
-#line 609 "dhcp6_parser.yy"
-                                             {
+  case 142:
+#line 611 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
     ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cache-threshold", ct);
 }
-#line 1215 "dhcp6_parser.cc"
+#line 1205 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 142: // cache_max_age: "cache-max-age" ":" "integer"
-#line 615 "dhcp6_parser.yy"
-                                           {
+  case 143:
+#line 617 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("cache-max-age", cm);
 }
-#line 1225 "dhcp6_parser.cc"
+#line 1215 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 143: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 621 "dhcp6_parser.yy"
-                                                                 {
+  case 144:
+#line 623 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1235 "dhcp6_parser.cc"
+#line 1225 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 144: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 627 "dhcp6_parser.yy"
-                                                   {
+  case 145:
+#line 629 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
 }
-#line 1245 "dhcp6_parser.cc"
+#line 1235 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 145: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 633 "dhcp6_parser.yy"
-                                                               {
+  case 146:
+#line 635 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
 }
-#line 1255 "dhcp6_parser.cc"
+#line 1245 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 146: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 639 "dhcp6_parser.yy"
-                                                                       {
+  case 147:
+#line 641 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
 }
-#line 1265 "dhcp6_parser.cc"
+#line 1255 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 147: // $@22: %empty
-#line 645 "dhcp6_parser.yy"
-                                                   {
+  case 148:
+#line 647 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 1274 "dhcp6_parser.cc"
+#line 1264 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 148: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
-#line 648 "dhcp6_parser.yy"
-                                       {
+  case 149:
+#line 650 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1283 "dhcp6_parser.cc"
+#line 1273 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 149: // ddns_replace_client_name_value: "when-present"
-#line 654 "dhcp6_parser.yy"
-                 {
+  case 150:
+#line 656 "dhcp6_parser.yy" // lalr1.cc:919
+    {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1291 "dhcp6_parser.cc"
+#line 1281 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 150: // ddns_replace_client_name_value: "never"
-#line 657 "dhcp6_parser.yy"
-          {
+  case 151:
+#line 659 "dhcp6_parser.yy" // lalr1.cc:919
+    {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1299 "dhcp6_parser.cc"
+#line 1289 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 151: // ddns_replace_client_name_value: "always"
-#line 660 "dhcp6_parser.yy"
-           {
+  case 152:
+#line 662 "dhcp6_parser.yy" // lalr1.cc:919
+    {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1307 "dhcp6_parser.cc"
+#line 1297 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 152: // ddns_replace_client_name_value: "when-not-present"
-#line 663 "dhcp6_parser.yy"
-                     {
+  case 153:
+#line 665 "dhcp6_parser.yy" // lalr1.cc:919
+    {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1315 "dhcp6_parser.cc"
+#line 1305 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 153: // ddns_replace_client_name_value: "boolean"
-#line 666 "dhcp6_parser.yy"
-            {
+  case 154:
+#line 668 "dhcp6_parser.yy" // lalr1.cc:919
+    {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 1324 "dhcp6_parser.cc"
+#line 1314 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 154: // $@23: %empty
-#line 672 "dhcp6_parser.yy"
-                                             {
+  case 155:
+#line 674 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1333 "dhcp6_parser.cc"
+#line 1323 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 155: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
-#line 675 "dhcp6_parser.yy"
-               {
+  case 156:
+#line 677 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
     ctx.leave();
 }
-#line 1343 "dhcp6_parser.cc"
+#line 1333 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 156: // $@24: %empty
-#line 681 "dhcp6_parser.yy"
-                                               {
+  case 157:
+#line 683 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1352 "dhcp6_parser.cc"
+#line 1342 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 157: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
-#line 684 "dhcp6_parser.yy"
-               {
+  case 158:
+#line 686 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
     ctx.leave();
 }
-#line 1362 "dhcp6_parser.cc"
+#line 1352 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 158: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
-#line 690 "dhcp6_parser.yy"
-                                                         {
+  case 159:
+#line 692 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("ddns-update-on-renew", b);
 }
-#line 1372 "dhcp6_parser.cc"
+#line 1362 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 159: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
-#line 696 "dhcp6_parser.yy"
-                                                                         {
+  case 160:
+#line 698 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
 }
-#line 1382 "dhcp6_parser.cc"
+#line 1372 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 160: // $@25: %empty
-#line 702 "dhcp6_parser.yy"
-                                     {
+  case 161:
+#line 704 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1391 "dhcp6_parser.cc"
+#line 1381 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 161: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
-#line 705 "dhcp6_parser.yy"
-               {
+  case 162:
+#line 707 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 1401 "dhcp6_parser.cc"
+#line 1391 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 162: // $@26: %empty
-#line 711 "dhcp6_parser.yy"
-                                                     {
+  case 163:
+#line 713 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1410 "dhcp6_parser.cc"
+#line 1400 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 163: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
-#line 714 "dhcp6_parser.yy"
-               {
+  case 164:
+#line 716 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 1420 "dhcp6_parser.cc"
+#line 1410 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 164: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 720 "dhcp6_parser.yy"
-                                                       {
+  case 165:
+#line 722 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("store-extended-info", b);
 }
-#line 1430 "dhcp6_parser.cc"
+#line 1420 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 165: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 726 "dhcp6_parser.yy"
-                                                                             {
+  case 166:
+#line 728 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1440 "dhcp6_parser.cc"
+#line 1430 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 166: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 732 "dhcp6_parser.yy"
-                                                                         {
+  case 167:
+#line 734 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1450 "dhcp6_parser.cc"
+#line 1440 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 167: // $@27: %empty
-#line 738 "dhcp6_parser.yy"
-                       {
+  case 168:
+#line 740 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1459 "dhcp6_parser.cc"
+#line 1449 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 168: // server_tag: "server-tag" $@27 ":" "constant string"
-#line 741 "dhcp6_parser.yy"
-               {
+  case 169:
+#line 743 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1469 "dhcp6_parser.cc"
+#line 1459 "dhcp6_parser.cc" // lalr1.cc:919
+    break;
+
+  case 170:
+#line 749 "dhcp6_parser.yy" // lalr1.cc:919
+    {
+    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)));
+    ctx.stack_.back()->set("parked-packet-limit", ppl);
+}
+#line 1469 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 169: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 747 "dhcp6_parser.yy"
-                                                             {
+  case 171:
+#line 755 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
     ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-reservations-unique", unique);
 }
-#line 1479 "dhcp6_parser.cc"
+#line 1479 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 170: // $@28: %empty
-#line 753 "dhcp6_parser.yy"
-                                     {
+  case 172:
+#line 761 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1491 "dhcp6_parser.cc"
+#line 1491 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 171: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
-#line 759 "dhcp6_parser.yy"
-                                                               {
+  case 173:
+#line 767 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1501 "dhcp6_parser.cc"
+#line 1501 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 172: // $@29: %empty
-#line 765 "dhcp6_parser.yy"
-                                {
+  case 174:
+#line 773 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1511 "dhcp6_parser.cc"
+#line 1511 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 173: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
-#line 769 "dhcp6_parser.yy"
-                                          {
+  case 175:
+#line 777 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1520 "dhcp6_parser.cc"
+#line 1520 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 181: // $@30: %empty
-#line 785 "dhcp6_parser.yy"
-                            {
+  case 183:
+#line 793 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1532 "dhcp6_parser.cc"
+#line 1532 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 182: // interfaces_list: "interfaces" $@30 ":" list_strings
-#line 791 "dhcp6_parser.yy"
-                     {
+  case 184:
+#line 799 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1541 "dhcp6_parser.cc"
+#line 1541 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 183: // re_detect: "re-detect" ":" "boolean"
-#line 796 "dhcp6_parser.yy"
-                                   {
+  case 185:
+#line 804 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1551 "dhcp6_parser.cc"
+#line 1551 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 184: // $@31: %empty
-#line 802 "dhcp6_parser.yy"
-                               {
+  case 186:
+#line 810 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1563 "dhcp6_parser.cc"
+#line 1563 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 185: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
-#line 808 "dhcp6_parser.yy"
-                                                          {
+  case 187:
+#line 816 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 1574 "dhcp6_parser.cc"
+#line 1574 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 186: // $@32: %empty
-#line 815 "dhcp6_parser.yy"
-                               {
+  case 188:
+#line 823 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1586 "dhcp6_parser.cc"
+#line 1586 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 187: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
-#line 821 "dhcp6_parser.yy"
-                                                          {
+  case 189:
+#line 829 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 1597 "dhcp6_parser.cc"
+#line 1597 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 188: // $@33: %empty
-#line 828 "dhcp6_parser.yy"
-                                 {
+  case 190:
+#line 836 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1609 "dhcp6_parser.cc"
+#line 1609 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 189: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
-#line 834 "dhcp6_parser.yy"
-                                                      {
+  case 191:
+#line 842 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1618 "dhcp6_parser.cc"
+#line 1618 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 194: // $@34: %empty
-#line 847 "dhcp6_parser.yy"
-                         {
+  case 196:
+#line 855 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1628 "dhcp6_parser.cc"
+#line 1628 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 195: // database: "{" $@34 database_map_params "}"
-#line 851 "dhcp6_parser.yy"
-                                     {
+  case 197:
+#line 859 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1638 "dhcp6_parser.cc"
+#line 1638 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 220: // $@35: %empty
-#line 885 "dhcp6_parser.yy"
-                    {
+  case 222:
+#line 893 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1647 "dhcp6_parser.cc"
+#line 1647 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 221: // database_type: "type" $@35 ":" db_type
-#line 888 "dhcp6_parser.yy"
-                {
+  case 223:
+#line 896 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1656 "dhcp6_parser.cc"
+#line 1656 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 222: // db_type: "memfile"
-#line 893 "dhcp6_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1662 "dhcp6_parser.cc"
+  case 224:
+#line 901 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1662 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 223: // db_type: "mysql"
-#line 894 "dhcp6_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1668 "dhcp6_parser.cc"
+  case 225:
+#line 902 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1668 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 224: // db_type: "postgresql"
-#line 895 "dhcp6_parser.yy"
-                    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1674 "dhcp6_parser.cc"
+  case 226:
+#line 903 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1674 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 225: // db_type: "cql"
-#line 896 "dhcp6_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1680 "dhcp6_parser.cc"
+  case 227:
+#line 904 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1680 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 226: // $@36: %empty
-#line 899 "dhcp6_parser.yy"
-           {
+  case 228:
+#line 907 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1689 "dhcp6_parser.cc"
+#line 1689 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 227: // user: "user" $@36 ":" "constant string"
-#line 902 "dhcp6_parser.yy"
-               {
+  case 229:
+#line 910 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1699 "dhcp6_parser.cc"
+#line 1699 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 228: // $@37: %empty
-#line 908 "dhcp6_parser.yy"
-                   {
+  case 230:
+#line 916 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1708 "dhcp6_parser.cc"
+#line 1708 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 229: // password: "password" $@37 ":" "constant string"
-#line 911 "dhcp6_parser.yy"
-               {
+  case 231:
+#line 919 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1718 "dhcp6_parser.cc"
+#line 1718 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 230: // $@38: %empty
-#line 917 "dhcp6_parser.yy"
-           {
+  case 232:
+#line 925 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1727 "dhcp6_parser.cc"
+#line 1727 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 231: // host: "host" $@38 ":" "constant string"
-#line 920 "dhcp6_parser.yy"
-               {
+  case 233:
+#line 928 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1737 "dhcp6_parser.cc"
+#line 1737 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 232: // port: "port" ":" "integer"
-#line 926 "dhcp6_parser.yy"
-                         {
+  case 234:
+#line 934 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1747 "dhcp6_parser.cc"
+#line 1747 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 233: // $@39: %empty
-#line 932 "dhcp6_parser.yy"
-           {
+  case 235:
+#line 940 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1756 "dhcp6_parser.cc"
+#line 1756 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 234: // name: "name" $@39 ":" "constant string"
-#line 935 "dhcp6_parser.yy"
-               {
+  case 236:
+#line 943 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1766 "dhcp6_parser.cc"
+#line 1766 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 235: // persist: "persist" ":" "boolean"
-#line 941 "dhcp6_parser.yy"
-                               {
+  case 237:
+#line 949 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1776 "dhcp6_parser.cc"
+#line 1776 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 236: // lfc_interval: "lfc-interval" ":" "integer"
-#line 947 "dhcp6_parser.yy"
-                                         {
+  case 238:
+#line 955 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1786 "dhcp6_parser.cc"
+#line 1786 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 237: // readonly: "readonly" ":" "boolean"
-#line 953 "dhcp6_parser.yy"
-                                 {
+  case 239:
+#line 961 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1796 "dhcp6_parser.cc"
+#line 1796 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 238: // connect_timeout: "connect-timeout" ":" "integer"
-#line 959 "dhcp6_parser.yy"
-                                               {
+  case 240:
+#line 967 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1806 "dhcp6_parser.cc"
+#line 1806 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 239: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 965 "dhcp6_parser.yy"
-                                                       {
+  case 241:
+#line 973 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 1816 "dhcp6_parser.cc"
+#line 1816 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 240: // $@40: %empty
-#line 971 "dhcp6_parser.yy"
-                 {
+  case 242:
+#line 979 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_ON_FAIL);
 }
-#line 1825 "dhcp6_parser.cc"
+#line 1825 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 241: // on_fail: "on-fail" $@40 ":" on_fail_mode
-#line 974 "dhcp6_parser.yy"
-                     {
+  case 243:
+#line 982 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1834 "dhcp6_parser.cc"
+#line 1834 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 242: // on_fail_mode: "stop-retry-exit"
-#line 979 "dhcp6_parser.yy"
-                              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
-#line 1840 "dhcp6_parser.cc"
+  case 244:
+#line 987 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
+#line 1840 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 243: // on_fail_mode: "serve-retry-exit"
-#line 980 "dhcp6_parser.yy"
-                               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
-#line 1846 "dhcp6_parser.cc"
+  case 245:
+#line 988 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
+#line 1846 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 244: // on_fail_mode: "serve-retry-continue"
-#line 981 "dhcp6_parser.yy"
-                                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
-#line 1852 "dhcp6_parser.cc"
+  case 246:
+#line 989 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
+#line 1852 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 245: // max_row_errors: "max-row-errors" ":" "integer"
-#line 984 "dhcp6_parser.yy"
-                                             {
+  case 247:
+#line 992 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 1862 "dhcp6_parser.cc"
+#line 1862 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 246: // request_timeout: "request-timeout" ":" "integer"
-#line 990 "dhcp6_parser.yy"
-                                               {
+  case 248:
+#line 998 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("request-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("request-timeout", n);
 }
-#line 1872 "dhcp6_parser.cc"
+#line 1872 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 247: // tcp_keepalive: "tcp-keepalive" ":" "integer"
-#line 996 "dhcp6_parser.yy"
-                                           {
+  case 249:
+#line 1004 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("tcp-keepalive", 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-keepalive", n);
 }
-#line 1882 "dhcp6_parser.cc"
+#line 1882 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 248: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
-#line 1002 "dhcp6_parser.yy"
-                                       {
+  case 250:
+#line 1010 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1892 "dhcp6_parser.cc"
+#line 1892 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 249: // $@41: %empty
-#line 1008 "dhcp6_parser.yy"
-                               {
+  case 251:
+#line 1016 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1901 "dhcp6_parser.cc"
+#line 1901 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 250: // contact_points: "contact-points" $@41 ":" "constant string"
-#line 1011 "dhcp6_parser.yy"
-               {
+  case 252:
+#line 1019 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1911 "dhcp6_parser.cc"
+#line 1911 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 251: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1017 "dhcp6_parser.yy"
-                                                       {
+  case 253:
+#line 1025 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 1921 "dhcp6_parser.cc"
+#line 1921 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 252: // $@42: %empty
-#line 1023 "dhcp6_parser.yy"
-                   {
+  case 254:
+#line 1031 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1930 "dhcp6_parser.cc"
+#line 1930 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 253: // keyspace: "keyspace" $@42 ":" "constant string"
-#line 1026 "dhcp6_parser.yy"
-               {
+  case 255:
+#line 1034 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1940 "dhcp6_parser.cc"
+#line 1940 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 254: // $@43: %empty
-#line 1032 "dhcp6_parser.yy"
-                         {
+  case 256:
+#line 1040 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1949 "dhcp6_parser.cc"
+#line 1949 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 255: // consistency: "consistency" $@43 ":" "constant string"
-#line 1035 "dhcp6_parser.yy"
-               {
+  case 257:
+#line 1043 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1959 "dhcp6_parser.cc"
+#line 1959 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 256: // $@44: %empty
-#line 1041 "dhcp6_parser.yy"
-                                       {
+  case 258:
+#line 1049 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1968 "dhcp6_parser.cc"
+#line 1968 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 257: // serial_consistency: "serial-consistency" $@44 ":" "constant string"
-#line 1044 "dhcp6_parser.yy"
-               {
+  case 259:
+#line 1052 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("serial-consistency", c);
     ctx.leave();
 }
-#line 1978 "dhcp6_parser.cc"
+#line 1978 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 258: // $@45: %empty
-#line 1050 "dhcp6_parser.yy"
-                             {
+  case 260:
+#line 1058 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1990 "dhcp6_parser.cc"
+#line 1990 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 259: // sanity_checks: "sanity-checks" $@45 ":" "{" sanity_checks_params "}"
-#line 1056 "dhcp6_parser.yy"
-                                                           {
+  case 261:
+#line 1064 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1999 "dhcp6_parser.cc"
+#line 1999 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 263: // $@46: %empty
-#line 1066 "dhcp6_parser.yy"
-                           {
+  case 265:
+#line 1074 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2008 "dhcp6_parser.cc"
+#line 2008 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 264: // lease_checks: "lease-checks" $@46 ":" "constant string"
-#line 1069 "dhcp6_parser.yy"
-               {
+  case 266:
+#line 1077 "dhcp6_parser.yy" // lalr1.cc:919
+    {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
          (string(yystack_[0].value.as < std::string > ()) == "warn") ||
@@ -2024,375 +2024,375 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 2028 "dhcp6_parser.cc"
+#line 2028 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 265: // $@47: %empty
-#line 1085 "dhcp6_parser.yy"
-                         {
+  case 267:
+#line 1093 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 2040 "dhcp6_parser.cc"
+#line 2040 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 266: // mac_sources: "mac-sources" $@47 ":" "[" mac_sources_list "]"
-#line 1091 "dhcp6_parser.yy"
-                                                         {
+  case 268:
+#line 1099 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2049 "dhcp6_parser.cc"
+#line 2049 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 271: // duid_id: "duid"
-#line 1104 "dhcp6_parser.yy"
-              {
+  case 273:
+#line 1112 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 2058 "dhcp6_parser.cc"
+#line 2058 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 272: // string_id: "constant string"
-#line 1109 "dhcp6_parser.yy"
-                  {
+  case 274:
+#line 1117 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 2067 "dhcp6_parser.cc"
+#line 2067 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 273: // $@48: %empty
-#line 1114 "dhcp6_parser.yy"
-                                                           {
+  case 275:
+#line 1122 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 2079 "dhcp6_parser.cc"
+#line 2079 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 274: // host_reservation_identifiers: "host-reservation-identifiers" $@48 ":" "[" host_reservation_identifiers_list "]"
-#line 1120 "dhcp6_parser.yy"
-                                                                          {
+  case 276:
+#line 1128 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2088 "dhcp6_parser.cc"
+#line 2088 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 280: // hw_address_id: "hw-address"
-#line 1134 "dhcp6_parser.yy"
-                          {
+  case 282:
+#line 1142 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 2097 "dhcp6_parser.cc"
+#line 2097 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 281: // flex_id: "flex-id"
-#line 1139 "dhcp6_parser.yy"
-                 {
+  case 283:
+#line 1147 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 2106 "dhcp6_parser.cc"
+#line 2106 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 282: // $@49: %empty
-#line 1146 "dhcp6_parser.yy"
-                                               {
+  case 284:
+#line 1154 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2118 "dhcp6_parser.cc"
+#line 2118 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 283: // relay_supplied_options: "relay-supplied-options" $@49 ":" "[" list_content "]"
-#line 1152 "dhcp6_parser.yy"
-                                                     {
+  case 285:
+#line 1160 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2127 "dhcp6_parser.cc"
+#line 2127 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 284: // $@50: %empty
-#line 1159 "dhcp6_parser.yy"
-                                           {
+  case 286:
+#line 1167 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("multi-threading", mt);
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 2139 "dhcp6_parser.cc"
+#line 2139 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 285: // dhcp_multi_threading: "multi-threading" $@50 ":" "{" multi_threading_params "}"
-#line 1165 "dhcp6_parser.yy"
-                                                             {
+  case 287:
+#line 1173 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 2150 "dhcp6_parser.cc"
+#line 2150 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 294: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1184 "dhcp6_parser.yy"
-                                                             {
+  case 296:
+#line 1192 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2160 "dhcp6_parser.cc"
+#line 2160 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 295: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1190 "dhcp6_parser.yy"
-                                                 {
+  case 297:
+#line 1198 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2170 "dhcp6_parser.cc"
+#line 2170 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 296: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1196 "dhcp6_parser.yy"
-                                                   {
+  case 298:
+#line 1204 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2180 "dhcp6_parser.cc"
+#line 2180 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 297: // $@51: %empty
-#line 1202 "dhcp6_parser.yy"
-                                 {
+  case 299:
+#line 1210 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 2192 "dhcp6_parser.cc"
+#line 2192 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 298: // hooks_libraries: "hooks-libraries" $@51 ":" "[" hooks_libraries_list "]"
-#line 1208 "dhcp6_parser.yy"
-                                                             {
+  case 300:
+#line 1216 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2201 "dhcp6_parser.cc"
+#line 2201 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 303: // $@52: %empty
-#line 1221 "dhcp6_parser.yy"
-                              {
+  case 305:
+#line 1229 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2211 "dhcp6_parser.cc"
+#line 2211 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 304: // hooks_library: "{" $@52 hooks_params "}"
-#line 1225 "dhcp6_parser.yy"
-                              {
+  case 306:
+#line 1233 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2221 "dhcp6_parser.cc"
+#line 2221 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 305: // $@53: %empty
-#line 1231 "dhcp6_parser.yy"
-                                  {
+  case 307:
+#line 1239 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2231 "dhcp6_parser.cc"
+#line 2231 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 306: // sub_hooks_library: "{" $@53 hooks_params "}"
-#line 1235 "dhcp6_parser.yy"
-                              {
+  case 308:
+#line 1243 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2241 "dhcp6_parser.cc"
+#line 2241 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 312: // $@54: %empty
-#line 1250 "dhcp6_parser.yy"
-                 {
+  case 314:
+#line 1258 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2250 "dhcp6_parser.cc"
+#line 2250 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 313: // library: "library" $@54 ":" "constant string"
-#line 1253 "dhcp6_parser.yy"
-               {
+  case 315:
+#line 1261 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 2260 "dhcp6_parser.cc"
+#line 2260 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 314: // $@55: %empty
-#line 1259 "dhcp6_parser.yy"
-                       {
+  case 316:
+#line 1267 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2269 "dhcp6_parser.cc"
+#line 2269 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 315: // parameters: "parameters" $@55 ":" map_value
-#line 1262 "dhcp6_parser.yy"
-                  {
+  case 317:
+#line 1270 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2278 "dhcp6_parser.cc"
+#line 2278 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 316: // $@56: %empty
-#line 1268 "dhcp6_parser.yy"
-                                                     {
+  case 318:
+#line 1276 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 2290 "dhcp6_parser.cc"
+#line 2290 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 317: // expired_leases_processing: "expired-leases-processing" $@56 ":" "{" expired_leases_params "}"
-#line 1274 "dhcp6_parser.yy"
-                                                            {
+  case 319:
+#line 1282 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2300 "dhcp6_parser.cc"
+#line 2300 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 326: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1292 "dhcp6_parser.yy"
-                                                               {
+  case 328:
+#line 1300 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2310 "dhcp6_parser.cc"
+#line 2310 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 327: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1298 "dhcp6_parser.yy"
-                                                                               {
+  case 329:
+#line 1306 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2320 "dhcp6_parser.cc"
+#line 2320 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 328: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1304 "dhcp6_parser.yy"
-                                                       {
+  case 330:
+#line 1312 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2330 "dhcp6_parser.cc"
+#line 2330 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 329: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1310 "dhcp6_parser.yy"
-                                                     {
+  case 331:
+#line 1318 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2340 "dhcp6_parser.cc"
+#line 2340 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 330: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1316 "dhcp6_parser.yy"
-                                                 {
+  case 332:
+#line 1324 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2350 "dhcp6_parser.cc"
+#line 2350 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 331: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1322 "dhcp6_parser.yy"
-                                                               {
+  case 333:
+#line 1330 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2360 "dhcp6_parser.cc"
+#line 2360 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 332: // $@57: %empty
-#line 1331 "dhcp6_parser.yy"
-                      {
+  case 334:
+#line 1339 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 2372 "dhcp6_parser.cc"
+#line 2372 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 333: // subnet6_list: "subnet6" $@57 ":" "[" subnet6_list_content "]"
-#line 1337 "dhcp6_parser.yy"
-                                                             {
+  case 335:
+#line 1345 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2381 "dhcp6_parser.cc"
+#line 2381 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 338: // $@58: %empty
-#line 1357 "dhcp6_parser.yy"
-                        {
+  case 340:
+#line 1365 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2391 "dhcp6_parser.cc"
+#line 2391 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 339: // subnet6: "{" $@58 subnet6_params "}"
-#line 1361 "dhcp6_parser.yy"
-                                {
+  case 341:
+#line 1369 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
     // In particular we can do things like this:
@@ -2413,624 +2413,624 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2417 "dhcp6_parser.cc"
+#line 2417 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 340: // $@59: %empty
-#line 1383 "dhcp6_parser.yy"
-                            {
+  case 342:
+#line 1391 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2427 "dhcp6_parser.cc"
+#line 2427 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 341: // sub_subnet6: "{" $@59 subnet6_params "}"
-#line 1387 "dhcp6_parser.yy"
-                                {
+  case 343:
+#line 1395 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2437 "dhcp6_parser.cc"
+#line 2437 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 387: // $@60: %empty
-#line 1444 "dhcp6_parser.yy"
-               {
+  case 389:
+#line 1452 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2446 "dhcp6_parser.cc"
+#line 2446 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 388: // subnet: "subnet" $@60 ":" "constant string"
-#line 1447 "dhcp6_parser.yy"
-               {
+  case 390:
+#line 1455 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2456 "dhcp6_parser.cc"
+#line 2456 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 389: // $@61: %empty
-#line 1453 "dhcp6_parser.yy"
-                     {
+  case 391:
+#line 1461 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2465 "dhcp6_parser.cc"
+#line 2465 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 390: // interface: "interface" $@61 ":" "constant string"
-#line 1456 "dhcp6_parser.yy"
-               {
+  case 392:
+#line 1464 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2475 "dhcp6_parser.cc"
+#line 2475 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 391: // $@62: %empty
-#line 1462 "dhcp6_parser.yy"
-                           {
+  case 393:
+#line 1470 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2484 "dhcp6_parser.cc"
+#line 2484 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 392: // interface_id: "interface-id" $@62 ":" "constant string"
-#line 1465 "dhcp6_parser.yy"
-               {
+  case 394:
+#line 1473 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2494 "dhcp6_parser.cc"
+#line 2494 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 393: // $@63: %empty
-#line 1471 "dhcp6_parser.yy"
-                           {
+  case 395:
+#line 1479 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2503 "dhcp6_parser.cc"
+#line 2503 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 394: // client_class: "client-class" $@63 ":" "constant string"
-#line 1474 "dhcp6_parser.yy"
-               {
+  case 396:
+#line 1482 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2513 "dhcp6_parser.cc"
+#line 2513 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 395: // $@64: %empty
-#line 1480 "dhcp6_parser.yy"
-                                               {
+  case 397:
+#line 1488 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2525 "dhcp6_parser.cc"
+#line 2525 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 396: // require_client_classes: "require-client-classes" $@64 ":" list_strings
-#line 1486 "dhcp6_parser.yy"
-                     {
+  case 398:
+#line 1494 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2534 "dhcp6_parser.cc"
+#line 2534 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 397: // reservations_global: "reservations-global" ":" "boolean"
-#line 1491 "dhcp6_parser.yy"
-                                                       {
+  case 399:
+#line 1499 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2544 "dhcp6_parser.cc"
+#line 2544 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 398: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
-#line 1497 "dhcp6_parser.yy"
-                                                             {
+  case 400:
+#line 1505 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2554 "dhcp6_parser.cc"
+#line 2554 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 399: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
-#line 1503 "dhcp6_parser.yy"
-                                                                 {
+  case 401:
+#line 1511 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2564 "dhcp6_parser.cc"
+#line 2564 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 400: // $@65: %empty
-#line 1509 "dhcp6_parser.yy"
-                                   {
+  case 402:
+#line 1517 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2573 "dhcp6_parser.cc"
+#line 2573 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 401: // reservation_mode: "reservation-mode" $@65 ":" hr_mode
-#line 1512 "dhcp6_parser.yy"
-                {
+  case 403:
+#line 1520 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2582 "dhcp6_parser.cc"
+#line 2582 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 402: // hr_mode: "disabled"
-#line 1517 "dhcp6_parser.yy"
-                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2588 "dhcp6_parser.cc"
+  case 404:
+#line 1525 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2588 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 403: // hr_mode: "out-of-pool"
-#line 1518 "dhcp6_parser.yy"
-                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2594 "dhcp6_parser.cc"
+  case 405:
+#line 1526 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2594 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 404: // hr_mode: "global"
-#line 1519 "dhcp6_parser.yy"
-                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2600 "dhcp6_parser.cc"
+  case 406:
+#line 1527 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2600 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 405: // hr_mode: "all"
-#line 1520 "dhcp6_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2606 "dhcp6_parser.cc"
+  case 407:
+#line 1528 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2606 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 406: // id: "id" ":" "integer"
-#line 1523 "dhcp6_parser.yy"
-                     {
+  case 408:
+#line 1531 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2616 "dhcp6_parser.cc"
+#line 2616 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 407: // rapid_commit: "rapid-commit" ":" "boolean"
-#line 1529 "dhcp6_parser.yy"
-                                         {
+  case 409:
+#line 1537 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2626 "dhcp6_parser.cc"
+#line 2626 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 408: // $@66: %empty
-#line 1537 "dhcp6_parser.yy"
-                                 {
+  case 410:
+#line 1545 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2638 "dhcp6_parser.cc"
+#line 2638 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 409: // shared_networks: "shared-networks" $@66 ":" "[" shared_networks_content "]"
-#line 1543 "dhcp6_parser.yy"
-                                                                {
+  case 411:
+#line 1551 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2647 "dhcp6_parser.cc"
+#line 2647 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 414: // $@67: %empty
-#line 1558 "dhcp6_parser.yy"
-                               {
+  case 416:
+#line 1566 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2657 "dhcp6_parser.cc"
+#line 2657 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 415: // shared_network: "{" $@67 shared_network_params "}"
-#line 1562 "dhcp6_parser.yy"
-                                       {
+  case 417:
+#line 1570 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
 }
-#line 2665 "dhcp6_parser.cc"
+#line 2665 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 458: // $@68: %empty
-#line 1616 "dhcp6_parser.yy"
-                            {
+  case 460:
+#line 1624 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2677 "dhcp6_parser.cc"
+#line 2677 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 459: // option_def_list: "option-def" $@68 ":" "[" option_def_list_content "]"
-#line 1622 "dhcp6_parser.yy"
-                                                                {
+  case 461:
+#line 1630 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2686 "dhcp6_parser.cc"
+#line 2686 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 460: // $@69: %empty
-#line 1630 "dhcp6_parser.yy"
-                                    {
+  case 462:
+#line 1638 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2695 "dhcp6_parser.cc"
+#line 2695 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 461: // sub_option_def_list: "{" $@69 option_def_list "}"
-#line 1633 "dhcp6_parser.yy"
-                                 {
+  case 463:
+#line 1641 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // parsing completed
 }
-#line 2703 "dhcp6_parser.cc"
+#line 2703 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 466: // $@70: %empty
-#line 1649 "dhcp6_parser.yy"
-                                 {
+  case 468:
+#line 1657 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2713 "dhcp6_parser.cc"
+#line 2713 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 467: // option_def_entry: "{" $@70 option_def_params "}"
-#line 1653 "dhcp6_parser.yy"
-                                   {
+  case 469:
+#line 1661 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2725 "dhcp6_parser.cc"
+#line 2725 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 468: // $@71: %empty
-#line 1664 "dhcp6_parser.yy"
-                               {
+  case 470:
+#line 1672 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2735 "dhcp6_parser.cc"
+#line 2735 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 469: // sub_option_def: "{" $@71 option_def_params "}"
-#line 1668 "dhcp6_parser.yy"
-                                   {
+  case 471:
+#line 1676 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2747 "dhcp6_parser.cc"
+#line 2747 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 485: // code: "code" ":" "integer"
-#line 1700 "dhcp6_parser.yy"
-                         {
+  case 487:
+#line 1708 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2757 "dhcp6_parser.cc"
+#line 2757 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 487: // $@72: %empty
-#line 1708 "dhcp6_parser.yy"
-                      {
+  case 489:
+#line 1716 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2766 "dhcp6_parser.cc"
+#line 2766 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 488: // option_def_type: "type" $@72 ":" "constant string"
-#line 1711 "dhcp6_parser.yy"
-               {
+  case 490:
+#line 1719 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2776 "dhcp6_parser.cc"
+#line 2776 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 489: // $@73: %empty
-#line 1717 "dhcp6_parser.yy"
-                                      {
+  case 491:
+#line 1725 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2785 "dhcp6_parser.cc"
+#line 2785 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 490: // option_def_record_types: "record-types" $@73 ":" "constant string"
-#line 1720 "dhcp6_parser.yy"
-               {
+  case 492:
+#line 1728 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2795 "dhcp6_parser.cc"
+#line 2795 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 491: // $@74: %empty
-#line 1726 "dhcp6_parser.yy"
-             {
+  case 493:
+#line 1734 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2804 "dhcp6_parser.cc"
+#line 2804 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 492: // space: "space" $@74 ":" "constant string"
-#line 1729 "dhcp6_parser.yy"
-               {
+  case 494:
+#line 1737 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2814 "dhcp6_parser.cc"
+#line 2814 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 494: // $@75: %empty
-#line 1737 "dhcp6_parser.yy"
-                                    {
+  case 496:
+#line 1745 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2823 "dhcp6_parser.cc"
+#line 2823 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 495: // option_def_encapsulate: "encapsulate" $@75 ":" "constant string"
-#line 1740 "dhcp6_parser.yy"
-               {
+  case 497:
+#line 1748 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2833 "dhcp6_parser.cc"
+#line 2833 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 496: // option_def_array: "array" ":" "boolean"
-#line 1746 "dhcp6_parser.yy"
-                                      {
+  case 498:
+#line 1754 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2843 "dhcp6_parser.cc"
+#line 2843 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 497: // $@76: %empty
-#line 1756 "dhcp6_parser.yy"
-                              {
+  case 499:
+#line 1764 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2855 "dhcp6_parser.cc"
+#line 2855 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 498: // option_data_list: "option-data" $@76 ":" "[" option_data_list_content "]"
-#line 1762 "dhcp6_parser.yy"
-                                                                 {
+  case 500:
+#line 1770 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2864 "dhcp6_parser.cc"
+#line 2864 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 503: // $@77: %empty
-#line 1781 "dhcp6_parser.yy"
-                                  {
+  case 505:
+#line 1789 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2874 "dhcp6_parser.cc"
+#line 2874 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 504: // option_data_entry: "{" $@77 option_data_params "}"
-#line 1785 "dhcp6_parser.yy"
-                                    {
+  case 506:
+#line 1793 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2883 "dhcp6_parser.cc"
+#line 2883 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 505: // $@78: %empty
-#line 1793 "dhcp6_parser.yy"
-                                {
+  case 507:
+#line 1801 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2893 "dhcp6_parser.cc"
+#line 2893 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 506: // sub_option_data: "{" $@78 option_data_params "}"
-#line 1797 "dhcp6_parser.yy"
-                                    {
+  case 508:
+#line 1805 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2902 "dhcp6_parser.cc"
+#line 2902 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 521: // $@79: %empty
-#line 1830 "dhcp6_parser.yy"
-                       {
+  case 523:
+#line 1838 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2911 "dhcp6_parser.cc"
+#line 2911 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 522: // option_data_data: "data" $@79 ":" "constant string"
-#line 1833 "dhcp6_parser.yy"
-               {
+  case 524:
+#line 1841 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2921 "dhcp6_parser.cc"
+#line 2921 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 525: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 1843 "dhcp6_parser.yy"
-                                                 {
+  case 527:
+#line 1851 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2931 "dhcp6_parser.cc"
+#line 2931 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 526: // option_data_always_send: "always-send" ":" "boolean"
-#line 1849 "dhcp6_parser.yy"
-                                                   {
+  case 528:
+#line 1857 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 2941 "dhcp6_parser.cc"
+#line 2941 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 527: // $@80: %empty
-#line 1858 "dhcp6_parser.yy"
-                  {
+  case 529:
+#line 1866 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2953 "dhcp6_parser.cc"
+#line 2953 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 528: // pools_list: "pools" $@80 ":" "[" pools_list_content "]"
-#line 1864 "dhcp6_parser.yy"
-                                                           {
+  case 530:
+#line 1872 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2962 "dhcp6_parser.cc"
+#line 2962 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 533: // $@81: %empty
-#line 1879 "dhcp6_parser.yy"
-                                {
+  case 535:
+#line 1887 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2972 "dhcp6_parser.cc"
+#line 2972 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 534: // pool_list_entry: "{" $@81 pool_params "}"
-#line 1883 "dhcp6_parser.yy"
-                             {
+  case 536:
+#line 1891 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2982 "dhcp6_parser.cc"
+#line 2982 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 535: // $@82: %empty
-#line 1889 "dhcp6_parser.yy"
-                          {
+  case 537:
+#line 1897 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2992 "dhcp6_parser.cc"
+#line 2992 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 536: // sub_pool6: "{" $@82 pool_params "}"
-#line 1893 "dhcp6_parser.yy"
-                             {
+  case 538:
+#line 1901 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3002 "dhcp6_parser.cc"
+#line 3002 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 546: // $@83: %empty
-#line 1912 "dhcp6_parser.yy"
-                 {
+  case 548:
+#line 1920 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3011 "dhcp6_parser.cc"
+#line 3011 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 547: // pool_entry: "pool" $@83 ":" "constant string"
-#line 1915 "dhcp6_parser.yy"
-               {
+  case 549:
+#line 1923 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 3021 "dhcp6_parser.cc"
+#line 3021 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 548: // $@84: %empty
-#line 1921 "dhcp6_parser.yy"
-                           {
+  case 550:
+#line 1929 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3029 "dhcp6_parser.cc"
+#line 3029 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 549: // user_context: "user-context" $@84 ":" map_value
-#line 1923 "dhcp6_parser.yy"
-                  {
+  case 551:
+#line 1931 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
     ConstElementPtr old = parent->get("user-context");
@@ -3052,20 +3052,20 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 3056 "dhcp6_parser.cc"
+#line 3056 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 550: // $@85: %empty
-#line 1946 "dhcp6_parser.yy"
-                 {
+  case 552:
+#line 1954 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3064 "dhcp6_parser.cc"
+#line 3064 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 551: // comment: "comment" $@85 ":" "constant string"
-#line 1948 "dhcp6_parser.yy"
-               {
+  case 553:
+#line 1956 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
     ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3089,1272 +3089,1271 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 3093 "dhcp6_parser.cc"
+#line 3093 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 552: // $@86: %empty
-#line 1976 "dhcp6_parser.yy"
-                        {
+  case 554:
+#line 1984 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 3105 "dhcp6_parser.cc"
+#line 3105 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 553: // pd_pools_list: "pd-pools" $@86 ":" "[" pd_pools_list_content "]"
-#line 1982 "dhcp6_parser.yy"
-                                                              {
+  case 555:
+#line 1990 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3114 "dhcp6_parser.cc"
+#line 3114 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 558: // $@87: %empty
-#line 1997 "dhcp6_parser.yy"
-                              {
+  case 560:
+#line 2005 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3124 "dhcp6_parser.cc"
+#line 3124 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 559: // pd_pool_entry: "{" $@87 pd_pool_params "}"
-#line 2001 "dhcp6_parser.yy"
-                                {
+  case 561:
+#line 2009 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 3136 "dhcp6_parser.cc"
+#line 3136 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 560: // $@88: %empty
-#line 2009 "dhcp6_parser.yy"
-                            {
+  case 562:
+#line 2017 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3146 "dhcp6_parser.cc"
+#line 3146 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 561: // sub_pd_pool: "{" $@88 pd_pool_params "}"
-#line 2013 "dhcp6_parser.yy"
-                                {
+  case 563:
+#line 2021 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3158 "dhcp6_parser.cc"
+#line 3158 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 575: // $@89: %empty
-#line 2038 "dhcp6_parser.yy"
-                  {
+  case 577:
+#line 2046 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3167 "dhcp6_parser.cc"
+#line 3167 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 576: // pd_prefix: "prefix" $@89 ":" "constant string"
-#line 2041 "dhcp6_parser.yy"
-               {
+  case 578:
+#line 2049 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 3177 "dhcp6_parser.cc"
+#line 3177 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 577: // pd_prefix_len: "prefix-len" ":" "integer"
-#line 2047 "dhcp6_parser.yy"
-                                        {
+  case 579:
+#line 2055 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3187 "dhcp6_parser.cc"
+#line 3187 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 578: // $@90: %empty
-#line 2053 "dhcp6_parser.yy"
-                                 {
+  case 580:
+#line 2061 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3196 "dhcp6_parser.cc"
+#line 3196 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 579: // excluded_prefix: "excluded-prefix" $@90 ":" "constant string"
-#line 2056 "dhcp6_parser.yy"
-               {
+  case 581:
+#line 2064 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3206 "dhcp6_parser.cc"
+#line 3206 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 580: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
-#line 2062 "dhcp6_parser.yy"
-                                                       {
+  case 582:
+#line 2070 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3216 "dhcp6_parser.cc"
+#line 3216 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 581: // pd_delegated_len: "delegated-len" ":" "integer"
-#line 2068 "dhcp6_parser.yy"
-                                              {
+  case 583:
+#line 2076 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3226 "dhcp6_parser.cc"
+#line 3226 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 582: // $@91: %empty
-#line 2077 "dhcp6_parser.yy"
-                           {
+  case 584:
+#line 2085 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 3238 "dhcp6_parser.cc"
+#line 3238 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 583: // reservations: "reservations" $@91 ":" "[" reservations_list "]"
-#line 2083 "dhcp6_parser.yy"
-                                                          {
+  case 585:
+#line 2091 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3247 "dhcp6_parser.cc"
+#line 3247 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 588: // $@92: %empty
-#line 2096 "dhcp6_parser.yy"
-                            {
+  case 590:
+#line 2104 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3257 "dhcp6_parser.cc"
+#line 3257 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 589: // reservation: "{" $@92 reservation_params "}"
-#line 2100 "dhcp6_parser.yy"
-                                    {
+  case 591:
+#line 2108 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 3266 "dhcp6_parser.cc"
+#line 3266 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 590: // $@93: %empty
-#line 2105 "dhcp6_parser.yy"
-                                {
+  case 592:
+#line 2113 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3276 "dhcp6_parser.cc"
+#line 3276 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 591: // sub_reservation: "{" $@93 reservation_params "}"
-#line 2109 "dhcp6_parser.yy"
-                                    {
+  case 593:
+#line 2117 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3285 "dhcp6_parser.cc"
+#line 3285 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 607: // $@94: %empty
-#line 2136 "dhcp6_parser.yy"
-                           {
+  case 609:
+#line 2144 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3297 "dhcp6_parser.cc"
+#line 3297 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 608: // ip_addresses: "ip-addresses" $@94 ":" list_strings
-#line 2142 "dhcp6_parser.yy"
-                     {
+  case 610:
+#line 2150 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3306 "dhcp6_parser.cc"
+#line 3306 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 609: // $@95: %empty
-#line 2147 "dhcp6_parser.yy"
-                   {
+  case 611:
+#line 2155 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3318 "dhcp6_parser.cc"
+#line 3318 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 610: // prefixes: "prefixes" $@95 ":" list_strings
-#line 2153 "dhcp6_parser.yy"
-                     {
+  case 612:
+#line 2161 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3327 "dhcp6_parser.cc"
+#line 3327 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 611: // $@96: %empty
-#line 2158 "dhcp6_parser.yy"
-           {
+  case 613:
+#line 2166 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3336 "dhcp6_parser.cc"
+#line 3336 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 612: // duid: "duid" $@96 ":" "constant string"
-#line 2161 "dhcp6_parser.yy"
-               {
+  case 614:
+#line 2169 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3346 "dhcp6_parser.cc"
+#line 3346 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 613: // $@97: %empty
-#line 2167 "dhcp6_parser.yy"
-                       {
+  case 615:
+#line 2175 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3355 "dhcp6_parser.cc"
+#line 3355 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 614: // hw_address: "hw-address" $@97 ":" "constant string"
-#line 2170 "dhcp6_parser.yy"
-               {
+  case 616:
+#line 2178 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3365 "dhcp6_parser.cc"
+#line 3365 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 615: // $@98: %empty
-#line 2176 "dhcp6_parser.yy"
-                   {
+  case 617:
+#line 2184 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3374 "dhcp6_parser.cc"
+#line 3374 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 616: // hostname: "hostname" $@98 ":" "constant string"
-#line 2179 "dhcp6_parser.yy"
-               {
+  case 618:
+#line 2187 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3384 "dhcp6_parser.cc"
+#line 3384 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 617: // $@99: %empty
-#line 2185 "dhcp6_parser.yy"
-                       {
+  case 619:
+#line 2193 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3393 "dhcp6_parser.cc"
+#line 3393 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 618: // flex_id_value: "flex-id" $@99 ":" "constant string"
-#line 2188 "dhcp6_parser.yy"
-               {
+  case 620:
+#line 2196 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3403 "dhcp6_parser.cc"
+#line 3403 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 619: // $@100: %empty
-#line 2194 "dhcp6_parser.yy"
-                                           {
+  case 621:
+#line 2202 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3415 "dhcp6_parser.cc"
+#line 3415 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 620: // reservation_client_classes: "client-classes" $@100 ":" list_strings
-#line 2200 "dhcp6_parser.yy"
-                     {
+  case 622:
+#line 2208 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3424 "dhcp6_parser.cc"
+#line 3424 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 621: // $@101: %empty
-#line 2208 "dhcp6_parser.yy"
-             {
+  case 623:
+#line 2216 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 3436 "dhcp6_parser.cc"
+#line 3436 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 622: // relay: "relay" $@101 ":" "{" relay_map "}"
-#line 2214 "dhcp6_parser.yy"
-                                                {
+  case 624:
+#line 2222 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3445 "dhcp6_parser.cc"
+#line 3445 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 625: // $@102: %empty
-#line 2223 "dhcp6_parser.yy"
-                       {
+  case 627:
+#line 2231 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3454 "dhcp6_parser.cc"
+#line 3454 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 626: // ip_address: "ip-address" $@102 ":" "constant string"
-#line 2226 "dhcp6_parser.yy"
-               {
+  case 628:
+#line 2234 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3464 "dhcp6_parser.cc"
+#line 3464 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 627: // $@103: %empty
-#line 2235 "dhcp6_parser.yy"
-                               {
+  case 629:
+#line 2243 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 3476 "dhcp6_parser.cc"
+#line 3476 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 628: // client_classes: "client-classes" $@103 ":" "[" client_classes_list "]"
-#line 2241 "dhcp6_parser.yy"
-                                                            {
+  case 630:
+#line 2249 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3485 "dhcp6_parser.cc"
+#line 3485 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 631: // $@104: %empty
-#line 2250 "dhcp6_parser.yy"
-                                   {
+  case 633:
+#line 2258 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3495 "dhcp6_parser.cc"
+#line 3495 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 632: // client_class_entry: "{" $@104 client_class_params "}"
-#line 2254 "dhcp6_parser.yy"
-                                     {
+  case 634:
+#line 2262 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 3505 "dhcp6_parser.cc"
+#line 3505 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 651: // $@105: %empty
-#line 2285 "dhcp6_parser.yy"
-                        {
+  case 653:
+#line 2293 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3514 "dhcp6_parser.cc"
+#line 3514 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 652: // client_class_test: "test" $@105 ":" "constant string"
-#line 2288 "dhcp6_parser.yy"
-               {
+  case 654:
+#line 2296 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3524 "dhcp6_parser.cc"
+#line 3524 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 653: // only_if_required: "only-if-required" ":" "boolean"
-#line 2294 "dhcp6_parser.yy"
-                                                 {
+  case 655:
+#line 2302 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3534 "dhcp6_parser.cc"
+#line 3534 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 654: // $@106: %empty
-#line 2303 "dhcp6_parser.yy"
-                     {
+  case 656:
+#line 2311 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 3546 "dhcp6_parser.cc"
+#line 3546 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 655: // server_id: "server-id" $@106 ":" "{" server_id_params "}"
-#line 2309 "dhcp6_parser.yy"
-                                                       {
+  case 657:
+#line 2317 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 3557 "dhcp6_parser.cc"
+#line 3557 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 667: // $@107: %empty
-#line 2331 "dhcp6_parser.yy"
-                     {
+  case 669:
+#line 2339 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3566 "dhcp6_parser.cc"
+#line 3566 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 668: // server_id_type: "type" $@107 ":" duid_type
-#line 2334 "dhcp6_parser.yy"
-                  {
+  case 670:
+#line 2342 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3575 "dhcp6_parser.cc"
+#line 3575 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 669: // duid_type: "LLT"
-#line 2339 "dhcp6_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3581 "dhcp6_parser.cc"
+  case 671:
+#line 2347 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 3581 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 670: // duid_type: "EN"
-#line 2340 "dhcp6_parser.yy"
-              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3587 "dhcp6_parser.cc"
+  case 672:
+#line 2348 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 3587 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 671: // duid_type: "LL"
-#line 2341 "dhcp6_parser.yy"
-              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3593 "dhcp6_parser.cc"
+  case 673:
+#line 2349 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 3593 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 672: // htype: "htype" ":" "integer"
-#line 2344 "dhcp6_parser.yy"
-                           {
+  case 674:
+#line 2352 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3603 "dhcp6_parser.cc"
+#line 3603 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 673: // $@108: %empty
-#line 2350 "dhcp6_parser.yy"
-                       {
+  case 675:
+#line 2358 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3612 "dhcp6_parser.cc"
+#line 3612 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 674: // identifier: "identifier" $@108 ":" "constant string"
-#line 2353 "dhcp6_parser.yy"
-               {
+  case 676:
+#line 2361 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3622 "dhcp6_parser.cc"
+#line 3622 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 675: // time: "time" ":" "integer"
-#line 2359 "dhcp6_parser.yy"
-                         {
+  case 677:
+#line 2367 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3632 "dhcp6_parser.cc"
+#line 3632 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 676: // enterprise_id: "enterprise-id" ":" "integer"
-#line 2365 "dhcp6_parser.yy"
-                                           {
+  case 678:
+#line 2373 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3642 "dhcp6_parser.cc"
+#line 3642 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 677: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2373 "dhcp6_parser.yy"
-                                         {
+  case 679:
+#line 2381 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3652 "dhcp6_parser.cc"
+#line 3652 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 678: // $@109: %empty
-#line 2381 "dhcp6_parser.yy"
-                               {
+  case 680:
+#line 2389 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3664 "dhcp6_parser.cc"
+#line 3664 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 679: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}"
-#line 2387 "dhcp6_parser.yy"
-                                                            {
+  case 681:
+#line 2395 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3673 "dhcp6_parser.cc"
+#line 3673 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 687: // $@110: %empty
-#line 2403 "dhcp6_parser.yy"
-                         {
+  case 689:
+#line 2411 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3682 "dhcp6_parser.cc"
+#line 3682 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 688: // socket_type: "socket-type" $@110 ":" "constant string"
-#line 2406 "dhcp6_parser.yy"
-               {
+  case 690:
+#line 2414 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3692 "dhcp6_parser.cc"
+#line 3692 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 689: // $@111: %empty
-#line 2412 "dhcp6_parser.yy"
-                         {
+  case 691:
+#line 2420 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3701 "dhcp6_parser.cc"
+#line 3701 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 690: // socket_name: "socket-name" $@111 ":" "constant string"
-#line 2415 "dhcp6_parser.yy"
-               {
+  case 692:
+#line 2423 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3711 "dhcp6_parser.cc"
+#line 3711 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 691: // $@112: %empty
-#line 2424 "dhcp6_parser.yy"
-                                       {
+  case 693:
+#line 2432 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3723 "dhcp6_parser.cc"
+#line 3723 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 692: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}"
-#line 2430 "dhcp6_parser.yy"
-                                                           {
+  case 694:
+#line 2438 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 3734 "dhcp6_parser.cc"
+#line 3734 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 701: // enable_queue: "enable-queue" ":" "boolean"
-#line 2449 "dhcp6_parser.yy"
-                                         {
+  case 703:
+#line 2457 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3744 "dhcp6_parser.cc"
+#line 3744 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 702: // $@113: %empty
-#line 2455 "dhcp6_parser.yy"
-                       {
+  case 704:
+#line 2463 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3753 "dhcp6_parser.cc"
+#line 3753 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 703: // queue_type: "queue-type" $@113 ":" "constant string"
-#line 2458 "dhcp6_parser.yy"
-               {
+  case 705:
+#line 2466 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3763 "dhcp6_parser.cc"
+#line 3763 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 704: // capacity: "capacity" ":" "integer"
-#line 2464 "dhcp6_parser.yy"
-                                 {
+  case 706:
+#line 2472 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3773 "dhcp6_parser.cc"
+#line 3773 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 705: // $@114: %empty
-#line 2470 "dhcp6_parser.yy"
-                            {
+  case 707:
+#line 2478 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3782 "dhcp6_parser.cc"
+#line 3782 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 706: // arbitrary_map_entry: "constant string" $@114 ":" value
-#line 2473 "dhcp6_parser.yy"
-              {
+  case 708:
+#line 2481 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3791 "dhcp6_parser.cc"
+#line 3791 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 707: // $@115: %empty
-#line 2480 "dhcp6_parser.yy"
-                     {
+  case 709:
+#line 2488 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3803 "dhcp6_parser.cc"
+#line 3803 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 708: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}"
-#line 2486 "dhcp6_parser.yy"
-                                                       {
+  case 710:
+#line 2494 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 3814 "dhcp6_parser.cc"
+#line 3814 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 709: // $@116: %empty
-#line 2493 "dhcp6_parser.yy"
-                              {
+  case 711:
+#line 2501 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3824 "dhcp6_parser.cc"
+#line 3824 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 710: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}"
-#line 2497 "dhcp6_parser.yy"
-                                  {
+  case 712:
+#line 2505 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // 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 3834 "dhcp6_parser.cc"
+#line 3834 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 731: // enable_updates: "enable-updates" ":" "boolean"
-#line 2527 "dhcp6_parser.yy"
-                                             {
+  case 733:
+#line 2535 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3844 "dhcp6_parser.cc"
+#line 3844 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 732: // $@117: %empty
-#line 2534 "dhcp6_parser.yy"
-                                         {
+  case 734:
+#line 2542 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3853 "dhcp6_parser.cc"
+#line 3853 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 733: // dep_qualifying_suffix: "qualifying-suffix" $@117 ":" "constant string"
-#line 2537 "dhcp6_parser.yy"
-               {
+  case 735:
+#line 2545 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3863 "dhcp6_parser.cc"
+#line 3863 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 734: // $@118: %empty
-#line 2543 "dhcp6_parser.yy"
-                     {
+  case 736:
+#line 2551 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3872 "dhcp6_parser.cc"
+#line 3872 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 735: // server_ip: "server-ip" $@118 ":" "constant string"
-#line 2546 "dhcp6_parser.yy"
-               {
+  case 737:
+#line 2554 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3882 "dhcp6_parser.cc"
+#line 3882 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 736: // server_port: "server-port" ":" "integer"
-#line 2552 "dhcp6_parser.yy"
-                                       {
+  case 738:
+#line 2560 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3892 "dhcp6_parser.cc"
+#line 3892 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 737: // $@119: %empty
-#line 2558 "dhcp6_parser.yy"
-                     {
+  case 739:
+#line 2566 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3901 "dhcp6_parser.cc"
+#line 3901 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 738: // sender_ip: "sender-ip" $@119 ":" "constant string"
-#line 2561 "dhcp6_parser.yy"
-               {
+  case 740:
+#line 2569 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3911 "dhcp6_parser.cc"
+#line 3911 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 739: // sender_port: "sender-port" ":" "integer"
-#line 2567 "dhcp6_parser.yy"
-                                       {
+  case 741:
+#line 2575 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3921 "dhcp6_parser.cc"
+#line 3921 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 740: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2573 "dhcp6_parser.yy"
-                                             {
+  case 742:
+#line 2581 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3931 "dhcp6_parser.cc"
+#line 3931 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 741: // $@120: %empty
-#line 2579 "dhcp6_parser.yy"
-                           {
+  case 743:
+#line 2587 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3940 "dhcp6_parser.cc"
+#line 3940 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 742: // ncr_protocol: "ncr-protocol" $@120 ":" ncr_protocol_value
-#line 2582 "dhcp6_parser.yy"
-                           {
+  case 744:
+#line 2590 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3949 "dhcp6_parser.cc"
+#line 3949 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 743: // ncr_protocol_value: "UDP"
-#line 2588 "dhcp6_parser.yy"
-        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3955 "dhcp6_parser.cc"
+  case 745:
+#line 2596 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3955 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 744: // ncr_protocol_value: "TCP"
-#line 2589 "dhcp6_parser.yy"
-        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3961 "dhcp6_parser.cc"
+  case 746:
+#line 2597 "dhcp6_parser.yy" // lalr1.cc:919
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3961 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 745: // $@121: %empty
-#line 2592 "dhcp6_parser.yy"
-                       {
+  case 747:
+#line 2600 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3970 "dhcp6_parser.cc"
+#line 3970 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 746: // ncr_format: "ncr-format" $@121 ":" "JSON"
-#line 2595 "dhcp6_parser.yy"
-             {
+  case 748:
+#line 2603 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3980 "dhcp6_parser.cc"
+#line 3980 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 747: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2602 "dhcp6_parser.yy"
-                                                         {
+  case 749:
+#line 2610 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 3990 "dhcp6_parser.cc"
+#line 3990 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 748: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2609 "dhcp6_parser.yy"
-                                                                 {
+  case 750:
+#line 2617 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4000 "dhcp6_parser.cc"
+#line 4000 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 749: // $@122: %empty
-#line 2616 "dhcp6_parser.yy"
-                                             {
+  case 751:
+#line 2624 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 4009 "dhcp6_parser.cc"
+#line 4009 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 750: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value
-#line 2619 "dhcp6_parser.yy"
-                                       {
+  case 752:
+#line 2627 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4018 "dhcp6_parser.cc"
+#line 4018 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 751: // $@123: %empty
-#line 2625 "dhcp6_parser.yy"
-                                       {
+  case 753:
+#line 2633 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4027 "dhcp6_parser.cc"
+#line 4027 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 752: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string"
-#line 2628 "dhcp6_parser.yy"
-               {
+  case 754:
+#line 2636 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4037 "dhcp6_parser.cc"
+#line 4037 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 753: // $@124: %empty
-#line 2635 "dhcp6_parser.yy"
-                                         {
+  case 755:
+#line 2643 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4046 "dhcp6_parser.cc"
+#line 4046 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 754: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string"
-#line 2638 "dhcp6_parser.yy"
-               {
+  case 756:
+#line 2646 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4056 "dhcp6_parser.cc"
+#line 4056 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 755: // $@125: %empty
-#line 2645 "dhcp6_parser.yy"
-                                                         {
+  case 757:
+#line 2653 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4065 "dhcp6_parser.cc"
+#line 4065 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 756: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string"
-#line 2648 "dhcp6_parser.yy"
-               {
+  case 758:
+#line 2656 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4075 "dhcp6_parser.cc"
+#line 4075 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 757: // $@126: %empty
-#line 2657 "dhcp6_parser.yy"
-                               {
+  case 759:
+#line 2665 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 4087 "dhcp6_parser.cc"
+#line 4087 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 758: // config_control: "config-control" $@126 ":" "{" config_control_params "}"
-#line 2663 "dhcp6_parser.yy"
-                                                            {
+  case 760:
+#line 2671 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4097 "dhcp6_parser.cc"
+#line 4097 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 759: // $@127: %empty
-#line 2669 "dhcp6_parser.yy"
-                                   {
+  case 761:
+#line 2677 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 4107 "dhcp6_parser.cc"
+#line 4107 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 760: // sub_config_control: "{" $@127 config_control_params "}"
-#line 2673 "dhcp6_parser.yy"
-                                       {
+  case 762:
+#line 2681 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     // No config_control params are required
     // parsing completed
 }
-#line 4116 "dhcp6_parser.cc"
+#line 4116 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 765: // $@128: %empty
-#line 2688 "dhcp6_parser.yy"
-                                   {
+  case 767:
+#line 2696 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 4128 "dhcp6_parser.cc"
+#line 4128 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 766: // config_databases: "config-databases" $@128 ":" "[" database_list "]"
-#line 2694 "dhcp6_parser.yy"
-                                                      {
+  case 768:
+#line 2702 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4137 "dhcp6_parser.cc"
+#line 4137 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 767: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2699 "dhcp6_parser.yy"
-                                                             {
+  case 769:
+#line 2707 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4147 "dhcp6_parser.cc"
+#line 4147 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 768: // $@129: %empty
-#line 2707 "dhcp6_parser.yy"
-                 {
+  case 770:
+#line 2715 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 4159 "dhcp6_parser.cc"
+#line 4159 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 769: // loggers: "loggers" $@129 ":" "[" loggers_entries "]"
-#line 2713 "dhcp6_parser.yy"
-                                                         {
+  case 771:
+#line 2721 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4168 "dhcp6_parser.cc"
+#line 4168 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 772: // $@130: %empty
-#line 2725 "dhcp6_parser.yy"
-                             {
+  case 774:
+#line 2733 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 4178 "dhcp6_parser.cc"
+#line 4178 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 773: // logger_entry: "{" $@130 logger_params "}"
-#line 2729 "dhcp6_parser.yy"
-                               {
+  case 775:
+#line 2737 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
 }
-#line 4186 "dhcp6_parser.cc"
+#line 4186 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 783: // debuglevel: "debuglevel" ":" "integer"
-#line 2746 "dhcp6_parser.yy"
-                                     {
+  case 785:
+#line 2754 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4196 "dhcp6_parser.cc"
+#line 4196 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 784: // $@131: %empty
-#line 2752 "dhcp6_parser.yy"
-                   {
+  case 786:
+#line 2760 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4205 "dhcp6_parser.cc"
+#line 4205 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 785: // severity: "severity" $@131 ":" "constant string"
-#line 2755 "dhcp6_parser.yy"
-               {
+  case 787:
+#line 2763 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 4215 "dhcp6_parser.cc"
+#line 4215 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 786: // $@132: %empty
-#line 2761 "dhcp6_parser.yy"
-                                    {
+  case 788:
+#line 2769 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 4227 "dhcp6_parser.cc"
+#line 4227 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 787: // output_options_list: "output_options" $@132 ":" "[" output_options_list_content "]"
-#line 2767 "dhcp6_parser.yy"
-                                                                    {
+  case 789:
+#line 2775 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4236 "dhcp6_parser.cc"
+#line 4236 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 790: // $@133: %empty
-#line 2776 "dhcp6_parser.yy"
-                             {
+  case 792:
+#line 2784 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4246 "dhcp6_parser.cc"
+#line 4246 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 791: // output_entry: "{" $@133 output_params_list "}"
-#line 2780 "dhcp6_parser.yy"
-                                    {
+  case 793:
+#line 2788 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
 }
-#line 4254 "dhcp6_parser.cc"
+#line 4254 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 799: // $@134: %empty
-#line 2795 "dhcp6_parser.yy"
-               {
+  case 801:
+#line 2803 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4263 "dhcp6_parser.cc"
+#line 4263 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 800: // output: "output" $@134 ":" "constant string"
-#line 2798 "dhcp6_parser.yy"
-               {
+  case 802:
+#line 2806 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 4273 "dhcp6_parser.cc"
+#line 4273 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 801: // flush: "flush" ":" "boolean"
-#line 2804 "dhcp6_parser.yy"
-                           {
+  case 803:
+#line 2812 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4283 "dhcp6_parser.cc"
+#line 4283 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 802: // maxsize: "maxsize" ":" "integer"
-#line 2810 "dhcp6_parser.yy"
-                               {
+  case 804:
+#line 2818 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4293 "dhcp6_parser.cc"
+#line 4293 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 803: // maxver: "maxver" ":" "integer"
-#line 2816 "dhcp6_parser.yy"
-                             {
+  case 805:
+#line 2824 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4303 "dhcp6_parser.cc"
+#line 4303 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 804: // $@135: %empty
-#line 2822 "dhcp6_parser.yy"
-                 {
+  case 806:
+#line 2830 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4312 "dhcp6_parser.cc"
+#line 4312 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 805: // pattern: "pattern" $@135 ":" "constant string"
-#line 2825 "dhcp6_parser.yy"
-               {
+  case 807:
+#line 2833 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4322 "dhcp6_parser.cc"
+#line 4322 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 806: // $@136: %empty
-#line 2831 "dhcp6_parser.yy"
-                             {
+  case 808:
+#line 2839 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("compatibility", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.COMPATIBILITY);
 }
-#line 4334 "dhcp6_parser.cc"
+#line 4334 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 807: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}"
-#line 2837 "dhcp6_parser.yy"
-                                                           {
+  case 809:
+#line 2845 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4343 "dhcp6_parser.cc"
+#line 4343 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
-  case 812: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 2850 "dhcp6_parser.yy"
-                                                             {
+  case 814:
+#line 2858 "dhcp6_parser.yy" // lalr1.cc:919
+    {
     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 4353 "dhcp6_parser.cc"
+#line 4353 "dhcp6_parser.cc" // lalr1.cc:919
     break;
 
 
-#line 4357 "dhcp6_parser.cc"
-
+#line 4357 "dhcp6_parser.cc" // lalr1.cc:919
             default:
               break;
             }
@@ -4370,6 +4369,7 @@ namespace isc { namespace dhcp {
       YY_SYMBOL_PRINT ("-> $$ =", yylhs);
       yypop_ (yylen);
       yylen = 0;
+      YY_STACK_PRINT ();
 
       // Shift the result of the reduction.
       yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
@@ -4385,9 +4385,7 @@ namespace isc { namespace dhcp {
     if (!yyerrstatus_)
       {
         ++yynerrs_;
-        context yyctx (*this, yyla);
-        std::string msg = yysyntax_error_ (yyctx);
-        error (yyla.location, YY_MOVE (msg));
+        error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
       }
 
 
@@ -4398,7 +4396,7 @@ namespace isc { namespace dhcp {
            error, discard it.  */
 
         // Return failure if at end of input.
-        if (yyla.kind () == symbol_kind::S_YYEOF)
+        if (yyla.type_get () == yyeof_)
           YYABORT;
         else if (!yyla.empty ())
           {
@@ -4424,7 +4422,6 @@ namespace isc { namespace dhcp {
        this YYERROR.  */
     yypop_ (yylen);
     yylen = 0;
-    YY_STACK_PRINT ();
     goto yyerrlab1;
 
 
@@ -4433,39 +4430,37 @@ namespace isc { namespace dhcp {
   `-------------------------------------------------------------*/
   yyerrlab1:
     yyerrstatus_ = 3;   // Each real token shifted decrements this.
-    // Pop stack until we find a state that shifts the error token.
-    for (;;)
-      {
-        yyn = yypact_[+yystack_[0].state];
-        if (!yy_pact_value_is_default_ (yyn))
-          {
-            yyn += symbol_kind::S_YYerror;
-            if (0 <= yyn && yyn <= yylast_
-                && yycheck_[yyn] == symbol_kind::S_YYerror)
-              {
-                yyn = yytable_[yyn];
-                if (0 < yyn)
-                  break;
-              }
-          }
-
-        // Pop the current state because it cannot handle the error token.
-        if (yystack_.size () == 1)
-          YYABORT;
-
-        yyerror_range[1].location = yystack_[0].location;
-        yy_destroy_ ("Error: popping", yystack_[0]);
-        yypop_ ();
-        YY_STACK_PRINT ();
-      }
     {
       stack_symbol_type error_token;
+      for (;;)
+        {
+          yyn = yypact_[yystack_[0].state];
+          if (!yy_pact_value_is_default_ (yyn))
+            {
+              yyn += yyterror_;
+              if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
+                {
+                  yyn = yytable_[yyn];
+                  if (0 < yyn)
+                    break;
+                }
+            }
+
+          // Pop the current state because it cannot handle the error token.
+          if (yystack_.size () == 1)
+            YYABORT;
+
+          yyerror_range[1].location = yystack_[0].location;
+          yy_destroy_ ("Error: popping", yystack_[0]);
+          yypop_ ();
+          YY_STACK_PRINT ();
+        }
 
       yyerror_range[2].location = yyla.location;
       YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
 
       // Shift the error token.
-      error_token.state = state_type (yyn);
+      error_token.state = yyn;
       yypush_ ("Shifting", YY_MOVE (error_token));
     }
     goto yynewstate;
@@ -4497,7 +4492,6 @@ namespace isc { namespace dhcp {
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYABORT or YYACCEPT.  */
     yypop_ (yylen);
-    YY_STACK_PRINT ();
     while (1 < yystack_.size ())
       {
         yy_destroy_ ("Cleanup: popping", yystack_[0]);
@@ -4531,100 +4525,18 @@ namespace isc { namespace dhcp {
     error (yyexc.location, yyexc.what ());
   }
 
-  /* Return YYSTR after stripping away unnecessary quotes and
-     backslashes, so that it's suitable for yyerror.  The heuristic is
-     that double-quoting is unnecessary unless the string contains an
-     apostrophe, a comma, or backslash (other than backslash-backslash).
-     YYSTR is taken from yytname.  */
-  std::string
-  Dhcp6Parser::yytnamerr_ (const char *yystr)
-  {
-    if (*yystr == '"')
-      {
-        std::string yyr;
-        char const *yyp = yystr;
-
-        for (;;)
-          switch (*++yyp)
-            {
-            case '\'':
-            case ',':
-              goto do_not_strip_quotes;
-
-            case '\\':
-              if (*++yyp != '\\')
-                goto do_not_strip_quotes;
-              else
-                goto append;
-
-            append:
-            default:
-              yyr += *yyp;
-              break;
-
-            case '"':
-              return yyr;
-            }
-      do_not_strip_quotes: ;
-      }
-
-    return yystr;
-  }
-
+  // Generate an error message.
   std::string
-  Dhcp6Parser::symbol_name (symbol_kind_type yysymbol)
+  Dhcp6Parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
   {
-    return yytnamerr_ (yytname_[yysymbol]);
-  }
-
-
-
-  // Dhcp6Parser::context.
-  Dhcp6Parser::context::context (const Dhcp6Parser& yyparser, const symbol_type& yyla)
-    : yyparser_ (yyparser)
-    , yyla_ (yyla)
-  {}
-
-  int
-  Dhcp6Parser::context::expected_tokens (symbol_kind_type yyarg[], int yyargn) const
-  {
-    // Actual number of expected tokens
-    int yycount = 0;
-
-    int yyn = yypact_[+yyparser_.yystack_[0].state];
-    if (!yy_pact_value_is_default_ (yyn))
-      {
-        /* Start YYX at -YYN if negative to avoid negative indexes in
-           YYCHECK.  In other words, skip the first -YYN actions for
-           this state because they are default actions.  */
-        int yyxbegin = yyn < 0 ? -yyn : 0;
-        // Stay within bounds of both yycheck and yytname.
-        int yychecklim = yylast_ - yyn + 1;
-        int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-        for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
-          if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror
-              && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
-            {
-              if (!yyarg)
-                ++yycount;
-              else if (yycount == yyargn)
-                return 0;
-              else
-                yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx);
-            }
-      }
-
-    if (yyarg && yycount == 0 && 0 < yyargn)
-      yyarg[0] = symbol_kind::S_YYEMPTY;
-    return yycount;
-  }
-
-
+    // Number of reported tokens (one for the "unexpected", one per
+    // "expected").
+    size_t yycount = 0;
+    // Its maximum.
+    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+    // Arguments of yyformat.
+    char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 
-  int
-  Dhcp6Parser::yy_syntax_error_arguments_ (const context& yyctx,
-                                                 symbol_kind_type yyarg[], int yyargn) const
-  {
     /* There are many possibilities here to consider:
        - If this state is a consistent state with a default action, then
          the only way this function was invoked is if the default action
@@ -4643,32 +4555,41 @@ namespace isc { namespace dhcp {
        - Of course, the expected token list depends on states to have
          correct lookahead information, and it depends on the parser not
          to perform extra reductions after fetching a lookahead from the
-         scanner and before detecting a syntax error.  Thus, state merging
-         (from LALR or IELR) and default reductions corrupt the expected
-         token list.  However, the list is correct for canonical LR with
-         one exception: it will still contain any token that will not be
-         accepted due to an error action in a later state.
+         scanner and before detecting a syntax error.  Thus, state
+         merging (from LALR or IELR) and default reductions corrupt the
+         expected token list.  However, the list is correct for
+         canonical LR with one exception: it will still contain any
+         token that will not be accepted due to an error action in a
+         later state.
     */
-
-    if (!yyctx.lookahead ().empty ())
+    if (!yyla.empty ())
       {
-        if (yyarg)
-          yyarg[0] = yyctx.token ();
-        int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
-        return yyn + 1;
+        int yytoken = yyla.type_get ();
+        yyarg[yycount++] = yytname_[yytoken];
+        int yyn = yypact_[yystate];
+        if (!yy_pact_value_is_default_ (yyn))
+          {
+            /* Start YYX at -YYN if negative to avoid negative indexes in
+               YYCHECK.  In other words, skip the first -YYN actions for
+               this state because they are default actions.  */
+            int yyxbegin = yyn < 0 ? -yyn : 0;
+            // Stay within bounds of both yycheck and yytname.
+            int yychecklim = yylast_ - yyn + 1;
+            int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
+            for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
+              if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
+                  && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
+                {
+                  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                    {
+                      yycount = 1;
+                      break;
+                    }
+                  else
+                    yyarg[yycount++] = yytname_[yyx];
+                }
+          }
       }
-    return 0;
-  }
-
-  // Generate an error message.
-  std::string
-  Dhcp6Parser::yysyntax_error_ (const context& yyctx) const
-  {
-    // Its maximum.
-    enum { YYARGS_MAX = 5 };
-    // Arguments of yyformat.
-    symbol_kind_type yyarg[YYARGS_MAX];
-    int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
 
     char const* yyformat = YY_NULLPTR;
     switch (yycount)
@@ -4689,11 +4610,11 @@ namespace isc { namespace dhcp {
 
     std::string yyres;
     // Argument number.
-    std::ptrdiff_t yyi = 0;
+    size_t yyi = 0;
     for (char const* yyp = yyformat; *yyp; ++yyp)
       if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
         {
-          yyres += symbol_name (yyarg[yyi++]);
+          yyres += yytnamerr_ (yyarg[yyi++]);
           ++yyp;
         }
       else
@@ -4702,881 +4623,881 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -979;
+  const short Dhcp6Parser::yypact_ninf_ = -983;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     452,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,    91,    30,   101,   102,   108,
-     111,   117,   119,   137,   139,   156,   166,   178,   210,   223,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,    30,   -68,
-     176,   140,    24,   641,   -44,   190,   251,   159,    17,    88,
-     -47,   431,    44,  -979,   231,   228,   255,   254,   268,  -979,
-     266,  -979,  -979,  -979,  -979,  -979,  -979,   274,   287,   312,
-     352,   353,   360,   366,   367,   380,   396,   397,   409,   412,
-     413,  -979,   416,   417,   425,   432,   437,  -979,  -979,  -979,
-     439,   443,   444,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-     445,   447,   448,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,   454,  -979,  -979,  -979,  -979,  -979,  -979,   457,
-    -979,  -979,   459,  -979,    68,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,   461,  -979,
-      87,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,   462,   463,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,   130,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   133,  -979,  -979,  -979,
-    -979,  -979,   464,  -979,   467,   468,  -979,  -979,  -979,  -979,
-    -979,  -979,   168,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-     282,   321,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-     303,  -979,  -979,   478,  -979,  -979,  -979,   479,  -979,  -979,
-     427,   481,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,   482,   483,  -979,  -979,  -979,
-    -979,   480,   489,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,   169,  -979,  -979,  -979,   490,
-    -979,  -979,   493,  -979,   494,   495,  -979,  -979,   496,   497,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,   179,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,   498,   215,  -979,  -979,  -979,
-    -979,    30,    30,  -979,   296,   502,  -979,   503,   504,   506,
-     507,   510,   511,   311,   313,   324,   326,   327,   328,   331,
-     332,   319,   334,   335,   337,   340,   341,   527,   342,   343,
-     344,   345,   347,   528,   530,   549,   351,   354,   355,   559,
-     564,   565,   566,   568,   569,   572,   368,   369,   371,   574,
-     580,   581,   582,   583,   585,   600,   601,   602,   398,   604,
-     605,   606,   609,   610,   611,   405,   613,   614,  -979,   140,
-    -979,   615,   410,    24,  -979,   616,   618,   619,   620,   621,
-     418,   419,   624,   627,   628,   641,  -979,   629,   -44,  -979,
-     630,   426,   632,   428,   429,   190,  -979,   636,   637,   638,
-     639,   640,   656,   657,  -979,   251,  -979,   661,   663,   460,
-     664,   667,   668,   465,  -979,    17,   669,   466,   472,  -979,
-      88,   670,   671,   -49,  -979,   473,   681,   683,   509,   698,
-     517,   518,   699,   700,   505,   508,   701,   711,   716,   725,
-     431,  -979,   727,   523,    44,  -979,  -979,  -979,   730,   726,
-     536,   728,   738,   739,   740,   746,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-     544,  -979,  -979,  -979,  -979,  -979,    43,   545,   546,  -979,
-    -979,  -979,   750,   751,   753,   754,   755,   555,   320,  -979,
-    -979,  -979,   759,   760,   761,   762,   765,   766,   767,   768,
-     769,  -979,   783,   784,   785,   786,   596,   599,  -979,   803,
-     802,  -979,   805,  -979,  -979,   806,   807,   607,   608,   612,
-    -979,  -979,   805,   625,   810,  -979,   626,  -979,   631,  -979,
-     633,  -979,  -979,  -979,   805,   805,   805,   634,   635,   642,
-     643,  -979,   644,   645,  -979,   646,   647,   649,  -979,  -979,
-     650,  -979,  -979,  -979,   651,   755,  -979,  -979,   652,   653,
-    -979,   654,  -979,  -979,   -75,   592,  -979,  -979,    43,   655,
-     658,   659,  -979,   808,  -979,  -979,    30,   140,  -979,    44,
-      24,   308,   308,   811,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,   812,   816,   819,   822,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,   -87,    30,   316,   660,   825,
-     828,   833,   245,    35,   -46,    21,   161,   431,  -979,  -979,
-     837,  -140,  -979,  -979,   839,   840,  -979,  -979,  -979,  -979,
-    -979,   -73,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,   811,  -979,   225,   265,   267,  -979,  -979,  -979,  -979,
-     860,   861,   864,   865,   866,  -979,   867,   868,  -979,  -979,
-    -979,  -979,   869,   870,   871,   872,  -979,   286,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-     290,  -979,   873,   770,  -979,  -979,   874,   875,  -979,  -979,
-     876,   878,  -979,  -979,   877,   881,  -979,  -979,   879,   883,
-    -979,  -979,  -979,    67,  -979,  -979,  -979,   882,  -979,  -979,
-    -979,   131,  -979,  -979,  -979,  -979,   304,  -979,  -979,  -979,
-     150,  -979,  -979,   884,   886,  -979,  -979,   885,   889,  -979,
-     890,   891,   892,   893,   894,   895,   305,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   896,   897,   898,  -979,
-    -979,  -979,  -979,   307,  -979,  -979,  -979,  -979,  -979,  -979,
-     899,   900,   901,  -979,   322,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   323,  -979,  -979,  -979,
-     902,  -979,   903,  -979,  -979,  -979,   325,  -979,  -979,  -979,
-    -979,  -979,   385,  -979,   151,  -979,   904,  -979,   387,  -979,
-    -979,   679,  -979,   887,   908,  -979,  -979,   906,   910,  -979,
-    -979,  -979,   907,  -979,   911,  -979,  -979,  -979,   912,   914,
-     915,   916,   705,   603,   712,   666,   713,   920,   718,   719,
-     921,   926,   927,   934,   731,   732,   736,   741,   308,  -979,
-    -979,   308,  -979,   811,   641,  -979,   812,    17,  -979,   816,
-      88,  -979,   819,   729,  -979,   822,   -87,  -979,  -979,   316,
-    -979,   949,   660,  -979,   310,   825,  -979,   251,  -979,   828,
-     -47,  -979,   833,   745,   747,   748,   752,   775,   788,   245,
-    -979,   974,   975,   792,   794,   795,    35,  -979,   782,   829,
-     836,   -46,  -979,   990,  1008,    21,  -979,   809,  1012,   852,
-    1013,   161,  -979,  -979,   181,   837,  -979,   814,  -140,  -979,
-    -979,  1062,  1068,   -44,  -979,   839,   190,  -979,   840,  1070,
-    -979,  -979,   408,   880,   888,   905,  -979,  -979,  -979,  -979,
-    -979,   909,  -979,  -979,   206,   913,   917,   918,  -979,  -979,
-    -979,  -979,  -979,   388,  -979,   389,  -979,  1069,  -979,  1071,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,   391,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   919,  -979,  -979,  1076,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  1073,  1079,  -979,  -979,  -979,  -979,  -979,  1075,  -979,
-     399,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,   315,
-     922,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,   923,
-     924,  -979,  -979,   925,  -979,    30,  -979,  -979,  1080,  -979,
-    -979,  -979,  -979,  -979,   400,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,   929,   401,  -979,   407,  -979,   932,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,   729,
-    -979,  -979,  1081,   931,  -979,   310,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  1082,   935,  1083,
-     181,  -979,  -979,  -979,  -979,  -979,  -979,   937,  -979,  -979,
-    1084,  -979,   938,  -979,  -979,  1085,  -979,  -979,   221,  -979,
-     112,  1085,  -979,  -979,  1086,  1087,  1089,  -979,   411,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  1090,   936,   939,   940,
-    1091,   112,  -979,   942,  -979,  -979,  -979,   943,  -979,  -979,
-    -979
+     421,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,    48,    30,    31,    47,    58,
+     129,   137,   158,   172,   225,   251,   253,   285,   288,   295,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,    30,  -141,
+      91,   141,    24,   645,   183,   215,   252,   102,    87,   304,
+     -79,   433,   208,  -983,   110,   296,   323,   321,   327,  -983,
+     325,  -983,  -983,  -983,  -983,  -983,  -983,   358,   365,   376,
+     414,   418,   419,   422,   427,   428,   429,   430,   431,   432,
+     434,  -983,   435,   438,   439,   440,   441,  -983,  -983,  -983,
+     442,   446,   447,  -983,  -983,  -983,   448,  -983,  -983,  -983,
+    -983,   450,   451,   454,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   455,  -983,  -983,  -983,  -983,  -983,  -983,
+     456,  -983,  -983,   458,  -983,    78,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+     460,  -983,    94,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   462,   464,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   123,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,   130,  -983,
+    -983,  -983,  -983,  -983,   465,  -983,   466,   467,  -983,  -983,
+    -983,  -983,  -983,  -983,   143,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,   351,   406,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,   353,  -983,  -983,   470,  -983,  -983,  -983,   471,
+    -983,  -983,   477,   483,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   485,   486,  -983,
+    -983,  -983,  -983,   479,   488,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   160,  -983,  -983,
+    -983,   491,  -983,  -983,   493,  -983,   496,   497,  -983,  -983,
+     498,   499,  -983,  -983,  -983,  -983,  -983,  -983,  -983,   166,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   500,   170,  -983,
+    -983,  -983,  -983,    30,    30,  -983,   298,   501,  -983,   505,
+     506,   507,   510,   513,   514,   311,   313,   315,   324,   326,
+     328,   329,   330,   331,   322,   333,   336,   338,   340,   531,
+     342,   343,   344,   346,   347,   533,   550,   551,   349,   354,
+     356,   561,   565,   567,   362,   569,   571,   572,   575,   369,
+     370,   371,   581,   583,   584,   585,   586,   588,   603,   604,
+     605,   401,   606,   608,   609,   627,   628,   630,   423,   632,
+     633,  -983,   141,  -983,   634,   436,    24,  -983,   635,   636,
+     637,   639,   640,   437,   443,   641,   642,   646,   645,  -983,
+     647,   183,  -983,   648,   444,   649,   449,   452,   215,  -983,
+     652,   653,   654,   656,   657,   659,   660,  -983,   252,  -983,
+     661,   665,   461,   668,   669,   671,   468,  -983,    87,   672,
+     469,   475,  -983,   304,   673,   674,    23,  -983,   476,   675,
+     685,   481,   702,   509,   512,   703,   704,   508,   511,   705,
+     720,   726,   727,   433,  -983,   728,   524,   208,  -983,  -983,
+    -983,   733,   729,   529,   742,   743,   744,   745,   734,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   547,  -983,  -983,  -983,  -983,  -983,  -122,
+     548,   549,  -983,  -983,  -983,   735,   754,   755,  -983,   756,
+     757,   554,   266,  -983,  -983,  -983,   762,   763,   764,   765,
+     766,   769,   770,   771,   772,  -983,   786,   787,   788,   789,
+     568,   598,  -983,   805,   804,  -983,   807,  -983,  -983,   808,
+     809,   607,   610,   611,  -983,  -983,   807,   612,   810,  -983,
+     613,  -983,   614,  -983,   615,  -983,  -983,  -983,   807,   807,
+     807,   616,   621,   624,   629,  -983,   638,   644,  -983,   650,
+     655,   658,  -983,  -983,   662,  -983,  -983,  -983,   663,   757,
+    -983,  -983,   664,   666,  -983,   667,  -983,  -983,   103,   594,
+    -983,  -983,  -122,   670,   676,   677,  -983,   813,  -983,  -983,
+      30,   141,  -983,   208,    24,   310,   310,   829,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   830,   832,   836,
+     837,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,   -92,
+      30,   292,   700,   838,   839,   841,   148,    79,   -47,    27,
+      61,   433,  -983,  -983,   843,  -158,  -983,  -983,   844,   848,
+    -983,  -983,  -983,  -983,  -983,   -46,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,   829,  -983,   177,   226,   227,
+    -983,  -983,  -983,  -983,   852,   853,   854,   857,   858,  -983,
+     859,   861,  -983,  -983,  -983,  -983,   862,   864,   865,   866,
+    -983,   240,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,   265,  -983,   868,   773,  -983,  -983,
+     871,   875,  -983,  -983,   874,   878,  -983,  -983,   876,   880,
+    -983,  -983,   881,   885,  -983,  -983,  -983,    81,  -983,  -983,
+    -983,   883,  -983,  -983,  -983,    85,  -983,  -983,  -983,  -983,
+     290,  -983,  -983,  -983,   109,  -983,  -983,   884,   888,  -983,
+    -983,   886,   890,  -983,   891,   892,   893,   894,   895,   896,
+     312,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+     897,   898,   899,  -983,  -983,  -983,  -983,   318,  -983,  -983,
+    -983,  -983,  -983,  -983,   900,   901,   902,  -983,   355,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+     357,  -983,  -983,  -983,   903,  -983,   904,  -983,  -983,  -983,
+     386,  -983,  -983,  -983,  -983,  -983,   387,  -983,   131,  -983,
+     905,  -983,   388,  -983,  -983,   701,  -983,   906,   908,  -983,
+    -983,   909,   913,  -983,  -983,  -983,   910,  -983,   911,  -983,
+    -983,  -983,   915,   916,   917,   918,   684,   711,   714,   713,
+     716,   924,   719,   721,   928,   930,   931,   938,   741,   747,
+     746,   750,   310,  -983,  -983,   310,  -983,   829,   645,  -983,
+     830,    87,  -983,   832,   304,  -983,   836,   732,  -983,   837,
+     -92,  -983,  -983,   292,  -983,   940,   700,  -983,    22,   838,
+    -983,   252,  -983,   839,   -79,  -983,   841,   751,   778,   791,
+     795,   797,   798,   148,  -983,   941,   950,   806,   811,   814,
+      79,  -983,   753,   819,   855,   -47,  -983,   978,   979,    27,
+    -983,   785,   994,   873,  1016,    61,  -983,  -983,   179,   843,
+    -983,   860,  -158,  -983,  -983,  1036,  1046,   183,  -983,   844,
+     215,  -983,   848,  1071,  -983,  -983,   405,   869,   872,   877,
+    -983,  -983,  -983,  -983,  -983,   879,  -983,  -983,   207,   882,
+     887,   889,  -983,  -983,  -983,  -983,  -983,   390,  -983,   394,
+    -983,  1076,  -983,  1077,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,   396,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+     907,  -983,  -983,  1083,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  1081,  1087,  -983,  -983,  -983,
+    -983,  -983,  1084,  -983,   400,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,    45,   912,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   914,   919,  -983,  -983,   920,  -983,    30,
+    -983,  -983,  1089,  -983,  -983,  -983,  -983,  -983,   402,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   921,   403,  -983,
+     404,  -983,   922,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   732,  -983,  -983,  1090,   923,  -983,    22,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  1091,   926,  1093,   179,  -983,  -983,  -983,  -983,  -983,
+    -983,   925,  -983,  -983,  1094,  -983,   929,  -983,  -983,  1095,
+    -983,  -983,   263,  -983,   127,  1095,  -983,  -983,  1096,  1097,
+    1099,  -983,   412,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    1100,   927,   934,   936,  1101,   127,  -983,   932,  -983,  -983,
+    -983,   939,  -983,  -983,  -983
   };
 
-  const short
+  const unsigned short
   Dhcp6Parser::yydefact_[] =
   {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
       20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
-      35,    36,    58,     5,    62,     7,   172,     9,   340,    11,
-     535,    13,   560,    15,   590,    17,   460,    19,   468,    21,
-     505,    23,   305,    25,   709,    27,   759,    29,    47,    41,
-       0,     0,     0,     0,     0,     0,   592,     0,   470,   507,
+      35,    36,    58,     5,    62,     7,   174,     9,   342,    11,
+     537,    13,   562,    15,   592,    17,   462,    19,   470,    21,
+     507,    23,   307,    25,   711,    27,   761,    29,    47,    41,
+       0,     0,     0,     0,     0,     0,   594,     0,   472,   509,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    60,
-       0,   128,   757,   170,   184,   186,   188,     0,     0,     0,
+       0,   129,   759,   172,   186,   188,   190,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   168,     0,     0,     0,     0,     0,   148,   155,   157,
+       0,     0,     0,   334,   460,   499,     0,   410,   550,   552,
+     402,     0,     0,     0,   267,   284,   275,   260,   629,   584,
+     299,   318,   656,     0,   286,   680,   693,   709,   161,   163,
+       0,   770,   808,     0,   128,     0,    64,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,   105,   106,   107,   108,
+     109,    75,   113,   114,   115,   116,   117,   118,   119,   120,
+     111,   112,   121,   122,   123,   100,   127,   125,    78,    79,
+      80,    81,    97,    82,    84,    83,   124,    88,    89,    76,
+     102,   103,   104,   101,    77,    86,    87,    95,    96,    98,
+      85,    90,    91,    92,    93,    94,    99,   110,   126,   183,
+       0,   182,     0,   176,   178,   179,   180,   181,   529,   554,
+     389,   391,   393,     0,     0,   397,   395,   623,   388,   346,
+     347,   348,   349,   350,   351,   352,   353,   372,   373,   374,
+     375,   376,   379,   380,   381,   382,   383,   384,   385,   386,
+     377,   378,   387,     0,   344,   357,   358,   359,   362,   363,
+     366,   367,   368,   365,   360,   361,   354,   355,   370,   371,
+     356,   364,   369,   548,   547,   543,   544,   542,     0,   539,
+     541,   545,   546,   577,     0,   580,     0,     0,   576,   570,
+     571,   569,   574,   575,     0,   564,   566,   567,   572,   573,
+     568,   621,   609,   611,   613,   615,   617,   619,   608,   605,
+     606,   607,     0,   595,   596,   600,   601,   598,   602,   603,
+     604,   599,     0,   489,   235,     0,   493,   491,   496,     0,
+     485,   486,     0,   473,   474,   476,   488,   477,   478,   479,
+     495,   480,   481,   482,   483,   484,   523,     0,     0,   521,
+     522,   525,   526,     0,   510,   511,   513,   514,   515,   516,
+     517,   518,   519,   520,   314,   316,   311,     0,   309,   312,
+     313,     0,   734,   736,     0,   739,     0,     0,   743,   747,
+       0,     0,   751,   753,   755,   757,   732,   730,   731,     0,
+     713,   715,   727,   716,   717,   718,   719,   720,   721,   722,
+     723,   724,   725,   726,   728,   729,   767,     0,     0,   763,
+     765,   766,    46,     0,     0,    39,     0,     0,    59,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   167,     0,     0,     0,     0,     0,   147,   154,   156,
-       0,     0,     0,   332,   458,   497,   408,   548,   550,   400,
-       0,     0,     0,   265,   282,   273,   258,   627,   582,   297,
-     316,   654,     0,   284,   678,   691,   707,   160,   162,     0,
-     768,   806,     0,   127,     0,    64,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,   105,   106,   107,   108,   109,
-      75,   113,   114,   115,   116,   117,   118,   119,   120,   111,
-     112,   121,   122,   123,   100,   125,    78,    79,    80,    81,
-      97,    82,    84,    83,   124,    88,    89,    76,   102,   103,
-     104,   101,    77,    86,    87,    95,    96,    98,    85,    90,
-      91,    92,    93,    94,    99,   110,   126,   181,     0,   180,
-       0,   174,   176,   177,   178,   179,   527,   552,   387,   389,
-     391,     0,     0,   395,   393,   621,   386,   344,   345,   346,
-     347,   348,   349,   350,   351,   370,   371,   372,   373,   374,
-     377,   378,   379,   380,   381,   382,   383,   384,   375,   376,
-     385,     0,   342,   355,   356,   357,   360,   361,   364,   365,
-     366,   363,   358,   359,   352,   353,   368,   369,   354,   362,
-     367,   546,   545,   541,   542,   540,     0,   537,   539,   543,
-     544,   575,     0,   578,     0,     0,   574,   568,   569,   567,
-     572,   573,     0,   562,   564,   565,   570,   571,   566,   619,
-     607,   609,   611,   613,   615,   617,   606,   603,   604,   605,
-       0,   593,   594,   598,   599,   596,   600,   601,   602,   597,
-       0,   487,   233,     0,   491,   489,   494,     0,   483,   484,
-       0,   471,   472,   474,   486,   475,   476,   477,   493,   478,
-     479,   480,   481,   482,   521,     0,     0,   519,   520,   523,
-     524,     0,   508,   509,   511,   512,   513,   514,   515,   516,
-     517,   518,   312,   314,   309,     0,   307,   310,   311,     0,
-     732,   734,     0,   737,     0,     0,   741,   745,     0,     0,
-     749,   751,   753,   755,   730,   728,   729,     0,   711,   713,
-     725,   714,   715,   716,   717,   718,   719,   720,   721,   722,
-     723,   724,   726,   727,   765,     0,     0,   761,   763,   764,
-      46,     0,     0,    39,     0,     0,    59,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    57,     0,
-      63,     0,     0,     0,   173,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   341,     0,     0,   536,
-       0,     0,     0,     0,     0,     0,   561,     0,     0,     0,
-       0,     0,     0,     0,   591,     0,   461,     0,     0,     0,
-       0,     0,     0,     0,   469,     0,     0,     0,     0,   506,
-       0,     0,     0,     0,   306,     0,     0,     0,     0,     0,
+       0,    57,     0,    63,     0,     0,     0,   175,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   343,
+       0,     0,   538,     0,     0,     0,     0,     0,     0,   563,
+       0,     0,     0,     0,     0,     0,     0,   593,     0,   463,
+       0,     0,     0,     0,     0,     0,     0,   471,     0,     0,
+       0,     0,   508,     0,     0,     0,     0,   308,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   710,     0,     0,     0,   760,    50,    43,     0,     0,
-       0,     0,     0,     0,     0,     0,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-       0,   165,   166,   144,   145,   146,     0,     0,     0,   158,
-     159,   164,     0,     0,     0,     0,     0,     0,     0,   397,
-     398,   399,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   677,     0,     0,     0,     0,     0,     0,   169,     0,
-       0,    65,     0,   183,   175,     0,     0,     0,     0,     0,
-     406,   407,     0,     0,     0,   343,     0,   538,     0,   577,
-       0,   580,   581,   563,     0,     0,     0,     0,     0,     0,
-       0,   595,     0,     0,   485,     0,     0,     0,   496,   473,
-       0,   525,   526,   510,     0,     0,   308,   731,     0,     0,
-     736,     0,   739,   740,     0,     0,   747,   748,     0,     0,
-       0,     0,   712,     0,   767,   762,     0,     0,   129,     0,
-       0,     0,     0,   190,   168,   149,   150,   151,   152,   153,
-     148,   155,   157,   334,   462,   499,   410,    40,   549,   551,
-     402,   403,   404,   405,   401,     0,    47,     0,     0,     0,
-     584,   299,     0,     0,     0,     0,     0,     0,   161,   163,
-       0,     0,    51,   182,   529,   554,   388,   390,   392,   396,
-     394,     0,   547,   576,   579,   620,   608,   610,   612,   614,
-     616,   618,   488,   234,   492,   490,   495,   522,   313,   315,
-     733,   735,   738,   743,   744,   742,   746,   750,   752,   754,
-     756,   190,    44,     0,     0,     0,   220,   226,   228,   230,
-       0,     0,     0,     0,     0,   249,     0,     0,   240,   252,
-     254,   256,     0,     0,     0,     0,   219,     0,   196,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   210,
-     211,   218,   212,   213,   214,   208,   209,   215,   216,   217,
-       0,   194,     0,   191,   192,   338,     0,   335,   336,   466,
-       0,   463,   464,   503,     0,   500,   501,   414,     0,   411,
-     412,   271,   272,     0,   267,   269,   270,     0,   280,   281,
-     277,     0,   275,   278,   279,   263,     0,   260,   262,   631,
-       0,   629,   588,     0,   585,   586,   303,     0,   300,   301,
-       0,     0,     0,     0,     0,     0,     0,   318,   320,   321,
-     322,   323,   324,   325,   667,   673,     0,     0,     0,   666,
-     663,   664,   665,     0,   656,   658,   661,   659,   660,   662,
-       0,     0,     0,   293,     0,   286,   288,   289,   290,   291,
-     292,   687,   689,   686,   684,   685,     0,   680,   682,   683,
-       0,   702,     0,   705,   698,   699,     0,   693,   695,   696,
-     697,   700,     0,   772,     0,   770,     0,   811,     0,   808,
-     810,    53,   533,     0,   530,   531,   558,     0,   555,   556,
-     625,   624,     0,   623,     0,    61,   758,   171,     0,     0,
+       0,     0,     0,     0,   712,     0,     0,     0,   762,    50,
+      43,     0,     0,     0,     0,     0,     0,     0,     0,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,     0,   166,   167,   145,   146,   147,     0,
+       0,     0,   159,   160,   165,     0,     0,     0,   170,     0,
+       0,     0,     0,   399,   400,   401,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   679,     0,     0,     0,     0,
+       0,     0,   171,     0,     0,    65,     0,   185,   177,     0,
+       0,     0,     0,     0,   408,   409,     0,     0,     0,   345,
+       0,   540,     0,   579,     0,   582,   583,   565,     0,     0,
+       0,     0,     0,     0,     0,   597,     0,     0,   487,     0,
+       0,     0,   498,   475,     0,   527,   528,   512,     0,     0,
+     310,   733,     0,     0,   738,     0,   741,   742,     0,     0,
+     749,   750,     0,     0,     0,     0,   714,     0,   769,   764,
+       0,     0,   130,     0,     0,     0,     0,   192,   169,   150,
+     151,   152,   153,   154,   149,   156,   158,   336,   464,   501,
+     412,    40,   551,   553,   404,   405,   406,   407,   403,     0,
+      47,     0,     0,     0,   586,   301,     0,     0,     0,     0,
+       0,     0,   162,   164,     0,     0,    51,   184,   531,   556,
+     390,   392,   394,   398,   396,     0,   549,   578,   581,   622,
+     610,   612,   614,   616,   618,   620,   490,   236,   494,   492,
+     497,   524,   315,   317,   735,   737,   740,   745,   746,   744,
+     748,   752,   754,   756,   758,   192,    44,     0,     0,     0,
+     222,   228,   230,   232,     0,     0,     0,     0,     0,   251,
+       0,     0,   242,   254,   256,   258,     0,     0,     0,     0,
+     221,     0,   198,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   212,   213,   220,   214,   215,   216,   210,
+     211,   217,   218,   219,     0,   196,     0,   193,   194,   340,
+       0,   337,   338,   468,     0,   465,   466,   505,     0,   502,
+     503,   416,     0,   413,   414,   273,   274,     0,   269,   271,
+     272,     0,   282,   283,   279,     0,   277,   280,   281,   265,
+       0,   262,   264,   633,     0,   631,   590,     0,   587,   588,
+     305,     0,   302,   303,     0,     0,     0,     0,     0,     0,
+       0,   320,   322,   323,   324,   325,   326,   327,   669,   675,
+       0,     0,     0,   668,   665,   666,   667,     0,   658,   660,
+     663,   661,   662,   664,     0,     0,     0,   295,     0,   288,
+     290,   291,   292,   293,   294,   689,   691,   688,   686,   687,
+       0,   682,   684,   685,     0,   704,     0,   707,   700,   701,
+       0,   695,   697,   698,   699,   702,     0,   774,     0,   772,
+       0,   813,     0,   810,   812,    53,   535,     0,   532,   533,
+     560,     0,   557,   558,   627,   626,     0,   625,     0,    61,
+     760,   173,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   185,
-     187,     0,   189,     0,     0,   333,     0,   470,   459,     0,
-     507,   498,     0,     0,   409,     0,     0,   266,   283,     0,
-     274,     0,     0,   259,   633,     0,   628,   592,   583,     0,
-       0,   298,     0,     0,     0,     0,     0,     0,     0,     0,
-     317,     0,     0,     0,     0,     0,     0,   655,     0,     0,
-       0,     0,   285,     0,     0,     0,   679,     0,     0,     0,
-       0,     0,   692,   708,     0,     0,   769,     0,     0,   807,
-      55,     0,    54,     0,   528,     0,     0,   553,     0,     0,
-     622,   766,     0,     0,     0,     0,   232,   235,   236,   237,
-     238,     0,   251,   239,     0,     0,     0,     0,   246,   247,
-     248,   245,   197,     0,   193,     0,   337,     0,   465,     0,
-     502,   457,   432,   433,   434,   436,   437,   438,   422,   423,
-     441,   442,   443,   444,   445,   448,   449,   450,   451,   452,
-     453,   454,   455,   446,   447,   456,   418,   419,   420,   421,
-     430,   431,   427,   428,   429,   426,   435,     0,   416,   424,
-     439,   440,   425,   413,   268,   276,     0,   261,   651,     0,
-     649,   643,   644,   645,   646,   647,   648,   650,   640,   641,
-     642,     0,   634,   635,   637,   638,   639,   630,     0,   587,
-       0,   302,   326,   327,   328,   329,   330,   331,   319,     0,
-       0,   672,   675,   676,   657,   294,   295,   296,   287,     0,
-       0,   681,   701,     0,   704,     0,   694,   786,     0,   784,
-     782,   776,   780,   781,     0,   774,   778,   779,   777,   771,
-     812,   809,    52,     0,     0,   532,     0,   557,     0,   222,
-     223,   224,   225,   221,   227,   229,   231,   250,   242,   243,
-     244,   241,   253,   255,   257,   195,   339,   467,   504,     0,
-     415,   264,     0,     0,   632,     0,   589,   304,   669,   670,
-     671,   668,   674,   688,   690,   703,   706,     0,     0,     0,
-       0,   773,    56,   534,   559,   626,   417,     0,   653,   636,
-       0,   783,     0,   775,   652,     0,   785,   790,     0,   788,
-       0,     0,   787,   799,     0,     0,     0,   804,     0,   792,
-     794,   795,   796,   797,   798,   789,     0,     0,     0,     0,
-       0,     0,   791,     0,   801,   802,   803,     0,   793,   800,
-     805
+       0,     0,     0,   187,   189,     0,   191,     0,     0,   335,
+       0,   472,   461,     0,   509,   500,     0,     0,   411,     0,
+       0,   268,   285,     0,   276,     0,     0,   261,   635,     0,
+     630,   594,   585,     0,     0,   300,     0,     0,     0,     0,
+       0,     0,     0,     0,   319,     0,     0,     0,     0,     0,
+       0,   657,     0,     0,     0,     0,   287,     0,     0,     0,
+     681,     0,     0,     0,     0,     0,   694,   710,     0,     0,
+     771,     0,     0,   809,    55,     0,    54,     0,   530,     0,
+       0,   555,     0,     0,   624,   768,     0,     0,     0,     0,
+     234,   237,   238,   239,   240,     0,   253,   241,     0,     0,
+       0,     0,   248,   249,   250,   247,   199,     0,   195,     0,
+     339,     0,   467,     0,   504,   459,   434,   435,   436,   438,
+     439,   440,   424,   425,   443,   444,   445,   446,   447,   450,
+     451,   452,   453,   454,   455,   456,   457,   448,   449,   458,
+     420,   421,   422,   423,   432,   433,   429,   430,   431,   428,
+     437,     0,   418,   426,   441,   442,   427,   415,   270,   278,
+       0,   263,   653,     0,   651,   645,   646,   647,   648,   649,
+     650,   652,   642,   643,   644,     0,   636,   637,   639,   640,
+     641,   632,     0,   589,     0,   304,   328,   329,   330,   331,
+     332,   333,   321,     0,     0,   674,   677,   678,   659,   296,
+     297,   298,   289,     0,     0,   683,   703,     0,   706,     0,
+     696,   788,     0,   786,   784,   778,   782,   783,     0,   776,
+     780,   781,   779,   773,   814,   811,    52,     0,     0,   534,
+       0,   559,     0,   224,   225,   226,   227,   223,   229,   231,
+     233,   252,   244,   245,   246,   243,   255,   257,   259,   197,
+     341,   469,   506,     0,   417,   266,     0,     0,   634,     0,
+     591,   306,   671,   672,   673,   670,   676,   690,   692,   705,
+     708,     0,     0,     0,     0,   775,    56,   536,   561,   628,
+     419,     0,   655,   638,     0,   785,     0,   777,   654,     0,
+     787,   792,     0,   790,     0,     0,   789,   801,     0,     0,
+       0,   806,     0,   794,   796,   797,   798,   799,   800,   791,
+       0,     0,     0,     0,     0,     0,   793,     0,   803,   804,
+     805,     0,   795,   802,   807
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   -10,  -979,  -552,  -979,
-     422,  -979,  -979,  -979,  -979,   372,  -979,  -568,  -979,  -979,
-    -979,   -71,  -979,  -979,  -979,  -979,  -979,  -979,   402,   617,
-    -979,  -979,   -43,   -14,    12,    16,    20,    33,   -59,   -31,
-     -30,   -28,   -27,   -26,    19,  -979,    34,    37,    38,    41,
-    -979,   414,    49,  -979,    52,  -979,    54,    55,    56,  -979,
-      59,  -979,    62,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,   403,   622,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,   329,  -979,   107,  -979,  -686,   113,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,   -45,
-    -979,  -722,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,    92,  -979,  -979,  -979,  -979,
-    -979,    99,  -705,  -979,  -979,  -979,  -979,    98,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,    71,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,    86,  -979,  -979,  -979,    89,   571,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,    82,  -979,  -979,  -979,
-    -979,  -979,  -979,  -978,  -979,  -979,  -979,   120,  -979,  -979,
-    -979,   124,   623,  -979,  -979,  -976,  -979,  -975,  -979,    73,
-    -979,    75,  -979,    66,    69,    70,    72,  -979,  -979,  -979,
-    -974,  -979,  -979,  -979,  -979,   114,  -979,  -979,  -119,  1045,
-    -979,  -979,  -979,  -979,  -979,   125,  -979,  -979,  -979,   126,
-    -979,   594,  -979,   -67,  -979,  -979,  -979,  -979,  -979,   -64,
-    -979,  -979,  -979,  -979,  -979,     4,  -979,  -979,  -979,   132,
-    -979,  -979,  -979,   135,  -979,   648,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,    78,  -979,  -979,
-    -979,    90,   662,  -979,  -979,   -55,  -979,   -12,  -979,  -979,
-    -979,  -979,  -979,    84,  -979,  -979,  -979,    93,   672,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   -60,  -979,  -979,  -979,
-     136,  -979,  -979,  -979,   141,  -979,   673,   406,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -972,  -979,  -979,  -979,  -979,  -979,  -979,  -979,   145,
-    -979,  -979,  -979,   -91,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,   127,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,   116,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,   105,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,   430,   674,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,   470,   598,  -979,  -979,  -979,  -979,
-    -979,  -979,   109,  -979,  -979,   -95,  -979,  -979,  -979,  -979,
-    -979,  -979,  -115,  -979,  -979,  -130,  -979,  -979,  -979,  -979,
-    -979,  -979,  -979,  -979,  -979,  -979,   115,  -979
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,   -10,  -983,  -566,  -983,
+     205,  -983,  -983,  -983,  -983,   377,  -983,  -564,  -983,  -983,
+    -983,   -71,  -983,  -983,  -983,  -983,  -983,  -983,   407,   617,
+    -983,  -983,   -43,   -14,    12,    16,    20,    33,   -59,   -31,
+     -30,   -28,   -27,   -26,    19,  -983,    34,    37,    38,    41,
+    -983,   420,    49,  -983,    52,  -983,    54,    55,    56,  -983,
+      59,  -983,    62,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   409,   618,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,   332,  -983,   113,  -983,  -690,   114,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+     -45,  -983,  -726,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,    95,  -983,  -983,  -983,
+    -983,  -983,   105,  -709,  -983,  -983,  -983,  -983,   106,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,    77,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,    92,  -983,  -983,  -983,    96,   578,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,    93,  -983,  -983,
+    -983,  -983,  -983,  -983,  -982,  -983,  -983,  -983,   125,  -983,
+    -983,  -983,   134,   619,  -983,  -983,  -980,  -983,  -979,  -983,
+      73,  -983,    75,  -983,    66,    69,    70,    72,  -983,  -983,
+    -983,  -978,  -983,  -983,  -983,  -983,   124,  -983,  -983,  -106,
+    1070,  -983,  -983,  -983,  -983,  -983,   146,  -983,  -983,  -983,
+     149,  -983,   620,  -983,   -67,  -983,  -983,  -983,  -983,  -983,
+     -64,  -983,  -983,  -983,  -983,  -983,     4,  -983,  -983,  -983,
+     145,  -983,  -983,  -983,   150,  -983,   622,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,    83,  -983,
+    -983,  -983,    86,   651,  -983,  -983,   -55,  -983,   -12,  -983,
+    -983,  -983,  -983,  -983,    84,  -983,  -983,  -983,    89,   643,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   -60,  -983,  -983,
+    -983,   132,  -983,  -983,  -983,   136,  -983,   679,   408,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -976,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+     147,  -983,  -983,  -983,   -89,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,   128,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,   115,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,   112,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,   445,   678,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,   472,   602,  -983,  -983,  -983,
+    -983,  -983,  -983,   111,  -983,  -983,   -93,  -983,  -983,  -983,
+    -983,  -983,  -983,  -112,  -983,  -983,  -131,  -983,  -983,  -983,
+    -983,  -983,  -983,  -983,  -983,  -983,  -983,   117,  -983
   };
 
   const short
   Dhcp6Parser::yydefgoto_[] =
   {
-       0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     718,    87,    88,    41,    68,    84,    85,   743,   951,  1061,
-    1062,   806,    43,    70,    90,   425,    45,    71,   154,   155,
-     156,   427,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     453,   710,   175,   454,   176,   455,   177,   178,   179,   483,
-     180,   484,   181,   182,   183,   184,   447,   185,   186,   429,
-      47,    72,   220,   221,   222,   491,   223,   187,   430,   188,
-     431,   189,   432,   832,   833,   834,   991,   807,   808,   809,
-     968,  1223,   810,   969,   811,   970,   812,   971,   813,   814,
-     528,   815,   816,   817,   818,   819,   820,   980,  1231,   821,
-     822,   823,   824,   825,   977,   826,   827,   981,   828,   982,
-     829,   983,   190,   472,   866,   867,   868,  1011,   191,   469,
-     853,   854,   855,   856,   192,   471,   861,   862,   863,   864,
-     193,   470,   194,   479,   914,   915,   916,   917,   918,   195,
-     475,   877,   878,   879,  1020,    63,    80,   375,   376,   377,
-     541,   378,   542,   196,   476,   886,   887,   888,   889,   890,
-     891,   892,   893,   197,   459,   836,   837,   838,   994,    49,
-      73,   261,   262,   263,   497,   264,   498,   265,   499,   266,
-     503,   267,   502,   198,   199,   200,   201,   465,   724,   272,
-     273,   202,   462,   848,   849,   850,  1003,  1137,  1138,   203,
-     460,    57,    77,   840,   841,   842,   997,    59,    78,   340,
-     341,   342,   343,   344,   345,   346,   527,   347,   531,   348,
-     530,   349,   350,   532,   351,   204,   461,   844,   845,   846,
-    1000,    61,    79,   361,   362,   363,   364,   365,   536,   366,
-     367,   368,   369,   275,   495,   953,   954,   955,  1063,    51,
-      74,   286,   287,   288,   507,   205,   463,   206,   464,   278,
-     496,   957,   958,   959,  1066,    53,    75,   302,   303,   304,
-     510,   305,   306,   512,   307,   308,   207,   474,   873,   874,
-     875,  1017,    55,    76,   320,   321,   322,   323,   518,   324,
-     519,   325,   520,   326,   521,   327,   522,   328,   523,   329,
-     517,   280,   504,   962,   963,  1069,   208,   473,   870,   871,
-    1014,  1161,  1162,  1163,  1164,  1165,  1242,  1166,   209,   477,
-     903,   904,   905,  1031,  1251,   906,   907,  1032,   908,   909,
-     210,   211,   480,   926,   927,   928,  1043,   929,  1044,   212,
-     481,   936,   937,   938,   939,  1048,   940,   941,  1050,   213,
-     482,    65,    81,   397,   398,   399,   400,   546,   401,   547,
-     402,   403,   549,   404,   405,   406,   552,   775,   407,   553,
-     408,   409,   410,   556,   411,   557,   412,   558,   413,   559,
-     214,   428,    67,    82,   416,   417,   418,   562,   419,   215,
-     486,   944,   945,  1054,  1204,  1205,  1206,  1207,  1259,  1208,
-    1257,  1278,  1279,  1280,  1288,  1289,  1290,  1296,  1291,  1292,
-    1293,  1294,  1300,   216,   487,   948,   949,   950
+     722,    87,    88,    41,    68,    84,    85,   747,   955,  1065,
+    1066,   810,    43,    70,    90,   427,    45,    71,   155,   156,
+     157,   429,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     455,   714,   176,   456,   177,   457,   178,   179,   180,   486,
+     181,   487,   182,   183,   184,   185,   449,   186,   187,   188,
+     431,    47,    72,   222,   223,   224,   494,   225,   189,   432,
+     190,   433,   191,   434,   836,   837,   838,   995,   811,   812,
+     813,   972,  1227,   814,   973,   815,   974,   816,   975,   817,
+     818,   531,   819,   820,   821,   822,   823,   824,   984,  1235,
+     825,   826,   827,   828,   829,   981,   830,   831,   985,   832,
+     986,   833,   987,   192,   475,   870,   871,   872,  1015,   193,
+     472,   857,   858,   859,   860,   194,   474,   865,   866,   867,
+     868,   195,   473,   196,   482,   918,   919,   920,   921,   922,
+     197,   478,   881,   882,   883,  1024,    63,    80,   377,   378,
+     379,   544,   380,   545,   198,   479,   890,   891,   892,   893,
+     894,   895,   896,   897,   199,   461,   840,   841,   842,   998,
+      49,    73,   263,   264,   265,   500,   266,   501,   267,   502,
+     268,   506,   269,   505,   200,   201,   202,   203,   468,   728,
+     274,   275,   204,   465,   852,   853,   854,  1007,  1141,  1142,
+     205,   462,    57,    77,   844,   845,   846,  1001,    59,    78,
+     342,   343,   344,   345,   346,   347,   348,   530,   349,   534,
+     350,   533,   351,   352,   535,   353,   206,   463,   848,   849,
+     850,  1004,    61,    79,   363,   364,   365,   366,   367,   539,
+     368,   369,   370,   371,   277,   498,   957,   958,   959,  1067,
+      51,    74,   288,   289,   290,   510,   207,   466,   208,   467,
+     280,   499,   961,   962,   963,  1070,    53,    75,   304,   305,
+     306,   513,   307,   308,   515,   309,   310,   209,   477,   877,
+     878,   879,  1021,    55,    76,   322,   323,   324,   325,   521,
+     326,   522,   327,   523,   328,   524,   329,   525,   330,   526,
+     331,   520,   282,   507,   966,   967,  1073,   210,   476,   874,
+     875,  1018,  1165,  1166,  1167,  1168,  1169,  1246,  1170,   211,
+     480,   907,   908,   909,  1035,  1255,   910,   911,  1036,   912,
+     913,   212,   213,   483,   930,   931,   932,  1047,   933,  1048,
+     214,   484,   940,   941,   942,   943,  1052,   944,   945,  1054,
+     215,   485,    65,    81,   399,   400,   401,   402,   549,   403,
+     550,   404,   405,   552,   406,   407,   408,   555,   779,   409,
+     556,   410,   411,   412,   559,   413,   560,   414,   561,   415,
+     562,   216,   430,    67,    82,   418,   419,   420,   565,   421,
+     217,   489,   948,   949,  1058,  1208,  1209,  1210,  1211,  1263,
+    1212,  1261,  1282,  1283,  1284,  1292,  1293,  1294,  1300,  1295,
+    1296,  1297,  1298,  1304,   218,   490,   952,   953,   954
   };
 
-  const short
+  const unsigned short
   Dhcp6Parser::yytable_[] =
   {
-     153,   219,   236,   282,   296,   316,    38,   338,   357,   374,
-     394,   900,   359,   279,   243,   360,   830,   224,   276,   289,
-     300,   318,   860,   352,   370,  1127,   395,  1128,  1129,  1136,
-     237,  1142,   125,   339,   358,    31,   851,    32,   331,    33,
-     217,   218,   244,   245,   281,   246,   247,   248,   310,   127,
-     128,   127,   128,   946,   717,   960,   894,   414,   415,   238,
-     225,   277,   290,   301,   319,   791,   353,   371,   152,   396,
-    1006,   489,   233,  1007,   749,   234,   490,   274,   285,   299,
-     317,   372,   373,   372,   373,   239,   755,   756,   757,   240,
-     493,    30,   249,   241,   332,   494,   333,   334,   773,   774,
-     335,   336,   337,   910,   911,   912,   242,   250,    42,    44,
-     251,   252,   127,   128,   253,    46,   127,   128,    48,   127,
-     128,   852,   254,   717,    50,   255,    52,   256,   257,   258,
-     127,   128,   259,   505,  1009,   260,   508,  1010,   506,   268,
-      86,   509,   269,   270,    54,   271,    56,   283,   297,   284,
-     298,    91,    92,  1015,  1055,    93,  1016,  1056,    94,    95,
-      96,   152,   152,    58,   152,   332,   354,   333,   334,   355,
-     356,   515,   543,    60,   921,   922,   516,   544,   895,   896,
-     897,   898,   560,   127,   128,    62,    89,   561,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,    64,   564,   705,
-     706,   707,   708,   565,  1281,   152,   126,  1282,   489,   152,
-      66,   421,   152,   965,   124,   127,   128,   420,    34,    35,
-      36,    37,   129,   152,  1228,  1229,  1230,   130,   131,   132,
-     133,   134,   135,   136,   709,   137,   127,   128,   332,   422,
-     138,  1127,   423,  1128,  1129,  1136,   125,  1142,   564,   139,
-     493,   424,   140,   966,   426,   967,   127,   128,   433,   141,
-     291,   292,   293,   294,   295,   127,   128,   142,   143,   988,
-     524,   434,   144,   988,   989,   145,   152,  1283,   990,   146,
-    1284,  1285,  1286,  1287,   860,  1093,   233,  1012,  1029,   234,
-    1036,   526,  1013,  1030,   900,  1037,   435,   930,   931,   932,
-     147,   148,   149,   150,   525,  1041,  1045,   125,  1051,   786,
-    1042,  1046,   151,  1052,   787,   788,   789,   790,   791,   792,
-     793,   794,   795,   796,   797,   798,   127,   128,   152,   799,
-     800,   801,   802,   803,   804,   805,   436,   437,    97,    98,
-      99,   100,   101,   102,   438,  1197,   309,  1198,  1199,   933,
-     439,   440,   310,   311,   312,   313,   314,   315,   880,   881,
-     882,   883,   884,   885,   441,   332,   125,   332,   560,   152,
-    1058,   988,   505,  1053,  1239,  1059,  1235,  1236,   152,  1240,
-     442,   443,   543,  1260,   508,   127,   128,  1247,  1261,  1263,
-     515,   566,   567,   444,  1301,  1264,   445,   446,   153,  1302,
-     448,   449,   219,   720,   721,   722,   723,  1148,  1149,   450,
-    1219,  1220,  1221,  1222,   236,   534,   451,   282,   224,   851,
-     858,   452,   859,   456,   296,   279,   243,   457,   458,   466,
-     276,   467,   468,   289,   316,  1248,  1249,  1250,   478,   152,
-     300,   485,   237,   488,   338,   492,   500,   501,   511,   357,
-     318,   513,   514,   359,   244,   245,   360,   246,   247,   248,
-     352,   225,   529,   533,   535,   370,   537,   538,   539,   394,
-     339,   238,   540,   277,   545,   358,   290,   548,   550,   551,
-     554,   555,   563,   301,   568,   395,   569,   570,   571,   274,
-     572,   573,   285,   319,   574,   575,   152,   239,   152,   299,
-     576,   240,   577,   353,   249,   241,   127,   128,   371,   317,
-     584,   590,   596,   578,   597,   579,   580,   581,   242,   250,
-     582,   583,   251,   252,   585,   586,   253,   587,   396,   588,
-     589,   591,   592,   598,   254,   593,   594,   255,   595,   256,
-     257,   258,   599,   602,   259,   600,   601,   260,   603,   604,
-     605,   268,   606,   607,   269,   270,   608,   271,   612,   609,
-     610,   283,   611,   284,   613,   614,   615,   616,   297,   617,
-     298,   379,   380,   381,   382,   383,   384,   385,   386,   387,
-     388,   389,   390,   391,   618,   619,   620,   621,   622,   623,
-     624,   392,   393,   625,   626,   627,   628,   629,   630,   632,
-     635,   633,   636,   637,   638,   639,   153,   640,   642,   219,
-     641,   643,   644,   646,   648,   649,   650,   651,   652,   152,
-     654,   655,   656,   657,   658,   224,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-     659,   660,   899,   913,   923,   662,   394,   663,   665,   664,
-     947,   666,   667,   670,   674,   675,   668,   671,   901,   919,
-     924,   934,   395,   672,   677,   678,   782,   679,   225,    97,
+     154,   221,   238,   284,   298,   318,    38,   340,   359,   376,
+     396,   904,   361,   281,   245,   362,   834,   226,   278,   291,
+     302,   320,   864,   354,   372,  1131,   397,  1132,  1133,  1140,
+     239,  1146,   855,   341,   360,    31,   950,    32,    42,    33,
+     219,   220,   246,   247,   721,   248,   249,   250,    30,   128,
+     129,   153,   374,   375,    44,   709,   710,   711,   712,   240,
+     227,   279,   292,   303,   321,    46,   355,   373,    86,   398,
+      97,    98,    99,   100,   101,   102,   312,   276,   287,   301,
+     319,   492,   753,   964,  1010,   241,   493,  1011,  1013,   242,
+     713,  1014,   251,   243,   759,   760,   761,   496,   125,   334,
+     898,    89,   497,   914,   915,   916,   244,   252,   333,   795,
+     253,   254,  1019,   721,   255,  1020,   422,   856,   128,   129,
+     128,   129,   256,   128,   129,   257,   508,   258,   259,   260,
+     153,   509,   261,   511,  1059,   262,    48,  1060,   512,   270,
+    1152,  1153,   271,   272,    50,   273,   518,   285,   299,   286,
+     300,   519,    91,    92,   374,   375,    93,   128,   129,    94,
+      95,    96,   153,   546,   334,    52,   335,   336,   547,   563,
+     337,   338,   339,   567,   564,   128,   129,   124,   568,    54,
+     492,   925,   926,   128,   129,   969,  1252,  1253,  1254,    97,
       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   681,   684,   685,   688,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   689,   686,   125,   680,   687,
-     690,   902,   920,   925,   935,   396,   682,   683,   226,   691,
-     227,   693,   694,   697,   696,   699,   127,   128,   228,   229,
-     230,   231,   232,   129,   698,   700,   701,   702,   130,   131,
-     132,   703,   704,   711,   712,   713,   714,   233,   715,   716,
-     234,   138,    32,   719,   725,   726,   727,   776,   235,   728,
-     729,   730,   731,   993,   865,   732,   733,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     734,   735,   736,   737,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   738,   125,   332,   739,   740,   741,
-     742,   744,   745,   781,  1077,   746,   747,   751,   831,   835,
-     748,   147,   148,   839,   127,   128,   843,   229,   230,   847,
-     232,   129,   869,   750,   752,   872,   130,   131,   132,   753,
-     876,   754,   758,   759,   943,   233,   952,   956,   234,   152,
-     760,   761,   762,   763,   764,   765,   235,   766,   767,   768,
-     770,   771,   772,   778,   972,   973,   779,   780,   974,   975,
-     976,   978,   979,   984,   985,   986,   987,  1079,   996,   992,
-     995,   999,   998,  1001,  1002,  1004,  1005,  1060,  1008,  1019,
-    1018,  1021,  1022,  1064,  1023,  1024,  1025,  1026,  1027,  1028,
-    1033,  1034,  1035,  1038,  1039,  1040,  1047,  1049,  1057,   147,
-     148,  1065,  1067,  1068,  1076,  1070,  1072,  1071,  1073,  1074,
-    1075,  1078,  1080,   236,  1081,  1084,   338,  1082,  1083,   357,
-    1085,  1086,  1101,   359,   279,   243,   360,   152,  1087,   276,
-    1088,  1089,   352,  1150,  1108,   370,   316,  1090,  1140,   374,
-    1091,   237,   339,  1146,  1172,   358,  1173,  1174,  1126,  1159,
-    1102,  1175,   318,   244,   245,   899,   246,   247,   248,  1157,
-     913,  1151,  1109,  1110,   923,  1111,  1112,  1113,  1179,  1180,
-     238,   901,   277,  1200,  1176,   353,   919,   947,   371,  1103,
-     924,  1141,   282,  1185,  1189,   296,   934,  1177,   274,  1202,
-    1152,  1181,  1160,  1182,  1183,   319,   239,  1139,   289,  1201,
-     240,   300,  1190,   249,   241,  1104,  1193,  1195,  1158,  1105,
-    1192,   317,  1114,  1106,   902,  1210,  1153,   242,   250,   920,
-    1154,   251,   252,   925,  1155,   253,  1107,  1115,  1186,   935,
-    1116,  1117,  1203,   254,  1118,  1187,   255,  1156,   256,   257,
-     258,   290,  1119,   259,   301,  1120,   260,  1121,  1122,  1123,
-     268,  1194,  1124,   269,   270,  1125,   271,   285,  1212,  1132,
-     299,  1213,  1133,  1134,  1218,  1135,  1130,  1237,  1131,  1238,
-    1243,  1244,  1245,  1246,  1258,  1267,  1270,  1272,  1224,  1275,
-    1297,  1298,  1277,  1299,  1303,  1307,  1225,   769,   857,   783,
-    1094,  1092,   777,   785,  1147,  1144,   631,  1145,  1171,  1170,
-     964,  1178,  1188,  1226,   676,   634,  1096,  1227,  1095,  1143,
-    1266,  1232,   330,  1097,  1098,  1233,  1234,  1241,   645,   669,
-    1252,  1253,  1254,  1255,  1100,  1099,   283,  1262,   284,   297,
-    1265,   298,  1268,  1215,  1271,  1274,  1276,  1304,  1305,  1306,
-    1309,  1310,  1217,  1214,  1269,  1169,  1196,   961,  1168,  1216,
-    1167,  1191,   695,  1184,  1209,  1273,  1295,   942,  1101,   784,
-     647,  1308,     0,  1211,  1150,     0,     0,     0,     0,     0,
-    1108,     0,     0,     0,  1140,  1256,     0,   653,   673,  1200,
-    1159,     0,     0,     0,  1126,     0,  1102,     0,   661,     0,
-    1157,     0,  1151,     0,     0,  1202,     0,     0,  1109,  1110,
-       0,  1111,  1112,  1113,     0,  1201,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  1103,     0,  1141,     0,     0,
-       0,  1152,     0,  1160,   692,     0,     0,     0,     0,     0,
-       0,     0,     0,  1139,     0,     0,     0,     0,  1203,  1158,
-       0,  1104,     0,     0,     0,  1105,     0,  1153,  1114,  1106,
-       0,  1154,     0,     0,     0,  1155,     0,     0,     0,     0,
-       0,     0,  1107,  1115,     0,     0,  1116,  1117,  1156,     0,
-    1118,     0,     0,     0,     0,     0,     0,     0,  1119,     0,
-       0,  1120,     0,  1121,  1122,  1123,     0,     0,  1124,     0,
-       0,  1125,     0,     0,     0,  1132,     0,     0,  1133,  1134,
-       0,  1135,  1130,     0,  1131
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   934,   935,
+     936,   416,   417,   899,   900,   901,   902,   126,   127,   567,
+     496,   153,    56,   153,   970,   971,   153,   128,   129,    34,
+      35,    36,    37,   992,   130,  1232,  1233,  1234,   993,   131,
+     132,   133,   134,   135,   136,   137,   334,   138,    58,   125,
+      60,  1131,   139,  1132,  1133,  1140,  1285,  1146,   992,  1286,
+     937,   140,   283,   994,   141,   128,   129,   777,   778,   128,
+     129,   142,   884,   885,   886,   887,   888,   889,   153,   143,
+     144,   125,    62,  1016,   145,    64,   153,   146,  1017,   423,
+     235,   147,    66,   236,   864,  1097,   293,   294,   295,   296,
+     297,   128,   129,  1287,   904,  1033,  1288,  1289,  1290,  1291,
+    1034,  1040,   148,   149,   150,   151,  1041,   424,   125,   425,
+     426,   790,   235,   428,   152,   236,   791,   792,   793,   794,
+     795,   796,   797,   798,   799,   800,   801,   802,   128,   129,
+     153,   803,   804,   805,   806,   807,   808,   809,  1045,   527,
+    1049,   529,   435,  1046,  1201,  1050,  1202,  1203,   311,   436,
+     724,   725,   726,   727,   312,   313,   314,   315,   316,   317,
+     437,   334,   356,   335,   336,   357,   358,   334,   153,  1055,
+     563,  1062,   153,   992,  1056,  1057,  1063,   508,  1239,  1243,
+     128,   129,  1240,   546,  1244,  1264,   511,   518,  1251,   528,
+    1265,  1267,  1268,   569,   570,  1305,   855,   862,   438,   863,
+    1306,   154,   439,   440,   153,   221,   441,  1223,  1224,  1225,
+    1226,   442,   443,   444,   445,   446,   447,   238,   448,   450,
+     284,   226,   451,   452,   453,   454,   458,   298,   281,   245,
+     459,   460,   464,   278,   469,   470,   291,   318,   471,   481,
+     488,   153,   491,   302,   495,   239,   503,   340,   504,   514,
+     516,   517,   359,   320,   532,   536,   361,   246,   247,   362,
+     248,   249,   250,   354,   227,   537,   538,   542,   372,   540,
+     541,   543,   396,   341,   240,   548,   279,   551,   360,   292,
+     553,   554,   557,   558,   566,   572,   303,   571,   397,   573,
+     574,   575,   276,   153,   576,   287,   321,   577,   578,   153,
+     241,   579,   301,   580,   242,   581,   355,   251,   243,   128,
+     129,   373,   319,   588,   582,   593,   583,   599,   584,   585,
+     586,   244,   252,   587,   589,   253,   254,   590,   591,   255,
+     592,   398,   594,   595,   600,   601,   596,   256,   597,   598,
+     257,   602,   258,   259,   260,   605,   603,   261,   604,   606,
+     262,   607,   608,   609,   270,   610,   611,   271,   272,   612,
+     273,   613,   614,   615,   285,   616,   286,   617,   618,   619,
+     620,   299,   621,   300,   381,   382,   383,   384,   385,   386,
+     387,   388,   389,   390,   391,   392,   393,   622,   623,   624,
+     626,   625,   627,   628,   394,   395,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+     154,   629,   630,   221,   631,   632,   633,   634,   636,   639,
+     640,   641,   153,   642,   643,   646,   647,   644,   637,   226,
+     648,   650,   652,   654,   653,   645,   658,   659,   660,   655,
+     661,   662,   656,   663,   664,   666,   903,   917,   927,   667,
+     396,   668,   669,   670,   951,   671,   674,   678,   679,   682,
+     672,   675,   905,   923,   928,   938,   397,   676,   681,   683,
+     786,   684,   227,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   685,   688,   689,   692,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   686,
+     690,   125,   687,   691,   693,   906,   924,   929,   939,   398,
+     694,   695,   697,   228,   698,   229,   701,   700,   702,   707,
+     717,   128,   129,   230,   231,   232,   233,   234,   130,   703,
+     704,   705,   706,   131,   132,   133,   708,   715,   716,   718,
+     719,   720,   235,   723,    32,   236,   139,   729,   730,   731,
+     780,   733,   732,   237,   734,   735,   997,   742,   736,   737,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   738,   739,   740,   741,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   743,   125,   334,
+     744,   745,   746,   748,   749,   869,   750,   755,   785,   751,
+     752,   754,   756,   757,   758,   762,   148,   149,   128,   129,
+     763,   231,   232,   764,   234,   130,   835,   839,   765,   843,
+     131,   132,   133,   847,   851,   873,   876,   766,   880,   235,
+     947,   956,   236,   767,   153,   960,   976,   977,   978,   768,
+     237,   979,   980,   982,   769,   983,   988,   770,   989,   990,
+     991,   771,   772,   774,   996,   775,   776,   999,  1000,   782,
+    1002,  1003,  1005,  1006,   773,   783,   784,  1008,  1009,  1012,
+    1022,  1023,  1025,  1026,  1080,  1027,  1028,  1029,  1030,  1031,
+    1032,  1037,  1038,  1039,  1042,  1043,  1044,  1051,  1053,  1061,
+    1064,  1069,  1068,   148,   149,  1071,  1072,  1075,  1074,  1076,
+    1077,  1078,  1079,  1081,  1082,  1083,  1084,   238,  1085,  1086,
+     340,  1087,  1088,   359,  1089,  1090,  1105,   361,   281,   245,
+     362,   153,  1091,   278,  1150,  1183,   354,  1154,  1112,   372,
+     318,  1092,  1144,   376,  1184,   239,   341,  1093,  1094,   360,
+    1095,  1176,  1130,  1163,  1106,  1189,   320,   246,   247,   903,
+     248,   249,   250,  1161,   917,  1155,  1113,  1114,   927,  1115,
+    1116,  1117,  1193,  1194,   240,   905,   279,  1204,  1177,   355,
+     923,   951,   373,  1107,   928,  1145,   284,  1196,  1197,   298,
+     938,  1178,   276,  1206,  1156,  1179,  1164,  1180,  1181,   321,
+     241,  1143,   291,  1205,   242,   302,  1185,   251,   243,  1108,
+    1199,  1186,  1162,  1109,  1187,   319,  1118,  1110,   906,  1190,
+    1157,   244,   252,   924,  1158,   253,   254,   929,  1159,   255,
+    1111,  1119,  1216,   939,  1120,  1121,  1207,   256,  1122,  1217,
+     257,  1160,   258,   259,   260,   292,  1123,   261,   303,  1124,
+     262,  1125,  1126,  1127,   270,  1191,  1128,   271,   272,  1129,
+     273,   287,  1214,  1136,   301,  1222,  1137,  1138,  1228,  1139,
+    1134,  1229,  1135,  1198,  1241,  1242,  1230,  1247,  1231,  1248,
+    1249,  1236,  1250,  1262,  1271,  1274,  1237,  1276,  1238,  1279,
+    1301,  1302,  1281,  1303,  1307,  1311,  1096,   861,   787,   635,
+    1098,  1151,   781,   789,   638,  1148,  1245,   968,  1175,  1149,
+    1174,  1256,  1192,  1257,   680,  1100,  1182,   649,  1258,  1259,
+    1266,  1269,  1099,  1147,  1278,  1272,  1275,  1270,  1280,  1308,
+     285,  1313,   286,   299,  1309,   300,  1310,   332,  1314,  1102,
+    1101,  1104,  1219,  1218,  1103,  1173,  1221,  1172,   673,  1220,
+    1273,   657,   651,   965,  1195,   677,  1171,  1200,  1188,   699,
+    1213,  1277,  1105,  1299,  1312,   788,     0,     0,  1154,  1215,
+       0,     0,     0,     0,  1112,     0,   946,     0,  1144,  1260,
+       0,     0,     0,  1204,  1163,     0,     0,     0,  1130,     0,
+    1106,     0,     0,     0,  1161,     0,  1155,   665,     0,  1206,
+       0,     0,  1113,  1114,     0,  1115,  1116,  1117,     0,  1205,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1107,
+       0,  1145,     0,     0,     0,  1156,     0,  1164,     0,     0,
+       0,   696,     0,     0,     0,     0,     0,  1143,     0,     0,
+       0,     0,  1207,  1162,     0,  1108,     0,     0,     0,  1109,
+       0,  1157,  1118,  1110,     0,  1158,     0,     0,     0,  1159,
+       0,     0,     0,     0,     0,     0,  1111,  1119,     0,     0,
+    1120,  1121,  1160,     0,  1122,     0,     0,     0,     0,     0,
+       0,     0,  1123,     0,     0,  1124,     0,  1125,  1126,  1127,
+       0,     0,  1128,     0,     0,  1129,     0,     0,     0,  1136,
+       0,     0,  1137,  1138,     0,  1139,  1134,     0,  1135
   };
 
   const short
   Dhcp6Parser::yycheck_[] =
   {
       71,    72,    73,    74,    75,    76,    16,    78,    79,    80,
-      81,   733,    79,    73,    73,    79,   702,    72,    73,    74,
-      75,    76,   727,    78,    79,  1003,    81,  1003,  1003,  1003,
-      73,  1003,    76,    78,    79,     5,   123,     7,    21,     9,
-      16,    17,    73,    73,    88,    73,    73,    73,   121,    95,
-      96,    95,    96,   193,   606,   128,    21,    13,    14,    73,
-      72,    73,    74,    75,    76,    30,    78,    79,   208,    81,
-       3,     3,   116,     6,   642,   119,     8,    73,    74,    75,
-      76,   130,   131,   130,   131,    73,   654,   655,   656,    73,
-       3,     0,    73,    73,    77,     8,    79,    80,   173,   174,
-      83,    84,    85,   149,   150,   151,    73,    73,     7,     7,
-      73,    73,    95,    96,    73,     7,    95,    96,     7,    95,
-      96,   208,    73,   675,     7,    73,     7,    73,    73,    73,
-      95,    96,    73,     3,     3,    73,     3,     6,     8,    73,
-     208,     8,    73,    73,     7,    73,     7,    74,    75,    74,
-      75,    11,    12,     3,     3,    15,     6,     6,    18,    19,
-      20,   208,   208,     7,   208,    77,    78,    79,    80,    81,
-      82,     3,     3,     7,   153,   154,     8,     8,   143,   144,
-     145,   146,     3,    95,    96,     7,    10,     8,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,     7,     3,   176,
-     177,   178,   179,     8,     3,   208,    86,     6,     3,   208,
-       7,     3,   208,     8,    75,    95,    96,     6,   208,   209,
-     210,   211,   102,   208,    38,    39,    40,   107,   108,   109,
-     110,   111,   112,   113,   211,   115,    95,    96,    77,     4,
-     120,  1239,     8,  1239,  1239,  1239,    76,  1239,     3,   129,
-       3,     3,   132,     8,     8,     8,    95,    96,     4,   139,
-      90,    91,    92,    93,    94,    95,    96,   147,   148,     3,
-       8,     4,   152,     3,     8,   155,   208,   185,     8,   159,
-     188,   189,   190,   191,  1009,   991,   116,     3,     3,   119,
-       3,     8,     8,     8,  1036,     8,     4,   156,   157,   158,
-     180,   181,   182,   183,     3,     3,     3,    76,     3,    21,
-       8,     8,   192,     8,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    95,    96,   208,    41,
-      42,    43,    44,    45,    46,    47,     4,     4,    48,    49,
-      50,    51,    52,    53,     4,   184,   115,   186,   187,   208,
-       4,     4,   121,   122,   123,   124,   125,   126,   133,   134,
-     135,   136,   137,   138,     4,    77,    76,    77,     3,   208,
-       3,     3,     3,     8,     3,     8,     8,     8,   208,     8,
-       4,     4,     3,     3,     3,    95,    96,     8,     8,     8,
-       3,   421,   422,     4,     3,     8,     4,     4,   489,     8,
-       4,     4,   493,   103,   104,   105,   106,   117,   118,     4,
-      22,    23,    24,    25,   505,     8,     4,   508,   493,   123,
-     124,     4,   126,     4,   515,   505,   505,     4,     4,     4,
-     505,     4,     4,   508,   525,   140,   141,   142,     4,   208,
-     515,     4,   505,     4,   535,     4,     4,     4,     4,   540,
-     525,     4,     4,   540,   505,   505,   540,   505,   505,   505,
-     535,   493,     4,     4,     3,   540,     4,     4,     8,   560,
-     535,   505,     3,   505,     4,   540,   508,     4,     4,     4,
-       4,     4,     4,   515,   208,   560,     4,     4,     4,   505,
-       4,     4,   508,   525,     4,     4,   208,   505,   208,   515,
-     209,   505,   209,   535,   505,   505,    95,    96,   540,   525,
-     211,     4,     4,   209,     4,   209,   209,   209,   505,   505,
-     209,   209,   505,   505,   210,   210,   505,   210,   560,   209,
-     209,   209,   209,     4,   505,   211,   211,   505,   211,   505,
-     505,   505,   211,     4,   505,   211,   211,   505,     4,     4,
-       4,   505,     4,     4,   505,   505,     4,   505,     4,   211,
-     211,   508,   211,   508,     4,     4,     4,     4,   515,     4,
-     515,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,     4,     4,     4,   209,     4,     4,
-       4,   180,   181,     4,     4,     4,   211,     4,     4,     4,
-       4,   211,     4,     4,     4,     4,   697,   209,     4,   700,
-     211,     4,     4,     4,     4,   209,     4,   209,   209,   208,
-       4,     4,     4,     4,     4,   700,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-       4,     4,   733,   734,   735,     4,   737,     4,     4,   209,
-     741,     4,     4,     4,     4,     4,   211,   211,   733,   734,
-     735,   736,   737,   211,   211,     4,   696,     4,   700,    48,
+      81,   737,    79,    73,    73,    79,   706,    72,    73,    74,
+      75,    76,   731,    78,    79,  1007,    81,  1007,  1007,  1007,
+      73,  1007,   124,    78,    79,     5,   194,     7,     7,     9,
+      16,    17,    73,    73,   610,    73,    73,    73,     0,    96,
+      97,   209,   131,   132,     7,   177,   178,   179,   180,    73,
+      72,    73,    74,    75,    76,     7,    78,    79,   209,    81,
+      48,    49,    50,    51,    52,    53,   122,    73,    74,    75,
+      76,     3,   646,   129,     3,    73,     8,     6,     3,    73,
+     212,     6,    73,    73,   658,   659,   660,     3,    76,    77,
+      21,    10,     8,   150,   151,   152,    73,    73,    21,    30,
+      73,    73,     3,   679,    73,     6,     6,   209,    96,    97,
+      96,    97,    73,    96,    97,    73,     3,    73,    73,    73,
+     209,     8,    73,     3,     3,    73,     7,     6,     8,    73,
+     118,   119,    73,    73,     7,    73,     3,    74,    75,    74,
+      75,     8,    11,    12,   131,   132,    15,    96,    97,    18,
+      19,    20,   209,     3,    77,     7,    79,    80,     8,     3,
+      83,    84,    85,     3,     8,    96,    97,    75,     8,     7,
+       3,   154,   155,    96,    97,     8,   141,   142,   143,    48,
       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,     4,     4,     4,     4,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,     4,   211,    76,   209,   211,
-       4,   733,   734,   735,   736,   737,   209,   209,    87,     4,
-      89,     4,   209,     7,     4,     7,    95,    96,    97,    98,
-      99,   100,   101,   102,   208,     7,     7,     7,   107,   108,
-     109,     5,   208,   208,   208,     5,     5,   116,     5,     5,
-     119,   120,     7,   208,     5,     5,     5,   175,   127,     7,
-       5,     5,     5,     3,   114,     7,     7,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-       7,     7,     7,     7,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,   208,    76,    77,   208,     5,     7,
-       5,     5,     5,     5,   211,   208,   208,     7,     7,     7,
-     208,   180,   181,     7,    95,    96,     7,    98,    99,     7,
-     101,   102,     7,   208,   208,     7,   107,   108,   109,   208,
-       7,   208,   208,   208,     7,   116,     7,     7,   119,   208,
-     208,   208,   208,   208,   208,   208,   127,   208,   208,   208,
-     208,   208,   208,   208,     4,     4,   208,   208,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   211,     3,     6,
-       6,     3,     6,     6,     3,     6,     3,   208,     6,     3,
-       6,     6,     3,     6,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   180,
-     181,     3,     6,     3,   209,     8,     4,     6,     4,     4,
-       4,   209,   209,   994,     4,     4,   997,   209,   209,  1000,
-       4,     4,  1003,  1000,   994,   994,  1000,   208,     4,   994,
-     209,   209,   997,  1014,  1003,  1000,  1017,   211,  1003,  1020,
-     209,   994,   997,     4,   209,  1000,   209,   209,  1003,  1014,
-    1003,   209,  1017,   994,   994,  1036,   994,   994,   994,  1014,
-    1041,  1014,  1003,  1003,  1045,  1003,  1003,  1003,     4,     4,
-     994,  1036,   994,  1054,   209,   997,  1041,  1058,  1000,  1003,
-    1045,  1003,  1063,   211,     4,  1066,  1051,   209,   994,  1054,
-    1014,   209,  1014,   209,   209,  1017,   994,  1003,  1063,  1054,
-     994,  1066,     4,   994,   994,  1003,     4,     4,  1014,  1003,
-     211,  1017,  1003,  1003,  1036,   211,  1014,   994,   994,  1041,
-    1014,   994,   994,  1045,  1014,   994,  1003,  1003,   209,  1051,
-    1003,  1003,  1054,   994,  1003,   209,   994,  1014,   994,   994,
-     994,  1063,  1003,   994,  1066,  1003,   994,  1003,  1003,  1003,
-     994,   209,  1003,   994,   994,  1003,   994,  1063,     6,  1003,
-    1066,     3,  1003,  1003,     4,  1003,  1003,     8,  1003,     8,
-       4,     8,     3,     8,     4,     4,     4,     4,   208,     5,
-       4,     4,     7,     4,     4,     4,   208,   675,   726,   697,
-     993,   988,   688,   700,  1012,  1006,   489,  1009,  1022,  1020,
-     781,  1029,  1041,   208,   543,   493,   996,   208,   994,  1005,
-    1239,   208,    77,   997,   999,   208,   208,   208,   505,   535,
-     208,   208,   208,   208,  1002,  1000,  1063,   208,  1063,  1066,
-     208,  1066,   211,  1065,   209,   208,   208,   211,   209,   209,
-     208,   208,  1068,  1063,  1245,  1019,  1051,   751,  1017,  1066,
-    1015,  1045,   564,  1036,  1055,  1260,  1281,   737,  1239,   699,
-     508,  1301,    -1,  1058,  1245,    -1,    -1,    -1,    -1,    -1,
-    1239,    -1,    -1,    -1,  1239,  1195,    -1,   515,   540,  1260,
-    1245,    -1,    -1,    -1,  1239,    -1,  1239,    -1,   525,    -1,
-    1245,    -1,  1245,    -1,    -1,  1260,    -1,    -1,  1239,  1239,
-      -1,  1239,  1239,  1239,    -1,  1260,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1239,    -1,  1239,    -1,    -1,
-      -1,  1245,    -1,  1245,   560,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1239,    -1,    -1,    -1,    -1,  1260,  1245,
-      -1,  1239,    -1,    -1,    -1,  1239,    -1,  1245,  1239,  1239,
-      -1,  1245,    -1,    -1,    -1,  1245,    -1,    -1,    -1,    -1,
-      -1,    -1,  1239,  1239,    -1,    -1,  1239,  1239,  1245,    -1,
-    1239,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1239,    -1,
-      -1,  1239,    -1,  1239,  1239,  1239,    -1,    -1,  1239,    -1,
-      -1,  1239,    -1,    -1,    -1,  1239,    -1,    -1,  1239,  1239,
-      -1,  1239,  1239,    -1,  1239
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,   157,   158,
+     159,    13,    14,   144,   145,   146,   147,    86,    87,     3,
+       3,   209,     7,   209,     8,     8,   209,    96,    97,   209,
+     210,   211,   212,     3,   103,    38,    39,    40,     8,   108,
+     109,   110,   111,   112,   113,   114,    77,   116,     7,    76,
+       7,  1243,   121,  1243,  1243,  1243,     3,  1243,     3,     6,
+     209,   130,    89,     8,   133,    96,    97,   174,   175,    96,
+      97,   140,   134,   135,   136,   137,   138,   139,   209,   148,
+     149,    76,     7,     3,   153,     7,   209,   156,     8,     3,
+     117,   160,     7,   120,  1013,   995,    91,    92,    93,    94,
+      95,    96,    97,   186,  1040,     3,   189,   190,   191,   192,
+       8,     3,   181,   182,   183,   184,     8,     4,    76,     8,
+       3,    21,   117,     8,   193,   120,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    96,    97,
+     209,    41,    42,    43,    44,    45,    46,    47,     3,     8,
+       3,     8,     4,     8,   185,     8,   187,   188,   116,     4,
+     104,   105,   106,   107,   122,   123,   124,   125,   126,   127,
+       4,    77,    78,    79,    80,    81,    82,    77,   209,     3,
+       3,     3,   209,     3,     8,     8,     8,     3,     8,     3,
+      96,    97,     8,     3,     8,     3,     3,     3,     8,     3,
+       8,     8,     8,   423,   424,     3,   124,   125,     4,   127,
+       8,   492,     4,     4,   209,   496,     4,    22,    23,    24,
+      25,     4,     4,     4,     4,     4,     4,   508,     4,     4,
+     511,   496,     4,     4,     4,     4,     4,   518,   508,   508,
+       4,     4,     4,   508,     4,     4,   511,   528,     4,     4,
+       4,   209,     4,   518,     4,   508,     4,   538,     4,     4,
+       4,     4,   543,   528,     4,     4,   543,   508,   508,   543,
+     508,   508,   508,   538,   496,     8,     3,     8,   543,     4,
+       4,     3,   563,   538,   508,     4,   508,     4,   543,   511,
+       4,     4,     4,     4,     4,     4,   518,   209,   563,     4,
+       4,     4,   508,   209,     4,   511,   528,     4,     4,   209,
+     508,   210,   518,   210,   508,   210,   538,   508,   508,    96,
+      97,   543,   528,   211,   210,     4,   210,     4,   210,   210,
+     210,   508,   508,   212,   211,   508,   508,   211,   210,   508,
+     210,   563,   210,   210,     4,     4,   212,   508,   212,   212,
+     508,   212,   508,   508,   508,     4,   212,   508,   212,     4,
+     508,     4,   210,     4,   508,     4,     4,   508,   508,     4,
+     508,   212,   212,   212,   511,     4,   511,     4,     4,     4,
+       4,   518,     4,   518,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,     4,     4,     4,
+       4,   210,     4,     4,   181,   182,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     701,     4,     4,   704,     4,   212,     4,     4,     4,     4,
+       4,     4,   209,     4,     4,     4,     4,   210,   212,   704,
+       4,     4,     4,     4,   210,   212,     4,     4,     4,   210,
+       4,     4,   210,     4,     4,     4,   737,   738,   739,     4,
+     741,   210,     4,     4,   745,     4,     4,     4,     4,     4,
+     212,   212,   737,   738,   739,   740,   741,   212,   212,     4,
+     700,   210,   704,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,     4,     4,     4,     4,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,   210,
+     212,    76,   210,   212,     4,   737,   738,   739,   740,   741,
+       4,     4,     4,    88,   210,    90,     7,     4,   209,     5,
+       5,    96,    97,    98,    99,   100,   101,   102,   103,     7,
+       7,     7,     7,   108,   109,   110,   209,   209,   209,     5,
+       5,     5,   117,   209,     7,   120,   121,     5,     5,     5,
+     176,     5,     7,   128,     5,     5,     3,   209,     7,     7,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,     7,     7,     7,     7,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,   209,    76,    77,
+       5,     7,     5,     5,     5,   115,   209,     7,     5,   209,
+     209,   209,   209,   209,   209,   209,   181,   182,    96,    97,
+     209,    99,   100,   209,   102,   103,     7,     7,   209,     7,
+     108,   109,   110,     7,     7,     7,     7,   209,     7,   117,
+       7,     7,   120,   209,   209,     7,     4,     4,     4,   209,
+     128,     4,     4,     4,   209,     4,     4,   209,     4,     4,
+       4,   209,   209,   209,     6,   209,   209,     6,     3,   209,
+       6,     3,     6,     3,   679,   209,   209,     6,     3,     6,
+       6,     3,     6,     3,   210,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     209,     3,     6,   181,   182,     6,     3,     6,     8,     4,
+       4,     4,     4,   212,   210,   212,   210,   998,     4,   210,
+    1001,   210,     4,  1004,     4,     4,  1007,  1004,   998,   998,
+    1004,   209,     4,   998,     4,     4,  1001,  1018,  1007,  1004,
+    1021,   210,  1007,  1024,     4,   998,  1001,   210,   212,  1004,
+     210,   210,  1007,  1018,  1007,   212,  1021,   998,   998,  1040,
+     998,   998,   998,  1018,  1045,  1018,  1007,  1007,  1049,  1007,
+    1007,  1007,     4,     4,   998,  1040,   998,  1058,   210,  1001,
+    1045,  1062,  1004,  1007,  1049,  1007,  1067,   212,     4,  1070,
+    1055,   210,   998,  1058,  1018,   210,  1018,   210,   210,  1021,
+     998,  1007,  1067,  1058,   998,  1070,   210,   998,   998,  1007,
+       4,   210,  1018,  1007,   210,  1021,  1007,  1007,  1040,   210,
+    1018,   998,   998,  1045,  1018,   998,   998,  1049,  1018,   998,
+    1007,  1007,     6,  1055,  1007,  1007,  1058,   998,  1007,     3,
+     998,  1018,   998,   998,   998,  1067,  1007,   998,  1070,  1007,
+     998,  1007,  1007,  1007,   998,   210,  1007,   998,   998,  1007,
+     998,  1067,   212,  1007,  1070,     4,  1007,  1007,   209,  1007,
+    1007,   209,  1007,   210,     8,     8,   209,     4,   209,     8,
+       3,   209,     8,     4,     4,     4,   209,     4,   209,     5,
+       4,     4,     7,     4,     4,     4,   992,   730,   701,   492,
+     997,  1016,   692,   704,   496,  1010,   209,   785,  1026,  1013,
+    1024,   209,  1045,   209,   546,  1000,  1033,   508,   209,   209,
+     209,   209,   998,  1009,   209,   212,   210,  1243,   209,   212,
+    1067,   209,  1067,  1070,   210,  1070,   210,    77,   209,  1003,
+    1001,  1006,  1069,  1067,  1004,  1023,  1072,  1021,   538,  1070,
+    1249,   518,   511,   755,  1049,   543,  1019,  1055,  1040,   567,
+    1059,  1264,  1243,  1285,  1305,   703,    -1,    -1,  1249,  1062,
+      -1,    -1,    -1,    -1,  1243,    -1,   741,    -1,  1243,  1199,
+      -1,    -1,    -1,  1264,  1249,    -1,    -1,    -1,  1243,    -1,
+    1243,    -1,    -1,    -1,  1249,    -1,  1249,   528,    -1,  1264,
+      -1,    -1,  1243,  1243,    -1,  1243,  1243,  1243,    -1,  1264,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1243,
+      -1,  1243,    -1,    -1,    -1,  1249,    -1,  1249,    -1,    -1,
+      -1,   563,    -1,    -1,    -1,    -1,    -1,  1243,    -1,    -1,
+      -1,    -1,  1264,  1249,    -1,  1243,    -1,    -1,    -1,  1243,
+      -1,  1249,  1243,  1243,    -1,  1249,    -1,    -1,    -1,  1249,
+      -1,    -1,    -1,    -1,    -1,    -1,  1243,  1243,    -1,    -1,
+    1243,  1243,  1249,    -1,  1243,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1243,    -1,    -1,  1243,    -1,  1243,  1243,  1243,
+      -1,    -1,  1243,    -1,    -1,  1243,    -1,    -1,    -1,  1243,
+      -1,    -1,  1243,  1243,    -1,  1243,  1243,    -1,  1243
   };
 
-  const short
+  const unsigned short
   Dhcp6Parser::yystos_[] =
   {
-       0,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-       0,     5,     7,     9,   208,   209,   210,   211,   228,   229,
-     230,   235,     7,   244,     7,   248,     7,   292,     7,   401,
-       7,   481,     7,   497,     7,   514,     7,   433,     7,   439,
-       7,   463,     7,   377,     7,   583,     7,   614,   236,   231,
-     245,   249,   293,   402,   482,   498,   515,   434,   440,   464,
-     378,   584,   615,   228,   237,   238,   208,   233,   234,    10,
-     246,    11,    12,    15,    18,    19,    20,    48,    49,    50,
+       0,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+       0,     5,     7,     9,   209,   210,   211,   212,   229,   230,
+     231,   236,     7,   245,     7,   249,     7,   294,     7,   403,
+       7,   483,     7,   499,     7,   516,     7,   435,     7,   441,
+       7,   465,     7,   379,     7,   585,     7,   616,   237,   232,
+     246,   250,   295,   404,   484,   500,   517,   436,   442,   466,
+     380,   586,   617,   229,   238,   239,   209,   234,   235,    10,
+     247,    11,    12,    15,    18,    19,    20,    48,    49,    50,
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    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,   192,   208,   243,   250,   251,   252,   254,   255,   256,
+      71,    72,    73,    74,    75,    76,    86,    87,    96,    97,
+     103,   108,   109,   110,   111,   112,   113,   114,   116,   121,
+     130,   133,   140,   148,   149,   153,   156,   160,   181,   182,
+     183,   184,   193,   209,   244,   251,   252,   253,   255,   256,
      257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   274,   276,   278,   279,   280,
-     282,   284,   285,   286,   287,   289,   290,   299,   301,   303,
-     344,   350,   356,   362,   364,   371,   385,   395,   415,   416,
-     417,   418,   423,   431,   457,   487,   489,   508,   538,   550,
-     562,   563,   571,   581,   612,   621,   645,    16,    17,   243,
-     294,   295,   296,   298,   487,   489,    87,    89,    97,    98,
-      99,   100,   101,   116,   119,   127,   243,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     268,   269,   270,   271,   274,   276,   278,   279,   280,   282,
-     284,   403,   404,   405,   407,   409,   411,   413,   415,   416,
-     417,   418,   421,   422,   457,   475,   487,   489,   491,   508,
-     533,    88,   243,   411,   413,   457,   483,   484,   485,   487,
-     489,    90,    91,    92,    93,    94,   243,   411,   413,   457,
-     487,   489,   499,   500,   501,   503,   504,   506,   507,   115,
-     121,   122,   123,   124,   125,   126,   243,   457,   487,   489,
-     516,   517,   518,   519,   521,   523,   525,   527,   529,   531,
-     431,    21,    77,    79,    80,    83,    84,    85,   243,   321,
-     441,   442,   443,   444,   445,   446,   447,   449,   451,   453,
-     454,   456,   487,   489,    78,    81,    82,   243,   321,   445,
-     451,   465,   466,   467,   468,   469,   471,   472,   473,   474,
-     487,   489,   130,   131,   243,   379,   380,   381,   383,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   180,   181,   243,   487,   489,   585,   586,   587,
-     588,   590,   592,   593,   595,   596,   597,   600,   602,   603,
-     604,   606,   608,   610,    13,    14,   616,   617,   618,   620,
-       6,     3,     4,     8,     3,   247,     8,   253,   613,   291,
-     300,   302,   304,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   288,     4,     4,
-       4,     4,     4,   272,   275,   277,     4,     4,     4,   396,
-     432,   458,   424,   488,   490,   419,     4,     4,     4,   351,
-     363,   357,   345,   539,   509,   372,   386,   551,     4,   365,
-     564,   572,   582,   281,   283,     4,   622,   646,     4,     3,
-       8,   297,     4,     3,     8,   476,   492,   406,   408,   410,
-       4,     4,   414,   412,   534,     3,     8,   486,     3,     8,
-     502,     4,   505,     4,     4,     3,     8,   532,   520,   522,
-     524,   526,   528,   530,     8,     3,     8,   448,   322,     4,
-     452,   450,   455,     4,     8,     3,   470,     4,     4,     8,
-       3,   382,   384,     3,     8,     4,   589,   591,     4,   594,
-       4,     4,   598,   601,     4,     4,   605,   607,   609,   611,
-       3,     8,   619,     4,     3,     8,   228,   228,   208,     4,
-       4,     4,     4,     4,     4,     4,   209,   209,   209,   209,
-     209,   209,   209,   209,   211,   210,   210,   210,   209,   209,
-       4,   209,   209,   211,   211,   211,     4,     4,     4,   211,
-     211,   211,     4,     4,     4,     4,     4,     4,     4,   211,
-     211,   211,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   209,     4,     4,     4,     4,     4,     4,   211,     4,
-       4,   251,     4,   211,   295,     4,     4,     4,     4,     4,
-     209,   211,     4,     4,     4,   404,     4,   484,     4,   209,
-       4,   209,   209,   500,     4,     4,     4,     4,     4,     4,
-       4,   518,     4,     4,   209,     4,     4,     4,   211,   443,
-       4,   211,   211,   467,     4,     4,   380,   211,     4,     4,
-     209,     4,   209,   209,     4,     4,   211,   211,     4,     4,
-       4,     4,   586,     4,   209,   617,     4,     7,   208,     7,
-       7,     7,     7,     5,   208,   176,   177,   178,   179,   211,
-     273,   208,   208,     5,     5,     5,     5,   230,   232,   208,
-     103,   104,   105,   106,   420,     5,     5,     5,     7,     5,
-       5,     5,     7,     7,     7,     7,     7,     7,   208,   208,
-       5,     7,     5,   239,     5,     5,   208,   208,   208,   239,
-     208,     7,   208,   208,   208,   239,   239,   239,   208,   208,
-     208,   208,   208,   208,   208,   208,   208,   208,   208,   232,
-     208,   208,   208,   173,   174,   599,   175,   273,   208,   208,
-     208,     5,   228,   250,   616,   294,    21,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    41,
-      42,    43,    44,    45,    46,    47,   243,   309,   310,   311,
-     314,   316,   318,   320,   321,   323,   324,   325,   326,   327,
-     328,   331,   332,   333,   334,   335,   337,   338,   340,   342,
-     309,     7,   305,   306,   307,     7,   397,   398,   399,     7,
-     435,   436,   437,     7,   459,   460,   461,     7,   425,   426,
-     427,   123,   208,   352,   353,   354,   355,   237,   124,   126,
-     354,   358,   359,   360,   361,   114,   346,   347,   348,     7,
-     540,   541,     7,   510,   511,   512,     7,   373,   374,   375,
-     133,   134,   135,   136,   137,   138,   387,   388,   389,   390,
-     391,   392,   393,   394,    21,   143,   144,   145,   146,   243,
-     323,   487,   489,   552,   553,   554,   557,   558,   560,   561,
-     149,   150,   151,   243,   366,   367,   368,   369,   370,   487,
-     489,   153,   154,   243,   487,   489,   565,   566,   567,   569,
-     156,   157,   158,   208,   487,   489,   573,   574,   575,   576,
-     578,   579,   585,     7,   623,   624,   193,   243,   647,   648,
-     649,   240,     7,   477,   478,   479,     7,   493,   494,   495,
-     128,   519,   535,   536,   305,     8,     8,     8,   312,   315,
-     317,   319,     4,     4,     4,     4,     4,   336,     4,     4,
-     329,   339,   341,   343,     4,     4,     4,     4,     3,     8,
-       8,   308,     6,     3,   400,     6,     3,   438,     6,     3,
-     462,     6,     3,   428,     6,     3,     3,     6,     6,     3,
-       6,   349,     3,     8,   542,     3,     6,   513,     6,     3,
-     376,     6,     3,     4,     4,     4,     4,     4,     4,     3,
-       8,   555,   559,     4,     4,     4,     3,     8,     4,     4,
-       4,     3,     8,   568,   570,     3,     8,     4,   577,     4,
-     580,     3,     8,     8,   625,     3,     6,     4,     3,     8,
-     208,   241,   242,   480,     6,     3,   496,     6,     3,   537,
-       8,     6,     4,     4,     4,     4,   209,   211,   209,   211,
-     209,     4,   209,   209,     4,     4,     4,     4,   209,   209,
-     211,   209,   310,   309,   307,   403,   399,   441,   437,   465,
-     461,   243,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   268,   269,   270,   271,   274,
-     276,   278,   279,   280,   282,   284,   321,   395,   407,   409,
-     411,   413,   415,   416,   417,   418,   422,   429,   430,   457,
-     487,   489,   533,   427,   353,   359,     4,   347,   117,   118,
-     243,   254,   255,   256,   257,   258,   259,   321,   457,   487,
-     489,   543,   544,   545,   546,   547,   549,   541,   516,   512,
-     379,   375,   209,   209,   209,   209,   209,   209,   388,     4,
-       4,   209,   209,   209,   553,   211,   209,   209,   367,     4,
-       4,   566,   211,     4,   209,     4,   574,   184,   186,   187,
-     243,   321,   487,   489,   626,   627,   628,   629,   631,   624,
-     211,   648,     6,     3,   483,   479,   499,   495,     4,    22,
-      23,    24,    25,   313,   208,   208,   208,   208,    38,    39,
-      40,   330,   208,   208,   208,     8,     8,     8,     8,     3,
-       8,   208,   548,     4,     8,     3,     8,     8,   140,   141,
-     142,   556,   208,   208,   208,   208,   228,   632,     4,   630,
-       3,     8,   208,     8,     8,   208,   430,     4,   211,   545,
-       4,   209,     4,   627,   208,     5,   208,     7,   633,   634,
-     635,     3,     6,   185,   188,   189,   190,   191,   636,   637,
-     638,   640,   641,   642,   643,   634,   639,     4,     4,     4,
-     644,     3,     8,     4,   211,   209,   209,     4,   637,   208,
-     208
+     267,   268,   269,   270,   271,   272,   275,   277,   279,   280,
+     281,   283,   285,   286,   287,   288,   290,   291,   292,   301,
+     303,   305,   346,   352,   358,   364,   366,   373,   387,   397,
+     417,   418,   419,   420,   425,   433,   459,   489,   491,   510,
+     540,   552,   564,   565,   573,   583,   614,   623,   647,    16,
+      17,   244,   296,   297,   298,   300,   489,   491,    88,    90,
+      98,    99,   100,   101,   102,   117,   120,   128,   244,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   269,   270,   271,   272,   275,   277,   279,   280,
+     281,   283,   285,   405,   406,   407,   409,   411,   413,   415,
+     417,   418,   419,   420,   423,   424,   459,   477,   489,   491,
+     493,   510,   535,    89,   244,   413,   415,   459,   485,   486,
+     487,   489,   491,    91,    92,    93,    94,    95,   244,   413,
+     415,   459,   489,   491,   501,   502,   503,   505,   506,   508,
+     509,   116,   122,   123,   124,   125,   126,   127,   244,   459,
+     489,   491,   518,   519,   520,   521,   523,   525,   527,   529,
+     531,   533,   433,    21,    77,    79,    80,    83,    84,    85,
+     244,   323,   443,   444,   445,   446,   447,   448,   449,   451,
+     453,   455,   456,   458,   489,   491,    78,    81,    82,   244,
+     323,   447,   453,   467,   468,   469,   470,   471,   473,   474,
+     475,   476,   489,   491,   131,   132,   244,   381,   382,   383,
+     385,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   181,   182,   244,   489,   491,   587,
+     588,   589,   590,   592,   594,   595,   597,   598,   599,   602,
+     604,   605,   606,   608,   610,   612,    13,    14,   618,   619,
+     620,   622,     6,     3,     4,     8,     3,   248,     8,   254,
+     615,   293,   302,   304,   306,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,   289,
+       4,     4,     4,     4,     4,   273,   276,   278,     4,     4,
+       4,   398,   434,   460,     4,   426,   490,   492,   421,     4,
+       4,     4,   353,   365,   359,   347,   541,   511,   374,   388,
+     553,     4,   367,   566,   574,   584,   282,   284,     4,   624,
+     648,     4,     3,     8,   299,     4,     3,     8,   478,   494,
+     408,   410,   412,     4,     4,   416,   414,   536,     3,     8,
+     488,     3,     8,   504,     4,   507,     4,     4,     3,     8,
+     534,   522,   524,   526,   528,   530,   532,     8,     3,     8,
+     450,   324,     4,   454,   452,   457,     4,     8,     3,   472,
+       4,     4,     8,     3,   384,   386,     3,     8,     4,   591,
+     593,     4,   596,     4,     4,   600,   603,     4,     4,   607,
+     609,   611,   613,     3,     8,   621,     4,     3,     8,   229,
+     229,   209,     4,     4,     4,     4,     4,     4,     4,   210,
+     210,   210,   210,   210,   210,   210,   210,   212,   211,   211,
+     211,   210,   210,     4,   210,   210,   212,   212,   212,     4,
+       4,     4,   212,   212,   212,     4,     4,     4,   210,     4,
+       4,     4,     4,   212,   212,   212,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   210,     4,     4,     4,     4,
+       4,     4,   212,     4,     4,   252,     4,   212,   297,     4,
+       4,     4,     4,     4,   210,   212,     4,     4,     4,   406,
+       4,   486,     4,   210,     4,   210,   210,   502,     4,     4,
+       4,     4,     4,     4,     4,   520,     4,     4,   210,     4,
+       4,     4,   212,   445,     4,   212,   212,   469,     4,     4,
+     382,   212,     4,     4,   210,     4,   210,   210,     4,     4,
+     212,   212,     4,     4,     4,     4,   588,     4,   210,   619,
+       4,     7,   209,     7,     7,     7,     7,     5,   209,   177,
+     178,   179,   180,   212,   274,   209,   209,     5,     5,     5,
+       5,   231,   233,   209,   104,   105,   106,   107,   422,     5,
+       5,     5,     7,     5,     5,     5,     7,     7,     7,     7,
+       7,     7,   209,   209,     5,     7,     5,   240,     5,     5,
+     209,   209,   209,   240,   209,     7,   209,   209,   209,   240,
+     240,   240,   209,   209,   209,   209,   209,   209,   209,   209,
+     209,   209,   209,   233,   209,   209,   209,   174,   175,   601,
+     176,   274,   209,   209,   209,     5,   229,   251,   618,   296,
+      21,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    41,    42,    43,    44,    45,    46,    47,
+     244,   311,   312,   313,   316,   318,   320,   322,   323,   325,
+     326,   327,   328,   329,   330,   333,   334,   335,   336,   337,
+     339,   340,   342,   344,   311,     7,   307,   308,   309,     7,
+     399,   400,   401,     7,   437,   438,   439,     7,   461,   462,
+     463,     7,   427,   428,   429,   124,   209,   354,   355,   356,
+     357,   238,   125,   127,   356,   360,   361,   362,   363,   115,
+     348,   349,   350,     7,   542,   543,     7,   512,   513,   514,
+       7,   375,   376,   377,   134,   135,   136,   137,   138,   139,
+     389,   390,   391,   392,   393,   394,   395,   396,    21,   144,
+     145,   146,   147,   244,   325,   489,   491,   554,   555,   556,
+     559,   560,   562,   563,   150,   151,   152,   244,   368,   369,
+     370,   371,   372,   489,   491,   154,   155,   244,   489,   491,
+     567,   568,   569,   571,   157,   158,   159,   209,   489,   491,
+     575,   576,   577,   578,   580,   581,   587,     7,   625,   626,
+     194,   244,   649,   650,   651,   241,     7,   479,   480,   481,
+       7,   495,   496,   497,   129,   521,   537,   538,   307,     8,
+       8,     8,   314,   317,   319,   321,     4,     4,     4,     4,
+       4,   338,     4,     4,   331,   341,   343,   345,     4,     4,
+       4,     4,     3,     8,     8,   310,     6,     3,   402,     6,
+       3,   440,     6,     3,   464,     6,     3,   430,     6,     3,
+       3,     6,     6,     3,     6,   351,     3,     8,   544,     3,
+       6,   515,     6,     3,   378,     6,     3,     4,     4,     4,
+       4,     4,     4,     3,     8,   557,   561,     4,     4,     4,
+       3,     8,     4,     4,     4,     3,     8,   570,   572,     3,
+       8,     4,   579,     4,   582,     3,     8,     8,   627,     3,
+       6,     4,     3,     8,   209,   242,   243,   482,     6,     3,
+     498,     6,     3,   539,     8,     6,     4,     4,     4,     4,
+     210,   212,   210,   212,   210,     4,   210,   210,     4,     4,
+       4,     4,   210,   210,   212,   210,   312,   311,   309,   405,
+     401,   443,   439,   467,   463,   244,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   269,
+     270,   271,   272,   275,   277,   279,   280,   281,   283,   285,
+     323,   397,   409,   411,   413,   415,   417,   418,   419,   420,
+     424,   431,   432,   459,   489,   491,   535,   429,   355,   361,
+       4,   349,   118,   119,   244,   255,   256,   257,   258,   259,
+     260,   323,   459,   489,   491,   545,   546,   547,   548,   549,
+     551,   543,   518,   514,   381,   377,   210,   210,   210,   210,
+     210,   210,   390,     4,     4,   210,   210,   210,   555,   212,
+     210,   210,   369,     4,     4,   568,   212,     4,   210,     4,
+     576,   185,   187,   188,   244,   323,   489,   491,   628,   629,
+     630,   631,   633,   626,   212,   650,     6,     3,   485,   481,
+     501,   497,     4,    22,    23,    24,    25,   315,   209,   209,
+     209,   209,    38,    39,    40,   332,   209,   209,   209,     8,
+       8,     8,     8,     3,     8,   209,   550,     4,     8,     3,
+       8,     8,   141,   142,   143,   558,   209,   209,   209,   209,
+     229,   634,     4,   632,     3,     8,   209,     8,     8,   209,
+     432,     4,   212,   547,     4,   210,     4,   629,   209,     5,
+     209,     7,   635,   636,   637,     3,     6,   186,   189,   190,
+     191,   192,   638,   639,   640,   642,   643,   644,   645,   636,
+     641,     4,     4,     4,   646,     3,     8,     4,   212,   210,
+     210,     4,   639,   209,   209
   };
 
-  const short
+  const unsigned short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   212,   214,   213,   215,   213,   216,   213,   217,   213,
-     218,   213,   219,   213,   220,   213,   221,   213,   222,   213,
-     223,   213,   224,   213,   225,   213,   226,   213,   227,   213,
-     228,   228,   228,   228,   228,   228,   228,   229,   231,   230,
-     232,   233,   233,   234,   234,   236,   235,   237,   237,   238,
-     238,   240,   239,   241,   241,   242,   242,   243,   245,   244,
-     247,   246,   249,   248,   250,   250,   251,   251,   251,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   251,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   251,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   251,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   251,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   251,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   253,   252,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   272,   271,   273,
-     273,   273,   273,   273,   275,   274,   277,   276,   278,   279,
-     281,   280,   283,   282,   284,   285,   286,   288,   287,   289,
-     291,   290,   293,   292,   294,   294,   295,   295,   295,   295,
-     295,   297,   296,   298,   300,   299,   302,   301,   304,   303,
-     305,   305,   306,   306,   308,   307,   309,   309,   310,   310,
-     310,   310,   310,   310,   310,   310,   310,   310,   310,   310,
-     310,   310,   310,   310,   310,   310,   310,   310,   310,   310,
-     312,   311,   313,   313,   313,   313,   315,   314,   317,   316,
-     319,   318,   320,   322,   321,   323,   324,   325,   326,   327,
-     329,   328,   330,   330,   330,   331,   332,   333,   334,   336,
-     335,   337,   339,   338,   341,   340,   343,   342,   345,   344,
-     346,   346,   347,   349,   348,   351,   350,   352,   352,   353,
-     353,   354,   355,   357,   356,   358,   358,   359,   359,   359,
-     360,   361,   363,   362,   365,   364,   366,   366,   367,   367,
-     367,   367,   367,   367,   368,   369,   370,   372,   371,   373,
-     373,   374,   374,   376,   375,   378,   377,   379,   379,   379,
-     380,   380,   382,   381,   384,   383,   386,   385,   387,   387,
-     388,   388,   388,   388,   388,   388,   389,   390,   391,   392,
-     393,   394,   396,   395,   397,   397,   398,   398,   400,   399,
-     402,   401,   403,   403,   404,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   404,   406,   405,   408,
-     407,   410,   409,   412,   411,   414,   413,   415,   416,   417,
-     419,   418,   420,   420,   420,   420,   421,   422,   424,   423,
-     425,   425,   426,   426,   428,   427,   429,   429,   430,   430,
-     430,   430,   430,   430,   430,   430,   430,   430,   430,   430,
-     430,   430,   430,   430,   430,   430,   430,   430,   430,   430,
-     430,   430,   430,   430,   430,   430,   430,   430,   430,   430,
-     430,   430,   430,   430,   430,   430,   430,   430,   432,   431,
-     434,   433,   435,   435,   436,   436,   438,   437,   440,   439,
-     441,   441,   442,   442,   443,   443,   443,   443,   443,   443,
-     443,   443,   443,   443,   444,   445,   446,   448,   447,   450,
-     449,   452,   451,   453,   455,   454,   456,   458,   457,   459,
-     459,   460,   460,   462,   461,   464,   463,   465,   465,   466,
-     466,   467,   467,   467,   467,   467,   467,   467,   467,   467,
-     468,   470,   469,   471,   472,   473,   474,   476,   475,   477,
-     477,   478,   478,   480,   479,   482,   481,   483,   483,   484,
-     484,   484,   484,   484,   484,   484,   486,   485,   488,   487,
-     490,   489,   492,   491,   493,   493,   494,   494,   496,   495,
-     498,   497,   499,   499,   500,   500,   500,   500,   500,   500,
-     500,   500,   500,   500,   500,   502,   501,   503,   505,   504,
-     506,   507,   509,   508,   510,   510,   511,   511,   513,   512,
-     515,   514,   516,   516,   517,   517,   518,   518,   518,   518,
-     518,   518,   518,   518,   518,   518,   518,   520,   519,   522,
+       0,   213,   215,   214,   216,   214,   217,   214,   218,   214,
+     219,   214,   220,   214,   221,   214,   222,   214,   223,   214,
+     224,   214,   225,   214,   226,   214,   227,   214,   228,   214,
+     229,   229,   229,   229,   229,   229,   229,   230,   232,   231,
+     233,   234,   234,   235,   235,   237,   236,   238,   238,   239,
+     239,   241,   240,   242,   242,   243,   243,   244,   246,   245,
+     248,   247,   250,   249,   251,   251,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   254,
+     253,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   273,   272,
+     274,   274,   274,   274,   274,   276,   275,   278,   277,   279,
+     280,   282,   281,   284,   283,   285,   286,   287,   289,   288,
+     290,   291,   293,   292,   295,   294,   296,   296,   297,   297,
+     297,   297,   297,   299,   298,   300,   302,   301,   304,   303,
+     306,   305,   307,   307,   308,   308,   310,   309,   311,   311,
+     312,   312,   312,   312,   312,   312,   312,   312,   312,   312,
+     312,   312,   312,   312,   312,   312,   312,   312,   312,   312,
+     312,   312,   314,   313,   315,   315,   315,   315,   317,   316,
+     319,   318,   321,   320,   322,   324,   323,   325,   326,   327,
+     328,   329,   331,   330,   332,   332,   332,   333,   334,   335,
+     336,   338,   337,   339,   341,   340,   343,   342,   345,   344,
+     347,   346,   348,   348,   349,   351,   350,   353,   352,   354,
+     354,   355,   355,   356,   357,   359,   358,   360,   360,   361,
+     361,   361,   362,   363,   365,   364,   367,   366,   368,   368,
+     369,   369,   369,   369,   369,   369,   370,   371,   372,   374,
+     373,   375,   375,   376,   376,   378,   377,   380,   379,   381,
+     381,   381,   382,   382,   384,   383,   386,   385,   388,   387,
+     389,   389,   390,   390,   390,   390,   390,   390,   391,   392,
+     393,   394,   395,   396,   398,   397,   399,   399,   400,   400,
+     402,   401,   404,   403,   405,   405,   406,   406,   406,   406,
+     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
+     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
+     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
+     406,   406,   406,   406,   406,   406,   406,   406,   406,   408,
+     407,   410,   409,   412,   411,   414,   413,   416,   415,   417,
+     418,   419,   421,   420,   422,   422,   422,   422,   423,   424,
+     426,   425,   427,   427,   428,   428,   430,   429,   431,   431,
+     432,   432,   432,   432,   432,   432,   432,   432,   432,   432,
+     432,   432,   432,   432,   432,   432,   432,   432,   432,   432,
+     432,   432,   432,   432,   432,   432,   432,   432,   432,   432,
+     432,   432,   432,   432,   432,   432,   432,   432,   432,   432,
+     434,   433,   436,   435,   437,   437,   438,   438,   440,   439,
+     442,   441,   443,   443,   444,   444,   445,   445,   445,   445,
+     445,   445,   445,   445,   445,   445,   446,   447,   448,   450,
+     449,   452,   451,   454,   453,   455,   457,   456,   458,   460,
+     459,   461,   461,   462,   462,   464,   463,   466,   465,   467,
+     467,   468,   468,   469,   469,   469,   469,   469,   469,   469,
+     469,   469,   470,   472,   471,   473,   474,   475,   476,   478,
+     477,   479,   479,   480,   480,   482,   481,   484,   483,   485,
+     485,   486,   486,   486,   486,   486,   486,   486,   488,   487,
+     490,   489,   492,   491,   494,   493,   495,   495,   496,   496,
+     498,   497,   500,   499,   501,   501,   502,   502,   502,   502,
+     502,   502,   502,   502,   502,   502,   502,   504,   503,   505,
+     507,   506,   508,   509,   511,   510,   512,   512,   513,   513,
+     515,   514,   517,   516,   518,   518,   519,   519,   520,   520,
+     520,   520,   520,   520,   520,   520,   520,   520,   520,   522,
      521,   524,   523,   526,   525,   528,   527,   530,   529,   532,
-     531,   534,   533,   535,   535,   537,   536,   539,   538,   540,
-     540,   542,   541,   543,   543,   544,   544,   545,   545,   545,
-     545,   545,   545,   545,   545,   545,   545,   545,   545,   545,
-     546,   548,   547,   549,   551,   550,   552,   552,   553,   553,
-     553,   553,   553,   553,   553,   553,   553,   555,   554,   556,
-     556,   556,   557,   559,   558,   560,   561,   562,   564,   563,
-     565,   565,   566,   566,   566,   566,   566,   568,   567,   570,
-     569,   572,   571,   573,   573,   574,   574,   574,   574,   574,
-     574,   575,   577,   576,   578,   580,   579,   582,   581,   584,
-     583,   585,   585,   586,   586,   586,   586,   586,   586,   586,
-     586,   586,   586,   586,   586,   586,   586,   586,   586,   586,
-     586,   587,   589,   588,   591,   590,   592,   594,   593,   595,
-     596,   598,   597,   599,   599,   601,   600,   602,   603,   605,
-     604,   607,   606,   609,   608,   611,   610,   613,   612,   615,
-     614,   616,   616,   617,   617,   619,   618,   620,   622,   621,
-     623,   623,   625,   624,   626,   626,   627,   627,   627,   627,
-     627,   627,   627,   628,   630,   629,   632,   631,   633,   633,
-     635,   634,   636,   636,   637,   637,   637,   637,   637,   639,
-     638,   640,   641,   642,   644,   643,   646,   645,   647,   647,
-     648,   648,   649
+     531,   534,   533,   536,   535,   537,   537,   539,   538,   541,
+     540,   542,   542,   544,   543,   545,   545,   546,   546,   547,
+     547,   547,   547,   547,   547,   547,   547,   547,   547,   547,
+     547,   547,   548,   550,   549,   551,   553,   552,   554,   554,
+     555,   555,   555,   555,   555,   555,   555,   555,   555,   557,
+     556,   558,   558,   558,   559,   561,   560,   562,   563,   564,
+     566,   565,   567,   567,   568,   568,   568,   568,   568,   570,
+     569,   572,   571,   574,   573,   575,   575,   576,   576,   576,
+     576,   576,   576,   577,   579,   578,   580,   582,   581,   584,
+     583,   586,   585,   587,   587,   588,   588,   588,   588,   588,
+     588,   588,   588,   588,   588,   588,   588,   588,   588,   588,
+     588,   588,   588,   589,   591,   590,   593,   592,   594,   596,
+     595,   597,   598,   600,   599,   601,   601,   603,   602,   604,
+     605,   607,   606,   609,   608,   611,   610,   613,   612,   615,
+     614,   617,   616,   618,   618,   619,   619,   621,   620,   622,
+     624,   623,   625,   625,   627,   626,   628,   628,   629,   629,
+     629,   629,   629,   629,   629,   630,   632,   631,   634,   633,
+     635,   635,   637,   636,   638,   638,   639,   639,   639,   639,
+     639,   641,   640,   642,   643,   644,   646,   645,   648,   647,
+     649,   649,   650,   650,   651
   };
 
-  const signed char
+  const unsigned char
   Dhcp6Parser::yyr2_[] =
   {
        0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
@@ -5591,88 +5512,88 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     0,     4,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     3,     3,
-       0,     4,     0,     4,     3,     3,     3,     0,     4,     3,
-       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     0,     4,     3,     0,     6,     0,     6,     0,     6,
-       0,     1,     1,     3,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     0,     4,
+       1,     1,     1,     1,     1,     0,     4,     0,     4,     3,
+       3,     0,     4,     0,     4,     3,     3,     3,     0,     4,
+       3,     3,     0,     6,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     3,     0,     6,     0,     6,
+       0,     6,     0,     1,     1,     3,     0,     4,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     3,     0,     4,     3,     3,     3,     3,     3,
-       0,     4,     1,     1,     1,     3,     3,     3,     3,     0,
-       4,     3,     0,     4,     0,     4,     0,     4,     0,     6,
-       1,     3,     1,     0,     4,     0,     6,     1,     3,     1,
-       1,     1,     1,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     0,     6,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     3,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     3,     0,     4,     3,     3,     3,
+       3,     3,     0,     4,     1,     1,     1,     3,     3,     3,
+       3,     0,     4,     3,     0,     4,     0,     4,     0,     4,
+       0,     6,     1,     3,     1,     0,     4,     0,     6,     1,
+       3,     1,     1,     1,     1,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     0,     6,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     3,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     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,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     1,     3,     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,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
-       0,     4,     0,     1,     1,     3,     0,     4,     0,     4,
-       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     1,     0,     4,     0,
-       4,     0,     4,     1,     0,     4,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     1,     1,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     3,     0,     4,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     6,     0,     4,     0,     1,     1,     3,     0,     4,
        0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       1,     1,     1,     1,     1,     1,     1,     3,     1,     0,
+       4,     0,     4,     0,     4,     1,     0,     4,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
+       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     1,     1,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
+       0,     4,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     6,     1,     1,     0,     4,     0,     6,     1,
-       3,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       4,     0,     4,     0,     6,     1,     1,     0,     4,     0,
+       6,     1,     3,     0,     4,     0,     1,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     3,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
-       1,     1,     3,     0,     4,     3,     3,     3,     0,     6,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     3,     0,     4,     3,     0,     4,     0,     6,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     3,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     1,     1,     1,     3,     0,     4,     3,     3,     3,
+       0,     6,     1,     3,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     1,     3,     0,     4,     3,     0,     4,     0,
+       6,     0,     4,     1,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     0,     4,     0,     4,     3,     0,     4,     3,
-       3,     0,     4,     1,     1,     0,     4,     3,     3,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     6,     0,
-       4,     1,     3,     1,     1,     0,     6,     3,     0,     6,
+       1,     1,     1,     3,     0,     4,     0,     4,     3,     0,
+       4,     3,     3,     0,     4,     1,     1,     0,     4,     3,
+       3,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       6,     0,     4,     1,     3,     1,     1,     0,     6,     3,
+       0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     3,     0,     4,     0,     6,
        1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     3,     0,     4,     0,     6,     1,     3,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     0,
-       4,     3,     3,     3,     0,     4,     0,     6,     1,     3,
-       1,     1,     3
+       1,     0,     4,     3,     3,     3,     0,     4,     0,     6,
+       1,     3,     1,     1,     3
   };
 
 
-#if PARSER6_DEBUG || 1
+
   // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-  // First, the terminals, then, starting at \a YYNTOKENS, nonterminals.
+  // First, the terminals, then, starting at \a yyntokens_, nonterminals.
   const char*
   const Dhcp6Parser::yytname_[] =
   {
-  "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
-  "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
-  "\"data-directory\"", "\"config-control\"", "\"config-databases\"",
+  "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
+  "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"data-directory\"",
+  "\"config-control\"", "\"config-databases\"",
   "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"",
   "\"re-detect\"", "\"lease-database\"", "\"hosts-database\"",
   "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"",
@@ -5697,65 +5618,66 @@ namespace isc { namespace dhcp {
   "\"store-extended-info\"", "\"subnet6\"", "\"option-def\"",
   "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
   "\"csv-format\"", "\"always-send\"", "\"record-types\"",
-  "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"",
-  "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
-  "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
-  "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"",
-  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
-  "\"disabled\"", "\"out-of-pool\"", "\"global\"", "\"all\"",
-  "\"reservations-global\"", "\"reservations-in-subnet\"",
-  "\"reservations-out-of-pool\"", "\"mac-sources\"",
-  "\"relay-supplied-options\"", "\"host-reservation-identifiers\"",
-  "\"sanity-checks\"", "\"lease-checks\"", "\"client-classes\"",
-  "\"require-client-classes\"", "\"test\"", "\"only-if-required\"",
-  "\"client-class\"", "\"reservations\"", "\"ip-addresses\"",
-  "\"prefixes\"", "\"duid\"", "\"hw-address\"", "\"hostname\"",
-  "\"flex-id\"", "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"",
-  "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
-  "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
-  "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
-  "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"server-id\"",
-  "\"LLT\"", "\"EN\"", "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"",
-  "\"enterprise-id\"", "\"dhcp4o6-port\"", "\"multi-threading\"",
-  "\"enable-multi-threading\"", "\"thread-pool-size\"",
-  "\"packet-queue-size\"", "\"control-socket\"", "\"socket-type\"",
-  "\"socket-name\"", "\"dhcp-queue-control\"", "\"enable-queue\"",
-  "\"queue-type\"", "\"capacity\"", "\"dhcp-ddns\"", "\"enable-updates\"",
-  "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"",
-  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
-  "\"ncr-protocol\"", "\"ncr-format\"", "\"override-no-update\"",
-  "\"override-client-update\"", "\"replace-client-name\"",
-  "\"generated-prefix\"", "\"UDP\"", "\"TCP\"", "\"JSON\"",
-  "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
-  "\"hostname-char-set\"", "\"hostname-char-replacement\"",
-  "\"ip-reservations-unique\"", "\"loggers\"", "\"output_options\"",
-  "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"",
-  "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"compatibility\"",
-  "\"lenient-option-parsing\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6",
-  "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6",
-  "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
-  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS",
-  "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"",
-  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
-  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12",
-  "$@13", "$@14", "value", "sub_json", "map2", "$@15", "map_value",
-  "map_content", "not_empty_map", "list_generic", "$@16", "list_content",
-  "not_empty_list", "list_strings", "$@17", "list_strings_content",
-  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@18",
-  "global_object", "$@19", "sub_dhcp6", "$@20", "global_params",
-  "global_param", "data_directory", "$@21", "preferred_lifetime",
-  "min_preferred_lifetime", "max_preferred_lifetime", "valid_lifetime",
-  "min_valid_lifetime", "max_valid_lifetime", "renew_timer",
-  "rebind_timer", "calculate_tee_times", "t1_percent", "t2_percent",
-  "cache_threshold", "cache_max_age", "decline_probation_period",
-  "ddns_send_updates", "ddns_override_no_update",
-  "ddns_override_client_update", "ddns_replace_client_name", "$@22",
-  "ddns_replace_client_name_value", "ddns_generated_prefix", "$@23",
-  "ddns_qualifying_suffix", "$@24", "ddns_update_on_renew",
-  "ddns_use_conflict_resolution", "hostname_char_set", "$@25",
-  "hostname_char_replacement", "$@26", "store_extended_info",
-  "statistic_default_sample_count", "statistic_default_sample_age",
-  "server_tag", "$@27", "ip_reservations_unique", "interfaces_config",
+  "\"encapsulate\"", "\"array\"", "\"parked-packet-limit\"",
+  "\"shared-networks\"", "\"pools\"", "\"pool\"", "\"pd-pools\"",
+  "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"",
+  "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"",
+  "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
+  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
+  "\"out-of-pool\"", "\"global\"", "\"all\"", "\"reservations-global\"",
+  "\"reservations-in-subnet\"", "\"reservations-out-of-pool\"",
+  "\"mac-sources\"", "\"relay-supplied-options\"",
+  "\"host-reservation-identifiers\"", "\"sanity-checks\"",
+  "\"lease-checks\"", "\"client-classes\"", "\"require-client-classes\"",
+  "\"test\"", "\"only-if-required\"", "\"client-class\"",
+  "\"reservations\"", "\"ip-addresses\"", "\"prefixes\"", "\"duid\"",
+  "\"hw-address\"", "\"hostname\"", "\"flex-id\"", "\"relay\"",
+  "\"ip-address\"", "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
+  "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
+  "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
+  "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
+  "\"unwarned-reclaim-cycles\"", "\"server-id\"", "\"LLT\"", "\"EN\"",
+  "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"", "\"enterprise-id\"",
+  "\"dhcp4o6-port\"", "\"multi-threading\"", "\"enable-multi-threading\"",
+  "\"thread-pool-size\"", "\"packet-queue-size\"", "\"control-socket\"",
+  "\"socket-type\"", "\"socket-name\"", "\"dhcp-queue-control\"",
+  "\"enable-queue\"", "\"queue-type\"", "\"capacity\"", "\"dhcp-ddns\"",
+  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
+  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
+  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
+  "\"override-no-update\"", "\"override-client-update\"",
+  "\"replace-client-name\"", "\"generated-prefix\"", "\"UDP\"", "\"TCP\"",
+  "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"",
+  "\"when-not-present\"", "\"hostname-char-set\"",
+  "\"hostname-char-replacement\"", "\"ip-reservations-unique\"",
+  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
+  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"",
+  "\"compatibility\"", "\"lenient-option-parsing\"", "TOPLEVEL_JSON",
+  "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6",
+  "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS",
+  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
+  "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"",
+  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
+  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
+  "$@11", "$@12", "$@13", "$@14", "value", "sub_json", "map2", "$@15",
+  "map_value", "map_content", "not_empty_map", "list_generic", "$@16",
+  "list_content", "not_empty_list", "list_strings", "$@17",
+  "list_strings_content", "not_empty_list_strings", "unknown_map_entry",
+  "syntax_map", "$@18", "global_object", "$@19", "sub_dhcp6", "$@20",
+  "global_params", "global_param", "data_directory", "$@21",
+  "preferred_lifetime", "min_preferred_lifetime", "max_preferred_lifetime",
+  "valid_lifetime", "min_valid_lifetime", "max_valid_lifetime",
+  "renew_timer", "rebind_timer", "calculate_tee_times", "t1_percent",
+  "t2_percent", "cache_threshold", "cache_max_age",
+  "decline_probation_period", "ddns_send_updates",
+  "ddns_override_no_update", "ddns_override_client_update",
+  "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value",
+  "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24",
+  "ddns_update_on_renew", "ddns_use_conflict_resolution",
+  "hostname_char_set", "$@25", "hostname_char_replacement", "$@26",
+  "store_extended_info", "statistic_default_sample_count",
+  "statistic_default_sample_age", "server_tag", "$@27",
+  "parked_packet_limit", "ip_reservations_unique", "interfaces_config",
   "$@28", "sub_interfaces6", "$@29", "interfaces_config_params",
   "interfaces_config_param", "interfaces_list", "$@30", "re_detect",
   "lease_database", "$@31", "hosts_database", "$@32", "hosts_databases",
@@ -5845,113 +5767,113 @@ namespace isc { namespace dhcp {
   "maxsize", "maxver", "pattern", "$@135", "compatibility", "$@136",
   "compatibility_params", "compatibility_param", "lenient_option_parsing", YY_NULLPTR
   };
-#endif
-
 
 #if PARSER6_DEBUG
-  const short
+  const unsigned short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   300,   300,   300,   301,   301,   302,   302,   303,   303,
-     304,   304,   305,   305,   306,   306,   307,   307,   308,   308,
-     309,   309,   310,   310,   311,   311,   312,   312,   313,   313,
-     321,   322,   323,   324,   325,   326,   327,   330,   335,   335,
-     346,   349,   350,   353,   358,   366,   366,   373,   374,   377,
-     381,   388,   388,   395,   396,   399,   403,   414,   423,   423,
-     438,   438,   455,   455,   464,   465,   470,   471,   472,   473,
-     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
-     484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
-     494,   495,   496,   497,   498,   499,   500,   501,   502,   503,
-     504,   505,   506,   507,   508,   509,   510,   511,   512,   513,
-     514,   515,   516,   517,   518,   519,   520,   521,   522,   523,
-     524,   525,   526,   527,   528,   529,   530,   531,   534,   534,
-     543,   549,   555,   561,   567,   573,   579,   585,   591,   597,
-     603,   609,   615,   621,   627,   633,   639,   645,   645,   654,
-     657,   660,   663,   666,   672,   672,   681,   681,   690,   696,
-     702,   702,   711,   711,   720,   726,   732,   738,   738,   747,
-     753,   753,   765,   765,   774,   775,   778,   779,   780,   781,
-     782,   785,   785,   796,   802,   802,   815,   815,   828,   828,
-     839,   840,   843,   844,   847,   847,   857,   858,   861,   862,
-     863,   864,   865,   866,   867,   868,   869,   870,   871,   872,
-     873,   874,   875,   876,   877,   878,   879,   880,   881,   882,
-     885,   885,   893,   894,   895,   896,   899,   899,   908,   908,
-     917,   917,   926,   932,   932,   941,   947,   953,   959,   965,
-     971,   971,   979,   980,   981,   984,   990,   996,  1002,  1008,
-    1008,  1017,  1023,  1023,  1032,  1032,  1041,  1041,  1050,  1050,
-    1061,  1062,  1064,  1066,  1066,  1085,  1085,  1096,  1097,  1100,
-    1101,  1104,  1109,  1114,  1114,  1125,  1126,  1129,  1130,  1131,
-    1134,  1139,  1146,  1146,  1159,  1159,  1172,  1173,  1176,  1177,
-    1178,  1179,  1180,  1181,  1184,  1190,  1196,  1202,  1202,  1213,
-    1214,  1217,  1218,  1221,  1221,  1231,  1231,  1241,  1242,  1243,
-    1246,  1247,  1250,  1250,  1259,  1259,  1268,  1268,  1280,  1281,
-    1284,  1285,  1286,  1287,  1288,  1289,  1292,  1298,  1304,  1310,
-    1316,  1322,  1331,  1331,  1345,  1346,  1349,  1350,  1357,  1357,
-    1383,  1383,  1394,  1395,  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,  1424,
-    1425,  1426,  1427,  1428,  1429,  1430,  1431,  1432,  1433,  1434,
-    1435,  1436,  1437,  1438,  1439,  1440,  1441,  1444,  1444,  1453,
-    1453,  1462,  1462,  1471,  1471,  1480,  1480,  1491,  1497,  1503,
-    1509,  1509,  1517,  1518,  1519,  1520,  1523,  1529,  1537,  1537,
-    1549,  1550,  1554,  1555,  1558,  1558,  1566,  1567,  1570,  1571,
-    1572,  1573,  1574,  1575,  1576,  1577,  1578,  1579,  1580,  1581,
-    1582,  1583,  1584,  1585,  1586,  1587,  1588,  1589,  1590,  1591,
-    1592,  1593,  1594,  1595,  1596,  1597,  1598,  1599,  1600,  1601,
-    1602,  1603,  1604,  1605,  1606,  1607,  1608,  1609,  1616,  1616,
-    1630,  1630,  1639,  1640,  1643,  1644,  1649,  1649,  1664,  1664,
-    1678,  1679,  1682,  1683,  1686,  1687,  1688,  1689,  1690,  1691,
-    1692,  1693,  1694,  1695,  1698,  1700,  1706,  1708,  1708,  1717,
-    1717,  1726,  1726,  1735,  1737,  1737,  1746,  1756,  1756,  1769,
-    1770,  1775,  1776,  1781,  1781,  1793,  1793,  1805,  1806,  1811,
-    1812,  1817,  1818,  1819,  1820,  1821,  1822,  1823,  1824,  1825,
-    1828,  1830,  1830,  1839,  1841,  1843,  1849,  1858,  1858,  1871,
-    1872,  1875,  1876,  1879,  1879,  1889,  1889,  1899,  1900,  1903,
-    1904,  1905,  1906,  1907,  1908,  1909,  1912,  1912,  1921,  1921,
-    1946,  1946,  1976,  1976,  1989,  1990,  1993,  1994,  1997,  1997,
-    2009,  2009,  2021,  2022,  2025,  2026,  2027,  2028,  2029,  2030,
-    2031,  2032,  2033,  2034,  2035,  2038,  2038,  2047,  2053,  2053,
-    2062,  2068,  2077,  2077,  2088,  2089,  2092,  2093,  2096,  2096,
-    2105,  2105,  2114,  2115,  2118,  2119,  2123,  2124,  2125,  2126,
-    2127,  2128,  2129,  2130,  2131,  2132,  2133,  2136,  2136,  2147,
-    2147,  2158,  2158,  2167,  2167,  2176,  2176,  2185,  2185,  2194,
-    2194,  2208,  2208,  2219,  2220,  2223,  2223,  2235,  2235,  2246,
-    2247,  2250,  2250,  2260,  2261,  2264,  2265,  2268,  2269,  2270,
-    2271,  2272,  2273,  2274,  2275,  2276,  2277,  2278,  2279,  2280,
-    2283,  2285,  2285,  2294,  2303,  2303,  2316,  2317,  2320,  2321,
-    2322,  2323,  2324,  2325,  2326,  2327,  2328,  2331,  2331,  2339,
-    2340,  2341,  2344,  2350,  2350,  2359,  2365,  2373,  2381,  2381,
-    2392,  2393,  2396,  2397,  2398,  2399,  2400,  2403,  2403,  2412,
-    2412,  2424,  2424,  2437,  2438,  2441,  2442,  2443,  2444,  2445,
-    2446,  2449,  2455,  2455,  2464,  2470,  2470,  2480,  2480,  2493,
-    2493,  2503,  2504,  2507,  2508,  2509,  2510,  2511,  2512,  2513,
-    2514,  2515,  2516,  2517,  2518,  2519,  2520,  2521,  2522,  2523,
-    2524,  2527,  2534,  2534,  2543,  2543,  2552,  2558,  2558,  2567,
-    2573,  2579,  2579,  2588,  2589,  2592,  2592,  2602,  2609,  2616,
-    2616,  2625,  2625,  2635,  2635,  2645,  2645,  2657,  2657,  2669,
-    2669,  2679,  2680,  2684,  2685,  2688,  2688,  2699,  2707,  2707,
-    2720,  2721,  2725,  2725,  2733,  2734,  2737,  2738,  2739,  2740,
-    2741,  2742,  2743,  2746,  2752,  2752,  2761,  2761,  2772,  2773,
-    2776,  2776,  2784,  2785,  2788,  2789,  2790,  2791,  2792,  2795,
-    2795,  2804,  2810,  2816,  2822,  2822,  2831,  2831,  2842,  2843,
-    2846,  2847,  2850
+       0,   301,   301,   301,   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,
+     322,   323,   324,   325,   326,   327,   328,   331,   336,   336,
+     347,   350,   351,   354,   359,   367,   367,   374,   375,   378,
+     382,   389,   389,   396,   397,   400,   404,   415,   424,   424,
+     439,   439,   456,   456,   465,   466,   471,   472,   473,   474,
+     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
+     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
+     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
+     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
+     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
+     525,   526,   527,   528,   529,   530,   531,   532,   533,   536,
+     536,   545,   551,   557,   563,   569,   575,   581,   587,   593,
+     599,   605,   611,   617,   623,   629,   635,   641,   647,   647,
+     656,   659,   662,   665,   668,   674,   674,   683,   683,   692,
+     698,   704,   704,   713,   713,   722,   728,   734,   740,   740,
+     749,   755,   761,   761,   773,   773,   782,   783,   786,   787,
+     788,   789,   790,   793,   793,   804,   810,   810,   823,   823,
+     836,   836,   847,   848,   851,   852,   855,   855,   865,   866,
+     869,   870,   871,   872,   873,   874,   875,   876,   877,   878,
+     879,   880,   881,   882,   883,   884,   885,   886,   887,   888,
+     889,   890,   893,   893,   901,   902,   903,   904,   907,   907,
+     916,   916,   925,   925,   934,   940,   940,   949,   955,   961,
+     967,   973,   979,   979,   987,   988,   989,   992,   998,  1004,
+    1010,  1016,  1016,  1025,  1031,  1031,  1040,  1040,  1049,  1049,
+    1058,  1058,  1069,  1070,  1072,  1074,  1074,  1093,  1093,  1104,
+    1105,  1108,  1109,  1112,  1117,  1122,  1122,  1133,  1134,  1137,
+    1138,  1139,  1142,  1147,  1154,  1154,  1167,  1167,  1180,  1181,
+    1184,  1185,  1186,  1187,  1188,  1189,  1192,  1198,  1204,  1210,
+    1210,  1221,  1222,  1225,  1226,  1229,  1229,  1239,  1239,  1249,
+    1250,  1251,  1254,  1255,  1258,  1258,  1267,  1267,  1276,  1276,
+    1288,  1289,  1292,  1293,  1294,  1295,  1296,  1297,  1300,  1306,
+    1312,  1318,  1324,  1330,  1339,  1339,  1353,  1354,  1357,  1358,
+    1365,  1365,  1391,  1391,  1402,  1403,  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,  1436,  1437,  1438,  1439,  1440,
+    1441,  1442,  1443,  1444,  1445,  1446,  1447,  1448,  1449,  1452,
+    1452,  1461,  1461,  1470,  1470,  1479,  1479,  1488,  1488,  1499,
+    1505,  1511,  1517,  1517,  1525,  1526,  1527,  1528,  1531,  1537,
+    1545,  1545,  1557,  1558,  1562,  1563,  1566,  1566,  1574,  1575,
+    1578,  1579,  1580,  1581,  1582,  1583,  1584,  1585,  1586,  1587,
+    1588,  1589,  1590,  1591,  1592,  1593,  1594,  1595,  1596,  1597,
+    1598,  1599,  1600,  1601,  1602,  1603,  1604,  1605,  1606,  1607,
+    1608,  1609,  1610,  1611,  1612,  1613,  1614,  1615,  1616,  1617,
+    1624,  1624,  1638,  1638,  1647,  1648,  1651,  1652,  1657,  1657,
+    1672,  1672,  1686,  1687,  1690,  1691,  1694,  1695,  1696,  1697,
+    1698,  1699,  1700,  1701,  1702,  1703,  1706,  1708,  1714,  1716,
+    1716,  1725,  1725,  1734,  1734,  1743,  1745,  1745,  1754,  1764,
+    1764,  1777,  1778,  1783,  1784,  1789,  1789,  1801,  1801,  1813,
+    1814,  1819,  1820,  1825,  1826,  1827,  1828,  1829,  1830,  1831,
+    1832,  1833,  1836,  1838,  1838,  1847,  1849,  1851,  1857,  1866,
+    1866,  1879,  1880,  1883,  1884,  1887,  1887,  1897,  1897,  1907,
+    1908,  1911,  1912,  1913,  1914,  1915,  1916,  1917,  1920,  1920,
+    1929,  1929,  1954,  1954,  1984,  1984,  1997,  1998,  2001,  2002,
+    2005,  2005,  2017,  2017,  2029,  2030,  2033,  2034,  2035,  2036,
+    2037,  2038,  2039,  2040,  2041,  2042,  2043,  2046,  2046,  2055,
+    2061,  2061,  2070,  2076,  2085,  2085,  2096,  2097,  2100,  2101,
+    2104,  2104,  2113,  2113,  2122,  2123,  2126,  2127,  2131,  2132,
+    2133,  2134,  2135,  2136,  2137,  2138,  2139,  2140,  2141,  2144,
+    2144,  2155,  2155,  2166,  2166,  2175,  2175,  2184,  2184,  2193,
+    2193,  2202,  2202,  2216,  2216,  2227,  2228,  2231,  2231,  2243,
+    2243,  2254,  2255,  2258,  2258,  2268,  2269,  2272,  2273,  2276,
+    2277,  2278,  2279,  2280,  2281,  2282,  2283,  2284,  2285,  2286,
+    2287,  2288,  2291,  2293,  2293,  2302,  2311,  2311,  2324,  2325,
+    2328,  2329,  2330,  2331,  2332,  2333,  2334,  2335,  2336,  2339,
+    2339,  2347,  2348,  2349,  2352,  2358,  2358,  2367,  2373,  2381,
+    2389,  2389,  2400,  2401,  2404,  2405,  2406,  2407,  2408,  2411,
+    2411,  2420,  2420,  2432,  2432,  2445,  2446,  2449,  2450,  2451,
+    2452,  2453,  2454,  2457,  2463,  2463,  2472,  2478,  2478,  2488,
+    2488,  2501,  2501,  2511,  2512,  2515,  2516,  2517,  2518,  2519,
+    2520,  2521,  2522,  2523,  2524,  2525,  2526,  2527,  2528,  2529,
+    2530,  2531,  2532,  2535,  2542,  2542,  2551,  2551,  2560,  2566,
+    2566,  2575,  2581,  2587,  2587,  2596,  2597,  2600,  2600,  2610,
+    2617,  2624,  2624,  2633,  2633,  2643,  2643,  2653,  2653,  2665,
+    2665,  2677,  2677,  2687,  2688,  2692,  2693,  2696,  2696,  2707,
+    2715,  2715,  2728,  2729,  2733,  2733,  2741,  2742,  2745,  2746,
+    2747,  2748,  2749,  2750,  2751,  2754,  2760,  2760,  2769,  2769,
+    2780,  2781,  2784,  2784,  2792,  2793,  2796,  2797,  2798,  2799,
+    2800,  2803,  2803,  2812,  2818,  2824,  2830,  2830,  2839,  2839,
+    2850,  2851,  2854,  2855,  2858
   };
 
+  // Print the state stack on the debug stream.
   void
-  Dhcp6Parser::yy_stack_print_ () const
+  Dhcp6Parser::yystack_print_ ()
   {
     *yycdebug_ << "Stack now";
     for (stack_type::const_iterator
            i = yystack_.begin (),
            i_end = yystack_.end ();
          i != i_end; ++i)
-      *yycdebug_ << ' ' << int (i->state);
+      *yycdebug_ << ' ' << i->state;
     *yycdebug_ << '\n';
   }
 
+  // Report on the debug stream that the rule \a yyrule is going to be reduced.
   void
-  Dhcp6Parser::yy_reduce_print_ (int yyrule) const
+  Dhcp6Parser::yy_reduce_print_ (int yyrule)
   {
-    int yylno = yyrline_[yyrule];
+    unsigned yylno = yyrline_[yyrule];
     int yynrhs = yyr2_[yyrule];
     // Print the symbols being reduced, and their result.
     *yycdebug_ << "Reducing stack by rule " << yyrule - 1
@@ -5964,11 +5886,10 @@ namespace isc { namespace dhcp {
 #endif // PARSER6_DEBUG
 
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:1242
 } } // isc::dhcp
-#line 5970 "dhcp6_parser.cc"
-
-#line 2856 "dhcp6_parser.yy"
+#line 5892 "dhcp6_parser.cc" // lalr1.cc:1242
+#line 2864 "dhcp6_parser.yy" // lalr1.cc:1243
 
 
 void
index 54dfbd097ee8663864c688ed10f51904ea379420..c370ba5df0f3a38abb4f811f9588e8377a616bdf 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.6.
+// A Bison parser, made by GNU Bison 3.3.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 
 // C++ LALR(1) parser skeleton written by Akim Demaille.
 
-// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-// especially those whose name start with YY_ or yy_.  They are
-// private implementation details that can be changed or removed.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details.  Do not rely on them.
 
 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
-// "%code requires" blocks.
-#line 17 "dhcp6_parser.yy"
+// //                    "%code requires" blocks.
+#line 17 "dhcp6_parser.yy" // lalr1.cc:401
 
 #include <string>
 #include <cc/data.h>
@@ -57,7 +56,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 61 "dhcp6_parser.h"
+#line 60 "dhcp6_parser.h" // lalr1.cc:401
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -104,42 +103,44 @@ using namespace std;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef PARSER6__ASSERT
+#ifndef YYASSERT
 # include <cassert>
-# define PARSER6__ASSERT assert
+# define YYASSERT assert
 #endif
 
 
-#ifndef YY_ATTRIBUTE_PURE
-# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
 # else
-#  define YY_ATTRIBUTE_PURE
+#  define YY_ATTRIBUTE(Spec) /* empty */
 # endif
 #endif
 
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
 #ifndef YY_ATTRIBUTE_UNUSED
-# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
-# else
-#  define YY_ATTRIBUTE_UNUSED
-# endif
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YY_USE(E) ((void) (E))
+# define YYUSE(E) ((void) (E))
 #else
-# define YY_USE(E) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
-    _Pragma ("GCC diagnostic push")                                     \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -152,27 +153,6 @@ using namespace std;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
-# define YY_IGNORE_USELESS_CAST_BEGIN                          \
-    _Pragma ("GCC diagnostic push")                            \
-    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
-# define YY_IGNORE_USELESS_CAST_END            \
-    _Pragma ("GCC diagnostic pop")
-#endif
-#ifndef YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_END
-#endif
-
-# ifndef YY_CAST
-#  ifdef __cplusplus
-#   define YY_CAST(Type, Val) static_cast<Type> (Val)
-#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
-#  else
-#   define YY_CAST(Type, Val) ((Type) (Val))
-#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
-#  endif
-# endif
 # ifndef YY_NULLPTR
 #  if defined __cplusplus
 #   if 201103L <= __cplusplus
@@ -198,10 +178,9 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER6_DEBUG */
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:401
 namespace isc { namespace dhcp {
-#line 204 "dhcp6_parser.h"
-
+#line 184 "dhcp6_parser.h" // lalr1.cc:401
 
 
 
@@ -232,21 +211,14 @@ namespace isc { namespace dhcp {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      PARSER6__ASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
-#if 201103L <= YY_CPLUSPLUS
-    /// Non copyable.
-    semantic_type (const self_type&) = delete;
-    /// Non copyable.
-    self_type& operator= (const self_type&) = delete;
-#endif
-
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      PARSER6__ASSERT (!yytypeid_);
+      YYASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -255,8 +227,8 @@ namespace isc { namespace dhcp {
     T&
     emplace (U&&... u)
     {
-      PARSER6__ASSERT (!yytypeid_);
-      PARSER6__ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      YYASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -266,8 +238,8 @@ namespace isc { namespace dhcp {
     T&
     emplace ()
     {
-      PARSER6__ASSERT (!yytypeid_);
-      PARSER6__ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      YYASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -277,8 +249,8 @@ namespace isc { namespace dhcp {
     T&
     emplace (const T& t)
     {
-      PARSER6__ASSERT (!yytypeid_);
-      PARSER6__ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      YYASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -307,9 +279,9 @@ namespace isc { namespace dhcp {
     T&
     as () YY_NOEXCEPT
     {
-      PARSER6__ASSERT (yytypeid_);
-      PARSER6__ASSERT (*yytypeid_ == typeid (T));
-      PARSER6__ASSERT (sizeof (T) <= size);
+      YYASSERT (yytypeid_);
+      YYASSERT (*yytypeid_ == typeid (T));
+      YYASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -318,9 +290,9 @@ namespace isc { namespace dhcp {
     const T&
     as () const YY_NOEXCEPT
     {
-      PARSER6__ASSERT (yytypeid_);
-      PARSER6__ASSERT (*yytypeid_ == typeid (T));
-      PARSER6__ASSERT (sizeof (T) <= size);
+      YYASSERT (yytypeid_);
+      YYASSERT (*yytypeid_ == typeid (T));
+      YYASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -336,8 +308,8 @@ namespace isc { namespace dhcp {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      PARSER6__ASSERT (yytypeid_);
-      PARSER6__ASSERT (*yytypeid_ == *that.yytypeid_);
+      YYASSERT (yytypeid_);
+      YYASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -386,12 +358,9 @@ namespace isc { namespace dhcp {
     }
 
   private:
-#if YY_CPLUSPLUS < 201103L
-    /// Non copyable.
-    semantic_type (const self_type&);
-    /// Non copyable.
+    /// Prohibit blind copies.
     self_type& operator= (const self_type&);
-#endif
+    semantic_type (const self_type&);
 
     /// Accessor to raw memory as \a T.
     template <typename T>
@@ -477,905 +446,241 @@ namespace isc { namespace dhcp {
       location_type location;
     };
 
-    /// Token kinds.
+    /// Tokens.
     struct token
     {
-      enum token_kind_type
-      {
-        TOKEN_PARSER6_EMPTY = -2,
-    TOKEN_END = 0,                 // "end of file"
-    TOKEN_PARSER6_error = 256,     // error
-    TOKEN_PARSER6_UNDEF = 257,     // "invalid token"
-    TOKEN_COMMA = 258,             // ","
-    TOKEN_COLON = 259,             // ":"
-    TOKEN_LSQUARE_BRACKET = 260,   // "["
-    TOKEN_RSQUARE_BRACKET = 261,   // "]"
-    TOKEN_LCURLY_BRACKET = 262,    // "{"
-    TOKEN_RCURLY_BRACKET = 263,    // "}"
-    TOKEN_NULL_TYPE = 264,         // "null"
-    TOKEN_DHCP6 = 265,             // "Dhcp6"
-    TOKEN_DATA_DIRECTORY = 266,    // "data-directory"
-    TOKEN_CONFIG_CONTROL = 267,    // "config-control"
-    TOKEN_CONFIG_DATABASES = 268,  // "config-databases"
-    TOKEN_CONFIG_FETCH_WAIT_TIME = 269, // "config-fetch-wait-time"
-    TOKEN_INTERFACES_CONFIG = 270, // "interfaces-config"
-    TOKEN_INTERFACES = 271,        // "interfaces"
-    TOKEN_RE_DETECT = 272,         // "re-detect"
-    TOKEN_LEASE_DATABASE = 273,    // "lease-database"
-    TOKEN_HOSTS_DATABASE = 274,    // "hosts-database"
-    TOKEN_HOSTS_DATABASES = 275,   // "hosts-databases"
-    TOKEN_TYPE = 276,              // "type"
-    TOKEN_MEMFILE = 277,           // "memfile"
-    TOKEN_MYSQL = 278,             // "mysql"
-    TOKEN_POSTGRESQL = 279,        // "postgresql"
-    TOKEN_CQL = 280,               // "cql"
-    TOKEN_USER = 281,              // "user"
-    TOKEN_PASSWORD = 282,          // "password"
-    TOKEN_HOST = 283,              // "host"
-    TOKEN_PORT = 284,              // "port"
-    TOKEN_PERSIST = 285,           // "persist"
-    TOKEN_LFC_INTERVAL = 286,      // "lfc-interval"
-    TOKEN_READONLY = 287,          // "readonly"
-    TOKEN_CONNECT_TIMEOUT = 288,   // "connect-timeout"
-    TOKEN_CONTACT_POINTS = 289,    // "contact-points"
-    TOKEN_MAX_RECONNECT_TRIES = 290, // "max-reconnect-tries"
-    TOKEN_RECONNECT_WAIT_TIME = 291, // "reconnect-wait-time"
-    TOKEN_ON_FAIL = 292,           // "on-fail"
-    TOKEN_STOP_RETRY_EXIT = 293,   // "stop-retry-exit"
-    TOKEN_SERVE_RETRY_EXIT = 294,  // "serve-retry-exit"
-    TOKEN_SERVE_RETRY_CONTINUE = 295, // "serve-retry-continue"
-    TOKEN_KEYSPACE = 296,          // "keyspace"
-    TOKEN_CONSISTENCY = 297,       // "consistency"
-    TOKEN_SERIAL_CONSISTENCY = 298, // "serial-consistency"
-    TOKEN_REQUEST_TIMEOUT = 299,   // "request-timeout"
-    TOKEN_TCP_KEEPALIVE = 300,     // "tcp-keepalive"
-    TOKEN_TCP_NODELAY = 301,       // "tcp-nodelay"
-    TOKEN_MAX_ROW_ERRORS = 302,    // "max-row-errors"
-    TOKEN_PREFERRED_LIFETIME = 303, // "preferred-lifetime"
-    TOKEN_MIN_PREFERRED_LIFETIME = 304, // "min-preferred-lifetime"
-    TOKEN_MAX_PREFERRED_LIFETIME = 305, // "max-preferred-lifetime"
-    TOKEN_VALID_LIFETIME = 306,    // "valid-lifetime"
-    TOKEN_MIN_VALID_LIFETIME = 307, // "min-valid-lifetime"
-    TOKEN_MAX_VALID_LIFETIME = 308, // "max-valid-lifetime"
-    TOKEN_RENEW_TIMER = 309,       // "renew-timer"
-    TOKEN_REBIND_TIMER = 310,      // "rebind-timer"
-    TOKEN_CALCULATE_TEE_TIMES = 311, // "calculate-tee-times"
-    TOKEN_T1_PERCENT = 312,        // "t1-percent"
-    TOKEN_T2_PERCENT = 313,        // "t2-percent"
-    TOKEN_CACHE_THRESHOLD = 314,   // "cache-threshold"
-    TOKEN_CACHE_MAX_AGE = 315,     // "cache-max-age"
-    TOKEN_DECLINE_PROBATION_PERIOD = 316, // "decline-probation-period"
-    TOKEN_SERVER_TAG = 317,        // "server-tag"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 318, // "statistic-default-sample-count"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 319, // "statistic-default-sample-age"
-    TOKEN_DDNS_SEND_UPDATES = 320, // "ddns-send-updates"
-    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 321, // "ddns-override-no-update"
-    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 322, // "ddns-override-client-update"
-    TOKEN_DDNS_REPLACE_CLIENT_NAME = 323, // "ddns-replace-client-name"
-    TOKEN_DDNS_GENERATED_PREFIX = 324, // "ddns-generated-prefix"
-    TOKEN_DDNS_QUALIFYING_SUFFIX = 325, // "ddns-qualifying-suffix"
-    TOKEN_DDNS_UPDATE_ON_RENEW = 326, // "ddns-update-on-renew"
-    TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 327, // "ddns-use-conflict-resolution"
-    TOKEN_STORE_EXTENDED_INFO = 328, // "store-extended-info"
-    TOKEN_SUBNET6 = 329,           // "subnet6"
-    TOKEN_OPTION_DEF = 330,        // "option-def"
-    TOKEN_OPTION_DATA = 331,       // "option-data"
-    TOKEN_NAME = 332,              // "name"
-    TOKEN_DATA = 333,              // "data"
-    TOKEN_CODE = 334,              // "code"
-    TOKEN_SPACE = 335,             // "space"
-    TOKEN_CSV_FORMAT = 336,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 337,       // "always-send"
-    TOKEN_RECORD_TYPES = 338,      // "record-types"
-    TOKEN_ENCAPSULATE = 339,       // "encapsulate"
-    TOKEN_ARRAY = 340,             // "array"
-    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_IP_RESERVATIONS_UNIQUE = 437, // "ip-reservations-unique"
-    TOKEN_LOGGERS = 438,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 439,    // "output_options"
-    TOKEN_OUTPUT = 440,            // "output"
-    TOKEN_DEBUGLEVEL = 441,        // "debuglevel"
-    TOKEN_SEVERITY = 442,          // "severity"
-    TOKEN_FLUSH = 443,             // "flush"
-    TOKEN_MAXSIZE = 444,           // "maxsize"
-    TOKEN_MAXVER = 445,            // "maxver"
-    TOKEN_PATTERN = 446,           // "pattern"
-    TOKEN_COMPATIBILITY = 447,     // "compatibility"
-    TOKEN_LENIENT_OPTION_PARSING = 448, // "lenient-option-parsing"
-    TOKEN_TOPLEVEL_JSON = 449,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP6 = 450,    // TOPLEVEL_DHCP6
-    TOKEN_SUB_DHCP6 = 451,         // SUB_DHCP6
-    TOKEN_SUB_INTERFACES6 = 452,   // SUB_INTERFACES6
-    TOKEN_SUB_SUBNET6 = 453,       // SUB_SUBNET6
-    TOKEN_SUB_POOL6 = 454,         // SUB_POOL6
-    TOKEN_SUB_PD_POOL = 455,       // SUB_PD_POOL
-    TOKEN_SUB_RESERVATION = 456,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 457,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 458,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 459,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 460, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 461,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 462, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 463,            // "constant string"
-    TOKEN_INTEGER = 464,           // "integer"
-    TOKEN_FLOAT = 465,             // "floating point"
-    TOKEN_BOOLEAN = 466            // "boolean"
+      enum yytokentype
+      {
+        TOKEN_END = 0,
+        TOKEN_COMMA = 258,
+        TOKEN_COLON = 259,
+        TOKEN_LSQUARE_BRACKET = 260,
+        TOKEN_RSQUARE_BRACKET = 261,
+        TOKEN_LCURLY_BRACKET = 262,
+        TOKEN_RCURLY_BRACKET = 263,
+        TOKEN_NULL_TYPE = 264,
+        TOKEN_DHCP6 = 265,
+        TOKEN_DATA_DIRECTORY = 266,
+        TOKEN_CONFIG_CONTROL = 267,
+        TOKEN_CONFIG_DATABASES = 268,
+        TOKEN_CONFIG_FETCH_WAIT_TIME = 269,
+        TOKEN_INTERFACES_CONFIG = 270,
+        TOKEN_INTERFACES = 271,
+        TOKEN_RE_DETECT = 272,
+        TOKEN_LEASE_DATABASE = 273,
+        TOKEN_HOSTS_DATABASE = 274,
+        TOKEN_HOSTS_DATABASES = 275,
+        TOKEN_TYPE = 276,
+        TOKEN_MEMFILE = 277,
+        TOKEN_MYSQL = 278,
+        TOKEN_POSTGRESQL = 279,
+        TOKEN_CQL = 280,
+        TOKEN_USER = 281,
+        TOKEN_PASSWORD = 282,
+        TOKEN_HOST = 283,
+        TOKEN_PORT = 284,
+        TOKEN_PERSIST = 285,
+        TOKEN_LFC_INTERVAL = 286,
+        TOKEN_READONLY = 287,
+        TOKEN_CONNECT_TIMEOUT = 288,
+        TOKEN_CONTACT_POINTS = 289,
+        TOKEN_MAX_RECONNECT_TRIES = 290,
+        TOKEN_RECONNECT_WAIT_TIME = 291,
+        TOKEN_ON_FAIL = 292,
+        TOKEN_STOP_RETRY_EXIT = 293,
+        TOKEN_SERVE_RETRY_EXIT = 294,
+        TOKEN_SERVE_RETRY_CONTINUE = 295,
+        TOKEN_KEYSPACE = 296,
+        TOKEN_CONSISTENCY = 297,
+        TOKEN_SERIAL_CONSISTENCY = 298,
+        TOKEN_REQUEST_TIMEOUT = 299,
+        TOKEN_TCP_KEEPALIVE = 300,
+        TOKEN_TCP_NODELAY = 301,
+        TOKEN_MAX_ROW_ERRORS = 302,
+        TOKEN_PREFERRED_LIFETIME = 303,
+        TOKEN_MIN_PREFERRED_LIFETIME = 304,
+        TOKEN_MAX_PREFERRED_LIFETIME = 305,
+        TOKEN_VALID_LIFETIME = 306,
+        TOKEN_MIN_VALID_LIFETIME = 307,
+        TOKEN_MAX_VALID_LIFETIME = 308,
+        TOKEN_RENEW_TIMER = 309,
+        TOKEN_REBIND_TIMER = 310,
+        TOKEN_CALCULATE_TEE_TIMES = 311,
+        TOKEN_T1_PERCENT = 312,
+        TOKEN_T2_PERCENT = 313,
+        TOKEN_CACHE_THRESHOLD = 314,
+        TOKEN_CACHE_MAX_AGE = 315,
+        TOKEN_DECLINE_PROBATION_PERIOD = 316,
+        TOKEN_SERVER_TAG = 317,
+        TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 318,
+        TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 319,
+        TOKEN_DDNS_SEND_UPDATES = 320,
+        TOKEN_DDNS_OVERRIDE_NO_UPDATE = 321,
+        TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 322,
+        TOKEN_DDNS_REPLACE_CLIENT_NAME = 323,
+        TOKEN_DDNS_GENERATED_PREFIX = 324,
+        TOKEN_DDNS_QUALIFYING_SUFFIX = 325,
+        TOKEN_DDNS_UPDATE_ON_RENEW = 326,
+        TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 327,
+        TOKEN_STORE_EXTENDED_INFO = 328,
+        TOKEN_SUBNET6 = 329,
+        TOKEN_OPTION_DEF = 330,
+        TOKEN_OPTION_DATA = 331,
+        TOKEN_NAME = 332,
+        TOKEN_DATA = 333,
+        TOKEN_CODE = 334,
+        TOKEN_SPACE = 335,
+        TOKEN_CSV_FORMAT = 336,
+        TOKEN_ALWAYS_SEND = 337,
+        TOKEN_RECORD_TYPES = 338,
+        TOKEN_ENCAPSULATE = 339,
+        TOKEN_ARRAY = 340,
+        TOKEN_PARKED_PACKET_LIMIT = 341,
+        TOKEN_SHARED_NETWORKS = 342,
+        TOKEN_POOLS = 343,
+        TOKEN_POOL = 344,
+        TOKEN_PD_POOLS = 345,
+        TOKEN_PREFIX = 346,
+        TOKEN_PREFIX_LEN = 347,
+        TOKEN_EXCLUDED_PREFIX = 348,
+        TOKEN_EXCLUDED_PREFIX_LEN = 349,
+        TOKEN_DELEGATED_LEN = 350,
+        TOKEN_USER_CONTEXT = 351,
+        TOKEN_COMMENT = 352,
+        TOKEN_SUBNET = 353,
+        TOKEN_INTERFACE = 354,
+        TOKEN_INTERFACE_ID = 355,
+        TOKEN_ID = 356,
+        TOKEN_RAPID_COMMIT = 357,
+        TOKEN_RESERVATION_MODE = 358,
+        TOKEN_DISABLED = 359,
+        TOKEN_OUT_OF_POOL = 360,
+        TOKEN_GLOBAL = 361,
+        TOKEN_ALL = 362,
+        TOKEN_RESERVATIONS_GLOBAL = 363,
+        TOKEN_RESERVATIONS_IN_SUBNET = 364,
+        TOKEN_RESERVATIONS_OUT_OF_POOL = 365,
+        TOKEN_MAC_SOURCES = 366,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 367,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 368,
+        TOKEN_SANITY_CHECKS = 369,
+        TOKEN_LEASE_CHECKS = 370,
+        TOKEN_CLIENT_CLASSES = 371,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 372,
+        TOKEN_TEST = 373,
+        TOKEN_ONLY_IF_REQUIRED = 374,
+        TOKEN_CLIENT_CLASS = 375,
+        TOKEN_RESERVATIONS = 376,
+        TOKEN_IP_ADDRESSES = 377,
+        TOKEN_PREFIXES = 378,
+        TOKEN_DUID = 379,
+        TOKEN_HW_ADDRESS = 380,
+        TOKEN_HOSTNAME = 381,
+        TOKEN_FLEX_ID = 382,
+        TOKEN_RELAY = 383,
+        TOKEN_IP_ADDRESS = 384,
+        TOKEN_HOOKS_LIBRARIES = 385,
+        TOKEN_LIBRARY = 386,
+        TOKEN_PARAMETERS = 387,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 388,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 389,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 390,
+        TOKEN_HOLD_RECLAIMED_TIME = 391,
+        TOKEN_MAX_RECLAIM_LEASES = 392,
+        TOKEN_MAX_RECLAIM_TIME = 393,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 394,
+        TOKEN_SERVER_ID = 395,
+        TOKEN_LLT = 396,
+        TOKEN_EN = 397,
+        TOKEN_LL = 398,
+        TOKEN_IDENTIFIER = 399,
+        TOKEN_HTYPE = 400,
+        TOKEN_TIME = 401,
+        TOKEN_ENTERPRISE_ID = 402,
+        TOKEN_DHCP4O6_PORT = 403,
+        TOKEN_DHCP_MULTI_THREADING = 404,
+        TOKEN_ENABLE_MULTI_THREADING = 405,
+        TOKEN_THREAD_POOL_SIZE = 406,
+        TOKEN_PACKET_QUEUE_SIZE = 407,
+        TOKEN_CONTROL_SOCKET = 408,
+        TOKEN_SOCKET_TYPE = 409,
+        TOKEN_SOCKET_NAME = 410,
+        TOKEN_DHCP_QUEUE_CONTROL = 411,
+        TOKEN_ENABLE_QUEUE = 412,
+        TOKEN_QUEUE_TYPE = 413,
+        TOKEN_CAPACITY = 414,
+        TOKEN_DHCP_DDNS = 415,
+        TOKEN_ENABLE_UPDATES = 416,
+        TOKEN_QUALIFYING_SUFFIX = 417,
+        TOKEN_SERVER_IP = 418,
+        TOKEN_SERVER_PORT = 419,
+        TOKEN_SENDER_IP = 420,
+        TOKEN_SENDER_PORT = 421,
+        TOKEN_MAX_QUEUE_SIZE = 422,
+        TOKEN_NCR_PROTOCOL = 423,
+        TOKEN_NCR_FORMAT = 424,
+        TOKEN_OVERRIDE_NO_UPDATE = 425,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 426,
+        TOKEN_REPLACE_CLIENT_NAME = 427,
+        TOKEN_GENERATED_PREFIX = 428,
+        TOKEN_UDP = 429,
+        TOKEN_TCP = 430,
+        TOKEN_JSON = 431,
+        TOKEN_WHEN_PRESENT = 432,
+        TOKEN_NEVER = 433,
+        TOKEN_ALWAYS = 434,
+        TOKEN_WHEN_NOT_PRESENT = 435,
+        TOKEN_HOSTNAME_CHAR_SET = 436,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 437,
+        TOKEN_IP_RESERVATIONS_UNIQUE = 438,
+        TOKEN_LOGGERS = 439,
+        TOKEN_OUTPUT_OPTIONS = 440,
+        TOKEN_OUTPUT = 441,
+        TOKEN_DEBUGLEVEL = 442,
+        TOKEN_SEVERITY = 443,
+        TOKEN_FLUSH = 444,
+        TOKEN_MAXSIZE = 445,
+        TOKEN_MAXVER = 446,
+        TOKEN_PATTERN = 447,
+        TOKEN_COMPATIBILITY = 448,
+        TOKEN_LENIENT_OPTION_PARSING = 449,
+        TOKEN_TOPLEVEL_JSON = 450,
+        TOKEN_TOPLEVEL_DHCP6 = 451,
+        TOKEN_SUB_DHCP6 = 452,
+        TOKEN_SUB_INTERFACES6 = 453,
+        TOKEN_SUB_SUBNET6 = 454,
+        TOKEN_SUB_POOL6 = 455,
+        TOKEN_SUB_PD_POOL = 456,
+        TOKEN_SUB_RESERVATION = 457,
+        TOKEN_SUB_OPTION_DEFS = 458,
+        TOKEN_SUB_OPTION_DEF = 459,
+        TOKEN_SUB_OPTION_DATA = 460,
+        TOKEN_SUB_HOOKS_LIBRARY = 461,
+        TOKEN_SUB_DHCP_DDNS = 462,
+        TOKEN_SUB_CONFIG_CONTROL = 463,
+        TOKEN_STRING = 464,
+        TOKEN_INTEGER = 465,
+        TOKEN_FLOAT = 466,
+        TOKEN_BOOLEAN = 467
       };
-      /// Backward compatibility alias (Bison 3.6).
-      typedef token_kind_type yytokentype;
     };
 
-    /// Token kind, as returned by yylex.
-    typedef token::yytokentype token_kind_type;
+    /// (External) token type, as returned by yylex.
+    typedef token::yytokentype token_type;
 
-    /// Backward compatibility alias (Bison 3.6).
-    typedef token_kind_type token_type;
-
-    /// Symbol kinds.
-    struct symbol_kind
-    {
-      enum symbol_kind_type
-      {
-        YYNTOKENS = 212, ///< Number of tokens.
-        S_YYEMPTY = -2,
-        S_YYEOF = 0,                             // "end of file"
-        S_YYerror = 1,                           // error
-        S_YYUNDEF = 2,                           // "invalid token"
-        S_COMMA = 3,                             // ","
-        S_COLON = 4,                             // ":"
-        S_LSQUARE_BRACKET = 5,                   // "["
-        S_RSQUARE_BRACKET = 6,                   // "]"
-        S_LCURLY_BRACKET = 7,                    // "{"
-        S_RCURLY_BRACKET = 8,                    // "}"
-        S_NULL_TYPE = 9,                         // "null"
-        S_DHCP6 = 10,                            // "Dhcp6"
-        S_DATA_DIRECTORY = 11,                   // "data-directory"
-        S_CONFIG_CONTROL = 12,                   // "config-control"
-        S_CONFIG_DATABASES = 13,                 // "config-databases"
-        S_CONFIG_FETCH_WAIT_TIME = 14,           // "config-fetch-wait-time"
-        S_INTERFACES_CONFIG = 15,                // "interfaces-config"
-        S_INTERFACES = 16,                       // "interfaces"
-        S_RE_DETECT = 17,                        // "re-detect"
-        S_LEASE_DATABASE = 18,                   // "lease-database"
-        S_HOSTS_DATABASE = 19,                   // "hosts-database"
-        S_HOSTS_DATABASES = 20,                  // "hosts-databases"
-        S_TYPE = 21,                             // "type"
-        S_MEMFILE = 22,                          // "memfile"
-        S_MYSQL = 23,                            // "mysql"
-        S_POSTGRESQL = 24,                       // "postgresql"
-        S_CQL = 25,                              // "cql"
-        S_USER = 26,                             // "user"
-        S_PASSWORD = 27,                         // "password"
-        S_HOST = 28,                             // "host"
-        S_PORT = 29,                             // "port"
-        S_PERSIST = 30,                          // "persist"
-        S_LFC_INTERVAL = 31,                     // "lfc-interval"
-        S_READONLY = 32,                         // "readonly"
-        S_CONNECT_TIMEOUT = 33,                  // "connect-timeout"
-        S_CONTACT_POINTS = 34,                   // "contact-points"
-        S_MAX_RECONNECT_TRIES = 35,              // "max-reconnect-tries"
-        S_RECONNECT_WAIT_TIME = 36,              // "reconnect-wait-time"
-        S_ON_FAIL = 37,                          // "on-fail"
-        S_STOP_RETRY_EXIT = 38,                  // "stop-retry-exit"
-        S_SERVE_RETRY_EXIT = 39,                 // "serve-retry-exit"
-        S_SERVE_RETRY_CONTINUE = 40,             // "serve-retry-continue"
-        S_KEYSPACE = 41,                         // "keyspace"
-        S_CONSISTENCY = 42,                      // "consistency"
-        S_SERIAL_CONSISTENCY = 43,               // "serial-consistency"
-        S_REQUEST_TIMEOUT = 44,                  // "request-timeout"
-        S_TCP_KEEPALIVE = 45,                    // "tcp-keepalive"
-        S_TCP_NODELAY = 46,                      // "tcp-nodelay"
-        S_MAX_ROW_ERRORS = 47,                   // "max-row-errors"
-        S_PREFERRED_LIFETIME = 48,               // "preferred-lifetime"
-        S_MIN_PREFERRED_LIFETIME = 49,           // "min-preferred-lifetime"
-        S_MAX_PREFERRED_LIFETIME = 50,           // "max-preferred-lifetime"
-        S_VALID_LIFETIME = 51,                   // "valid-lifetime"
-        S_MIN_VALID_LIFETIME = 52,               // "min-valid-lifetime"
-        S_MAX_VALID_LIFETIME = 53,               // "max-valid-lifetime"
-        S_RENEW_TIMER = 54,                      // "renew-timer"
-        S_REBIND_TIMER = 55,                     // "rebind-timer"
-        S_CALCULATE_TEE_TIMES = 56,              // "calculate-tee-times"
-        S_T1_PERCENT = 57,                       // "t1-percent"
-        S_T2_PERCENT = 58,                       // "t2-percent"
-        S_CACHE_THRESHOLD = 59,                  // "cache-threshold"
-        S_CACHE_MAX_AGE = 60,                    // "cache-max-age"
-        S_DECLINE_PROBATION_PERIOD = 61,         // "decline-probation-period"
-        S_SERVER_TAG = 62,                       // "server-tag"
-        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 63,   // "statistic-default-sample-count"
-        S_STATISTIC_DEFAULT_SAMPLE_AGE = 64,     // "statistic-default-sample-age"
-        S_DDNS_SEND_UPDATES = 65,                // "ddns-send-updates"
-        S_DDNS_OVERRIDE_NO_UPDATE = 66,          // "ddns-override-no-update"
-        S_DDNS_OVERRIDE_CLIENT_UPDATE = 67,      // "ddns-override-client-update"
-        S_DDNS_REPLACE_CLIENT_NAME = 68,         // "ddns-replace-client-name"
-        S_DDNS_GENERATED_PREFIX = 69,            // "ddns-generated-prefix"
-        S_DDNS_QUALIFYING_SUFFIX = 70,           // "ddns-qualifying-suffix"
-        S_DDNS_UPDATE_ON_RENEW = 71,             // "ddns-update-on-renew"
-        S_DDNS_USE_CONFLICT_RESOLUTION = 72,     // "ddns-use-conflict-resolution"
-        S_STORE_EXTENDED_INFO = 73,              // "store-extended-info"
-        S_SUBNET6 = 74,                          // "subnet6"
-        S_OPTION_DEF = 75,                       // "option-def"
-        S_OPTION_DATA = 76,                      // "option-data"
-        S_NAME = 77,                             // "name"
-        S_DATA = 78,                             // "data"
-        S_CODE = 79,                             // "code"
-        S_SPACE = 80,                            // "space"
-        S_CSV_FORMAT = 81,                       // "csv-format"
-        S_ALWAYS_SEND = 82,                      // "always-send"
-        S_RECORD_TYPES = 83,                     // "record-types"
-        S_ENCAPSULATE = 84,                      // "encapsulate"
-        S_ARRAY = 85,                            // "array"
-        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_IP_RESERVATIONS_UNIQUE = 182,          // "ip-reservations-unique"
-        S_LOGGERS = 183,                         // "loggers"
-        S_OUTPUT_OPTIONS = 184,                  // "output_options"
-        S_OUTPUT = 185,                          // "output"
-        S_DEBUGLEVEL = 186,                      // "debuglevel"
-        S_SEVERITY = 187,                        // "severity"
-        S_FLUSH = 188,                           // "flush"
-        S_MAXSIZE = 189,                         // "maxsize"
-        S_MAXVER = 190,                          // "maxver"
-        S_PATTERN = 191,                         // "pattern"
-        S_COMPATIBILITY = 192,                   // "compatibility"
-        S_LENIENT_OPTION_PARSING = 193,          // "lenient-option-parsing"
-        S_TOPLEVEL_JSON = 194,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP6 = 195,                  // TOPLEVEL_DHCP6
-        S_SUB_DHCP6 = 196,                       // SUB_DHCP6
-        S_SUB_INTERFACES6 = 197,                 // SUB_INTERFACES6
-        S_SUB_SUBNET6 = 198,                     // SUB_SUBNET6
-        S_SUB_POOL6 = 199,                       // SUB_POOL6
-        S_SUB_PD_POOL = 200,                     // SUB_PD_POOL
-        S_SUB_RESERVATION = 201,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 202,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 203,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 204,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 205,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 206,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 207,              // SUB_CONFIG_CONTROL
-        S_STRING = 208,                          // "constant string"
-        S_INTEGER = 209,                         // "integer"
-        S_FLOAT = 210,                           // "floating point"
-        S_BOOLEAN = 211,                         // "boolean"
-        S_YYACCEPT = 212,                        // $accept
-        S_start = 213,                           // start
-        S_214_1 = 214,                           // $@1
-        S_215_2 = 215,                           // $@2
-        S_216_3 = 216,                           // $@3
-        S_217_4 = 217,                           // $@4
-        S_218_5 = 218,                           // $@5
-        S_219_6 = 219,                           // $@6
-        S_220_7 = 220,                           // $@7
-        S_221_8 = 221,                           // $@8
-        S_222_9 = 222,                           // $@9
-        S_223_10 = 223,                          // $@10
-        S_224_11 = 224,                          // $@11
-        S_225_12 = 225,                          // $@12
-        S_226_13 = 226,                          // $@13
-        S_227_14 = 227,                          // $@14
-        S_value = 228,                           // value
-        S_sub_json = 229,                        // sub_json
-        S_map2 = 230,                            // map2
-        S_231_15 = 231,                          // $@15
-        S_map_value = 232,                       // map_value
-        S_map_content = 233,                     // map_content
-        S_not_empty_map = 234,                   // not_empty_map
-        S_list_generic = 235,                    // list_generic
-        S_236_16 = 236,                          // $@16
-        S_list_content = 237,                    // list_content
-        S_not_empty_list = 238,                  // not_empty_list
-        S_list_strings = 239,                    // list_strings
-        S_240_17 = 240,                          // $@17
-        S_list_strings_content = 241,            // list_strings_content
-        S_not_empty_list_strings = 242,          // not_empty_list_strings
-        S_unknown_map_entry = 243,               // unknown_map_entry
-        S_syntax_map = 244,                      // syntax_map
-        S_245_18 = 245,                          // $@18
-        S_global_object = 246,                   // global_object
-        S_247_19 = 247,                          // $@19
-        S_sub_dhcp6 = 248,                       // sub_dhcp6
-        S_249_20 = 249,                          // $@20
-        S_global_params = 250,                   // global_params
-        S_global_param = 251,                    // global_param
-        S_data_directory = 252,                  // data_directory
-        S_253_21 = 253,                          // $@21
-        S_preferred_lifetime = 254,              // preferred_lifetime
-        S_min_preferred_lifetime = 255,          // min_preferred_lifetime
-        S_max_preferred_lifetime = 256,          // max_preferred_lifetime
-        S_valid_lifetime = 257,                  // valid_lifetime
-        S_min_valid_lifetime = 258,              // min_valid_lifetime
-        S_max_valid_lifetime = 259,              // max_valid_lifetime
-        S_renew_timer = 260,                     // renew_timer
-        S_rebind_timer = 261,                    // rebind_timer
-        S_calculate_tee_times = 262,             // calculate_tee_times
-        S_t1_percent = 263,                      // t1_percent
-        S_t2_percent = 264,                      // t2_percent
-        S_cache_threshold = 265,                 // cache_threshold
-        S_cache_max_age = 266,                   // cache_max_age
-        S_decline_probation_period = 267,        // decline_probation_period
-        S_ddns_send_updates = 268,               // ddns_send_updates
-        S_ddns_override_no_update = 269,         // ddns_override_no_update
-        S_ddns_override_client_update = 270,     // ddns_override_client_update
-        S_ddns_replace_client_name = 271,        // ddns_replace_client_name
-        S_272_22 = 272,                          // $@22
-        S_ddns_replace_client_name_value = 273,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 274,           // ddns_generated_prefix
-        S_275_23 = 275,                          // $@23
-        S_ddns_qualifying_suffix = 276,          // ddns_qualifying_suffix
-        S_277_24 = 277,                          // $@24
-        S_ddns_update_on_renew = 278,            // ddns_update_on_renew
-        S_ddns_use_conflict_resolution = 279,    // ddns_use_conflict_resolution
-        S_hostname_char_set = 280,               // hostname_char_set
-        S_281_25 = 281,                          // $@25
-        S_hostname_char_replacement = 282,       // hostname_char_replacement
-        S_283_26 = 283,                          // $@26
-        S_store_extended_info = 284,             // store_extended_info
-        S_statistic_default_sample_count = 285,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 286,    // statistic_default_sample_age
-        S_server_tag = 287,                      // server_tag
-        S_288_27 = 288,                          // $@27
-        S_ip_reservations_unique = 289,          // ip_reservations_unique
-        S_interfaces_config = 290,               // interfaces_config
-        S_291_28 = 291,                          // $@28
-        S_sub_interfaces6 = 292,                 // sub_interfaces6
-        S_293_29 = 293,                          // $@29
-        S_interfaces_config_params = 294,        // interfaces_config_params
-        S_interfaces_config_param = 295,         // interfaces_config_param
-        S_interfaces_list = 296,                 // interfaces_list
-        S_297_30 = 297,                          // $@30
-        S_re_detect = 298,                       // re_detect
-        S_lease_database = 299,                  // lease_database
-        S_300_31 = 300,                          // $@31
-        S_hosts_database = 301,                  // hosts_database
-        S_302_32 = 302,                          // $@32
-        S_hosts_databases = 303,                 // hosts_databases
-        S_304_33 = 304,                          // $@33
-        S_database_list = 305,                   // database_list
-        S_not_empty_database_list = 306,         // not_empty_database_list
-        S_database = 307,                        // database
-        S_308_34 = 308,                          // $@34
-        S_database_map_params = 309,             // database_map_params
-        S_database_map_param = 310,              // database_map_param
-        S_database_type = 311,                   // database_type
-        S_312_35 = 312,                          // $@35
-        S_db_type = 313,                         // db_type
-        S_user = 314,                            // user
-        S_315_36 = 315,                          // $@36
-        S_password = 316,                        // password
-        S_317_37 = 317,                          // $@37
-        S_host = 318,                            // host
-        S_319_38 = 319,                          // $@38
-        S_port = 320,                            // port
-        S_name = 321,                            // name
-        S_322_39 = 322,                          // $@39
-        S_persist = 323,                         // persist
-        S_lfc_interval = 324,                    // lfc_interval
-        S_readonly = 325,                        // readonly
-        S_connect_timeout = 326,                 // connect_timeout
-        S_reconnect_wait_time = 327,             // reconnect_wait_time
-        S_on_fail = 328,                         // on_fail
-        S_329_40 = 329,                          // $@40
-        S_on_fail_mode = 330,                    // on_fail_mode
-        S_max_row_errors = 331,                  // max_row_errors
-        S_request_timeout = 332,                 // request_timeout
-        S_tcp_keepalive = 333,                   // tcp_keepalive
-        S_tcp_nodelay = 334,                     // tcp_nodelay
-        S_contact_points = 335,                  // contact_points
-        S_336_41 = 336,                          // $@41
-        S_max_reconnect_tries = 337,             // max_reconnect_tries
-        S_keyspace = 338,                        // keyspace
-        S_339_42 = 339,                          // $@42
-        S_consistency = 340,                     // consistency
-        S_341_43 = 341,                          // $@43
-        S_serial_consistency = 342,              // serial_consistency
-        S_343_44 = 343,                          // $@44
-        S_sanity_checks = 344,                   // sanity_checks
-        S_345_45 = 345,                          // $@45
-        S_sanity_checks_params = 346,            // sanity_checks_params
-        S_sanity_checks_param = 347,             // sanity_checks_param
-        S_lease_checks = 348,                    // lease_checks
-        S_349_46 = 349,                          // $@46
-        S_mac_sources = 350,                     // mac_sources
-        S_351_47 = 351,                          // $@47
-        S_mac_sources_list = 352,                // mac_sources_list
-        S_mac_sources_value = 353,               // mac_sources_value
-        S_duid_id = 354,                         // duid_id
-        S_string_id = 355,                       // string_id
-        S_host_reservation_identifiers = 356,    // host_reservation_identifiers
-        S_357_48 = 357,                          // $@48
-        S_host_reservation_identifiers_list = 358, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 359,     // host_reservation_identifier
-        S_hw_address_id = 360,                   // hw_address_id
-        S_flex_id = 361,                         // flex_id
-        S_relay_supplied_options = 362,          // relay_supplied_options
-        S_363_49 = 363,                          // $@49
-        S_dhcp_multi_threading = 364,            // dhcp_multi_threading
-        S_365_50 = 365,                          // $@50
-        S_multi_threading_params = 366,          // multi_threading_params
-        S_multi_threading_param = 367,           // multi_threading_param
-        S_enable_multi_threading = 368,          // enable_multi_threading
-        S_thread_pool_size = 369,                // thread_pool_size
-        S_packet_queue_size = 370,               // packet_queue_size
-        S_hooks_libraries = 371,                 // hooks_libraries
-        S_372_51 = 372,                          // $@51
-        S_hooks_libraries_list = 373,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 374,  // not_empty_hooks_libraries_list
-        S_hooks_library = 375,                   // hooks_library
-        S_376_52 = 376,                          // $@52
-        S_sub_hooks_library = 377,               // sub_hooks_library
-        S_378_53 = 378,                          // $@53
-        S_hooks_params = 379,                    // hooks_params
-        S_hooks_param = 380,                     // hooks_param
-        S_library = 381,                         // library
-        S_382_54 = 382,                          // $@54
-        S_parameters = 383,                      // parameters
-        S_384_55 = 384,                          // $@55
-        S_expired_leases_processing = 385,       // expired_leases_processing
-        S_386_56 = 386,                          // $@56
-        S_expired_leases_params = 387,           // expired_leases_params
-        S_expired_leases_param = 388,            // expired_leases_param
-        S_reclaim_timer_wait_time = 389,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 390, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 391,             // hold_reclaimed_time
-        S_max_reclaim_leases = 392,              // max_reclaim_leases
-        S_max_reclaim_time = 393,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 394,         // unwarned_reclaim_cycles
-        S_subnet6_list = 395,                    // subnet6_list
-        S_396_57 = 396,                          // $@57
-        S_subnet6_list_content = 397,            // subnet6_list_content
-        S_not_empty_subnet6_list = 398,          // not_empty_subnet6_list
-        S_subnet6 = 399,                         // subnet6
-        S_400_58 = 400,                          // $@58
-        S_sub_subnet6 = 401,                     // sub_subnet6
-        S_402_59 = 402,                          // $@59
-        S_subnet6_params = 403,                  // subnet6_params
-        S_subnet6_param = 404,                   // subnet6_param
-        S_subnet = 405,                          // subnet
-        S_406_60 = 406,                          // $@60
-        S_interface = 407,                       // interface
-        S_408_61 = 408,                          // $@61
-        S_interface_id = 409,                    // interface_id
-        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_rapid_commit = 422,                    // rapid_commit
-        S_shared_networks = 423,                 // shared_networks
-        S_424_66 = 424,                          // $@66
-        S_shared_networks_content = 425,         // shared_networks_content
-        S_shared_networks_list = 426,            // shared_networks_list
-        S_shared_network = 427,                  // shared_network
-        S_428_67 = 428,                          // $@67
-        S_shared_network_params = 429,           // shared_network_params
-        S_shared_network_param = 430,            // shared_network_param
-        S_option_def_list = 431,                 // option_def_list
-        S_432_68 = 432,                          // $@68
-        S_sub_option_def_list = 433,             // sub_option_def_list
-        S_434_69 = 434,                          // $@69
-        S_option_def_list_content = 435,         // option_def_list_content
-        S_not_empty_option_def_list = 436,       // not_empty_option_def_list
-        S_option_def_entry = 437,                // option_def_entry
-        S_438_70 = 438,                          // $@70
-        S_sub_option_def = 439,                  // sub_option_def
-        S_440_71 = 440,                          // $@71
-        S_option_def_params = 441,               // option_def_params
-        S_not_empty_option_def_params = 442,     // not_empty_option_def_params
-        S_option_def_param = 443,                // option_def_param
-        S_option_def_name = 444,                 // option_def_name
-        S_code = 445,                            // code
-        S_option_def_code = 446,                 // option_def_code
-        S_option_def_type = 447,                 // option_def_type
-        S_448_72 = 448,                          // $@72
-        S_option_def_record_types = 449,         // option_def_record_types
-        S_450_73 = 450,                          // $@73
-        S_space = 451,                           // space
-        S_452_74 = 452,                          // $@74
-        S_option_def_space = 453,                // option_def_space
-        S_option_def_encapsulate = 454,          // option_def_encapsulate
-        S_455_75 = 455,                          // $@75
-        S_option_def_array = 456,                // option_def_array
-        S_option_data_list = 457,                // option_data_list
-        S_458_76 = 458,                          // $@76
-        S_option_data_list_content = 459,        // option_data_list_content
-        S_not_empty_option_data_list = 460,      // not_empty_option_data_list
-        S_option_data_entry = 461,               // option_data_entry
-        S_462_77 = 462,                          // $@77
-        S_sub_option_data = 463,                 // sub_option_data
-        S_464_78 = 464,                          // $@78
-        S_option_data_params = 465,              // option_data_params
-        S_not_empty_option_data_params = 466,    // not_empty_option_data_params
-        S_option_data_param = 467,               // option_data_param
-        S_option_data_name = 468,                // option_data_name
-        S_option_data_data = 469,                // option_data_data
-        S_470_79 = 470,                          // $@79
-        S_option_data_code = 471,                // option_data_code
-        S_option_data_space = 472,               // option_data_space
-        S_option_data_csv_format = 473,          // option_data_csv_format
-        S_option_data_always_send = 474,         // option_data_always_send
-        S_pools_list = 475,                      // pools_list
-        S_476_80 = 476,                          // $@80
-        S_pools_list_content = 477,              // pools_list_content
-        S_not_empty_pools_list = 478,            // not_empty_pools_list
-        S_pool_list_entry = 479,                 // pool_list_entry
-        S_480_81 = 480,                          // $@81
-        S_sub_pool6 = 481,                       // sub_pool6
-        S_482_82 = 482,                          // $@82
-        S_pool_params = 483,                     // pool_params
-        S_pool_param = 484,                      // pool_param
-        S_pool_entry = 485,                      // pool_entry
-        S_486_83 = 486,                          // $@83
-        S_user_context = 487,                    // user_context
-        S_488_84 = 488,                          // $@84
-        S_comment = 489,                         // comment
-        S_490_85 = 490,                          // $@85
-        S_pd_pools_list = 491,                   // pd_pools_list
-        S_492_86 = 492,                          // $@86
-        S_pd_pools_list_content = 493,           // pd_pools_list_content
-        S_not_empty_pd_pools_list = 494,         // not_empty_pd_pools_list
-        S_pd_pool_entry = 495,                   // pd_pool_entry
-        S_496_87 = 496,                          // $@87
-        S_sub_pd_pool = 497,                     // sub_pd_pool
-        S_498_88 = 498,                          // $@88
-        S_pd_pool_params = 499,                  // pd_pool_params
-        S_pd_pool_param = 500,                   // pd_pool_param
-        S_pd_prefix = 501,                       // pd_prefix
-        S_502_89 = 502,                          // $@89
-        S_pd_prefix_len = 503,                   // pd_prefix_len
-        S_excluded_prefix = 504,                 // excluded_prefix
-        S_505_90 = 505,                          // $@90
-        S_excluded_prefix_len = 506,             // excluded_prefix_len
-        S_pd_delegated_len = 507,                // pd_delegated_len
-        S_reservations = 508,                    // reservations
-        S_509_91 = 509,                          // $@91
-        S_reservations_list = 510,               // reservations_list
-        S_not_empty_reservations_list = 511,     // not_empty_reservations_list
-        S_reservation = 512,                     // reservation
-        S_513_92 = 513,                          // $@92
-        S_sub_reservation = 514,                 // sub_reservation
-        S_515_93 = 515,                          // $@93
-        S_reservation_params = 516,              // reservation_params
-        S_not_empty_reservation_params = 517,    // not_empty_reservation_params
-        S_reservation_param = 518,               // reservation_param
-        S_ip_addresses = 519,                    // ip_addresses
-        S_520_94 = 520,                          // $@94
-        S_prefixes = 521,                        // prefixes
-        S_522_95 = 522,                          // $@95
-        S_duid = 523,                            // duid
-        S_524_96 = 524,                          // $@96
-        S_hw_address = 525,                      // hw_address
-        S_526_97 = 526,                          // $@97
-        S_hostname = 527,                        // hostname
-        S_528_98 = 528,                          // $@98
-        S_flex_id_value = 529,                   // flex_id_value
-        S_530_99 = 530,                          // $@99
-        S_reservation_client_classes = 531,      // reservation_client_classes
-        S_532_100 = 532,                         // $@100
-        S_relay = 533,                           // relay
-        S_534_101 = 534,                         // $@101
-        S_relay_map = 535,                       // relay_map
-        S_ip_address = 536,                      // ip_address
-        S_537_102 = 537,                         // $@102
-        S_client_classes = 538,                  // client_classes
-        S_539_103 = 539,                         // $@103
-        S_client_classes_list = 540,             // client_classes_list
-        S_client_class_entry = 541,              // client_class_entry
-        S_542_104 = 542,                         // $@104
-        S_client_class_params = 543,             // client_class_params
-        S_not_empty_client_class_params = 544,   // not_empty_client_class_params
-        S_client_class_param = 545,              // client_class_param
-        S_client_class_name = 546,               // client_class_name
-        S_client_class_test = 547,               // client_class_test
-        S_548_105 = 548,                         // $@105
-        S_only_if_required = 549,                // only_if_required
-        S_server_id = 550,                       // server_id
-        S_551_106 = 551,                         // $@106
-        S_server_id_params = 552,                // server_id_params
-        S_server_id_param = 553,                 // server_id_param
-        S_server_id_type = 554,                  // server_id_type
-        S_555_107 = 555,                         // $@107
-        S_duid_type = 556,                       // duid_type
-        S_htype = 557,                           // htype
-        S_identifier = 558,                      // identifier
-        S_559_108 = 559,                         // $@108
-        S_time = 560,                            // time
-        S_enterprise_id = 561,                   // enterprise_id
-        S_dhcp4o6_port = 562,                    // dhcp4o6_port
-        S_control_socket = 563,                  // control_socket
-        S_564_109 = 564,                         // $@109
-        S_control_socket_params = 565,           // control_socket_params
-        S_control_socket_param = 566,            // control_socket_param
-        S_socket_type = 567,                     // socket_type
-        S_568_110 = 568,                         // $@110
-        S_socket_name = 569,                     // socket_name
-        S_570_111 = 570,                         // $@111
-        S_dhcp_queue_control = 571,              // dhcp_queue_control
-        S_572_112 = 572,                         // $@112
-        S_queue_control_params = 573,            // queue_control_params
-        S_queue_control_param = 574,             // queue_control_param
-        S_enable_queue = 575,                    // enable_queue
-        S_queue_type = 576,                      // queue_type
-        S_577_113 = 577,                         // $@113
-        S_capacity = 578,                        // capacity
-        S_arbitrary_map_entry = 579,             // arbitrary_map_entry
-        S_580_114 = 580,                         // $@114
-        S_dhcp_ddns = 581,                       // dhcp_ddns
-        S_582_115 = 582,                         // $@115
-        S_sub_dhcp_ddns = 583,                   // sub_dhcp_ddns
-        S_584_116 = 584,                         // $@116
-        S_dhcp_ddns_params = 585,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 586,                 // dhcp_ddns_param
-        S_enable_updates = 587,                  // enable_updates
-        S_dep_qualifying_suffix = 588,           // dep_qualifying_suffix
-        S_589_117 = 589,                         // $@117
-        S_server_ip = 590,                       // server_ip
-        S_591_118 = 591,                         // $@118
-        S_server_port = 592,                     // server_port
-        S_sender_ip = 593,                       // sender_ip
-        S_594_119 = 594,                         // $@119
-        S_sender_port = 595,                     // sender_port
-        S_max_queue_size = 596,                  // max_queue_size
-        S_ncr_protocol = 597,                    // ncr_protocol
-        S_598_120 = 598,                         // $@120
-        S_ncr_protocol_value = 599,              // ncr_protocol_value
-        S_ncr_format = 600,                      // ncr_format
-        S_601_121 = 601,                         // $@121
-        S_dep_override_no_update = 602,          // dep_override_no_update
-        S_dep_override_client_update = 603,      // dep_override_client_update
-        S_dep_replace_client_name = 604,         // dep_replace_client_name
-        S_605_122 = 605,                         // $@122
-        S_dep_generated_prefix = 606,            // dep_generated_prefix
-        S_607_123 = 607,                         // $@123
-        S_dep_hostname_char_set = 608,           // dep_hostname_char_set
-        S_609_124 = 609,                         // $@124
-        S_dep_hostname_char_replacement = 610,   // dep_hostname_char_replacement
-        S_611_125 = 611,                         // $@125
-        S_config_control = 612,                  // config_control
-        S_613_126 = 613,                         // $@126
-        S_sub_config_control = 614,              // sub_config_control
-        S_615_127 = 615,                         // $@127
-        S_config_control_params = 616,           // config_control_params
-        S_config_control_param = 617,            // config_control_param
-        S_config_databases = 618,                // config_databases
-        S_619_128 = 619,                         // $@128
-        S_config_fetch_wait_time = 620,          // config_fetch_wait_time
-        S_loggers = 621,                         // loggers
-        S_622_129 = 622,                         // $@129
-        S_loggers_entries = 623,                 // loggers_entries
-        S_logger_entry = 624,                    // logger_entry
-        S_625_130 = 625,                         // $@130
-        S_logger_params = 626,                   // logger_params
-        S_logger_param = 627,                    // logger_param
-        S_debuglevel = 628,                      // debuglevel
-        S_severity = 629,                        // severity
-        S_630_131 = 630,                         // $@131
-        S_output_options_list = 631,             // output_options_list
-        S_632_132 = 632,                         // $@132
-        S_output_options_list_content = 633,     // output_options_list_content
-        S_output_entry = 634,                    // output_entry
-        S_635_133 = 635,                         // $@133
-        S_output_params_list = 636,              // output_params_list
-        S_output_params = 637,                   // output_params
-        S_output = 638,                          // output
-        S_639_134 = 639,                         // $@134
-        S_flush = 640,                           // flush
-        S_maxsize = 641,                         // maxsize
-        S_maxver = 642,                          // maxver
-        S_pattern = 643,                         // pattern
-        S_644_135 = 644,                         // $@135
-        S_compatibility = 645,                   // compatibility
-        S_646_136 = 646,                         // $@136
-        S_compatibility_params = 647,            // compatibility_params
-        S_compatibility_param = 648,             // compatibility_param
-        S_lenient_option_parsing = 649           // lenient_option_parsing
-      };
-    };
+    /// Symbol type: an internal symbol number.
+    typedef int symbol_number_type;
 
-    /// (Internal) symbol kind.
-    typedef symbol_kind::symbol_kind_type symbol_kind_type;
+    /// The symbol type number to denote an empty symbol.
+    enum { empty_symbol = -2 };
 
-    /// The number of tokens.
-    static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS;
+    /// Internal symbol number for tokens (subsumed by symbol_number_type).
+    typedef unsigned char token_number_type;
 
     /// A complete symbol.
     ///
-    /// Expects its Base type to provide access to the symbol kind
-    /// via kind ().
+    /// Expects its Base type to provide access to the symbol type
+    /// via type_get ().
     ///
     /// Provide access to semantic value and location.
     template <typename Base>
@@ -1392,51 +697,13 @@ namespace isc { namespace dhcp {
 
 #if 201103L <= YY_CPLUSPLUS
       /// Move constructor.
-      basic_symbol (basic_symbol&& that)
-        : Base (std::move (that))
-        , value ()
-        , location (std::move (that.location))
-      {
-        switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (std::move (that.value));
-        break;
-
-      default:
-        break;
-    }
-
-      }
+      basic_symbol (basic_symbol&& that);
 #endif
 
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructors for typed symbols.
+      /// Constructor for valueless symbols, and symbols from each type.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -1448,7 +715,6 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
-
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
         : Base (t)
@@ -1462,7 +728,6 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
-
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
         : Base (t)
@@ -1476,7 +741,6 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
-
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
         : Base (t)
@@ -1490,7 +754,6 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
-
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
         : Base (t)
@@ -1504,7 +767,6 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
-
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -1526,45 +788,45 @@ namespace isc { namespace dhcp {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear () YY_NOEXCEPT
+      void clear ()
       {
         // User destructor.
-        symbol_kind_type yykind = this->kind ();
+        symbol_number_type yytype = this->type_get ();
         basic_symbol<Base>& yysym = *this;
         (void) yysym;
-        switch (yykind)
+        switch (yytype)
         {
        default:
           break;
         }
 
-        // Value type destructor.
-switch (yykind)
+        // Type destructor.
+switch (yytype)
     {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1575,15 +837,6 @@ switch (yykind)
         Base::clear ();
       }
 
-      /// The user-facing name of this symbol.
-      std::string name () const YY_NOEXCEPT
-      {
-        return Dhcp6Parser::symbol_name (this->kind ());
-      }
-
-      /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
-
       /// Whether empty.
       bool empty () const YY_NOEXCEPT;
 
@@ -1604,51 +857,49 @@ switch (yykind)
     };
 
     /// Type access provider for token (enum) based symbols.
-    struct by_kind
+    struct by_type
     {
       /// Default constructor.
-      by_kind ();
+      by_type ();
 
 #if 201103L <= YY_CPLUSPLUS
       /// Move constructor.
-      by_kind (by_kind&& that);
+      by_type (by_type&& that);
 #endif
 
       /// Copy constructor.
-      by_kind (const by_kind& that);
+      by_type (const by_type& that);
 
-      /// The symbol kind as needed by the constructor.
-      typedef token_kind_type kind_type;
+      /// The symbol type as needed by the constructor.
+      typedef token_type kind_type;
 
       /// Constructor from (external) token numbers.
-      by_kind (kind_type t);
+      by_type (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear () YY_NOEXCEPT;
+      void clear ();
 
-      /// Steal the symbol kind from \a that.
-      void move (by_kind& that);
+      /// Steal the symbol type from \a that.
+      void move (by_type& that);
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+      symbol_number_type type_get () const YY_NOEXCEPT;
 
-      /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      /// The token.
+      token_type token () const YY_NOEXCEPT;
 
-      /// The symbol kind.
-      /// \a S_YYEMPTY when empty.
-      symbol_kind_type kind_;
+      /// The symbol type.
+      /// \a empty_symbol when empty.
+      /// An int, not token_number_type, to be able to store empty_symbol.
+      int type;
     };
 
-    /// Backward compatibility for a private implementation detail (Bison 3.6).
-    typedef by_kind by_type;
-
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_kind>
+    struct symbol_type : basic_symbol<by_type>
     {
       /// Superclass.
-      typedef basic_symbol<by_kind> super_type;
+      typedef basic_symbol<by_type> super_type;
 
       /// Empty symbol.
       symbol_type () {}
@@ -1657,67 +908,74 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
+      {
+        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_ON_FAIL || tok == token::TOKEN_STOP_RETRY_EXIT || tok == token::TOKEN_SERVE_RETRY_EXIT || tok == token::TOKEN_SERVE_RETRY_CONTINUE || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_PARKED_PACKET_LIMIT || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_RESERVATIONS_GLOBAL || tok == token::TOKEN_RESERVATIONS_IN_SUBNET || tok == token::TOKEN_RESERVATIONS_OUT_OF_POOL || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_IP_RESERVATIONS_UNIQUE || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_COMPATIBILITY || tok == token::TOKEN_LENIENT_OPTION_PARSING || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
-#endif
       {
-        PARSER6__ASSERT (tok == token::TOKEN_END
-                   || (token::TOKEN_PARSER6_error <= tok && tok <= token::TOKEN_SUB_CONFIG_CONTROL));
+        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_ON_FAIL || tok == token::TOKEN_STOP_RETRY_EXIT || tok == token::TOKEN_SERVE_RETRY_EXIT || tok == token::TOKEN_SERVE_RETRY_CONTINUE || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_PARKED_PACKET_LIMIT || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_RESERVATIONS_GLOBAL || tok == token::TOKEN_RESERVATIONS_IN_SUBNET || tok == token::TOKEN_RESERVATIONS_OUT_OF_POOL || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_IP_RESERVATIONS_UNIQUE || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_COMPATIBILITY || tok == token::TOKEN_LENIENT_OPTION_PARSING || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, bool v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
+      {
+        YYASSERT (tok == token::TOKEN_BOOLEAN);
+      }
 #else
       symbol_type (int tok, const bool& v, const location_type& l)
         : super_type(token_type (tok), v, l)
-#endif
       {
-        PARSER6__ASSERT (tok == token::TOKEN_BOOLEAN);
+        YYASSERT (tok == token::TOKEN_BOOLEAN);
       }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, double v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
+      {
+        YYASSERT (tok == token::TOKEN_FLOAT);
+      }
 #else
       symbol_type (int tok, const double& v, const location_type& l)
         : super_type(token_type (tok), v, l)
-#endif
       {
-        PARSER6__ASSERT (tok == token::TOKEN_FLOAT);
+        YYASSERT (tok == token::TOKEN_FLOAT);
       }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, int64_t v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
+      {
+        YYASSERT (tok == token::TOKEN_INTEGER);
+      }
 #else
       symbol_type (int tok, const int64_t& v, const location_type& l)
         : super_type(token_type (tok), v, l)
-#endif
       {
-        PARSER6__ASSERT (tok == token::TOKEN_INTEGER);
+        YYASSERT (tok == token::TOKEN_INTEGER);
       }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
+      {
+        YYASSERT (tok == token::TOKEN_STRING);
+      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
-#endif
       {
-        PARSER6__ASSERT (tok == token::TOKEN_STRING);
+        YYASSERT (tok == token::TOKEN_STRING);
       }
+#endif
     };
 
     /// Build a parser object.
     Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
     virtual ~Dhcp6Parser ();
 
-#if 201103L <= YY_CPLUSPLUS
-    /// Non copyable.
-    Dhcp6Parser (const Dhcp6Parser&) = delete;
-    /// Non copyable.
-    Dhcp6Parser& operator= (const Dhcp6Parser&) = delete;
-#endif
-
     /// Parse.  An alias for parse ().
     /// \returns  0 iff parsing succeeded.
     int operator() ();
@@ -1748,10 +1006,6 @@ switch (yykind)
     /// Report a syntax error.
     void error (const syntax_error& err);
 
-    /// The user-facing name of the symbol whose (internal) number is
-    /// YYSYMBOL.  No bounds checking.
-    static std::string symbol_name (symbol_kind_type yysymbol);
-
     // Implementation of make_symbol for each symbol type.
 #if 201103L <= YY_CPLUSPLUS
       static
@@ -1768,36 +1022,6 @@ switch (yykind)
         return symbol_type (token::TOKEN_END, l);
       }
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARSER6_error (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_error, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARSER6_error (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_error, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARSER6_UNDEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_UNDEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARSER6_UNDEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_UNDEF, l);
-      }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -3043,6 +2267,21 @@ switch (yykind)
         return symbol_type (token::TOKEN_ARRAY, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_PARKED_PACKET_LIMIT (location_type l)
+      {
+        return symbol_type (token::TOKEN_PARKED_PACKET_LIMIT, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_PARKED_PACKET_LIMIT (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_PARKED_PACKET_LIMIT, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -4935,47 +4174,24 @@ switch (yykind)
 #endif
 
 
-    class context
-    {
-    public:
-      context (const Dhcp6Parser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
-      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
-      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
-
-      /// Put in YYARG at most YYARGN of the expected tokens, and return the
-      /// number of tokens stored in YYARG.  If YYARG is null, return the
-      /// number of expected tokens (guaranteed to be less than YYNTOKENS).
-      int expected_tokens (symbol_kind_type yyarg[], int yyargn) const;
-
-    private:
-      const Dhcp6Parser& yyparser_;
-      const symbol_type& yyla_;
-    };
-
   private:
-#if YY_CPLUSPLUS < 201103L
-    /// Non copyable.
+    /// This class is not copyable.
     Dhcp6Parser (const Dhcp6Parser&);
-    /// Non copyable.
     Dhcp6Parser& operator= (const Dhcp6Parser&);
-#endif
-
 
-    /// Stored state numbers (used for stacks).
-    typedef short state_type;
-
-    /// The arguments of the error message.
-    int yy_syntax_error_arguments_ (const context& yyctx,
-                                    symbol_kind_type yyarg[], int yyargn) const;
+    /// State numbers.
+    typedef int state_type;
 
     /// Generate an error message.
-    /// \param yyctx     the context in which the error occurred.
-    virtual std::string yysyntax_error_ (const context& yyctx) const;
+    /// \param yystate   the state where the error occurred.
+    /// \param yyla      the lookahead token.
+    virtual std::string yysyntax_error_ (state_type yystate,
+                                         const symbol_type& yyla) const;
+
     /// Compute post-reduction state.
     /// \param yystate   the current state
     /// \param yysym     the nonterminal to push on the stack
-    static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
 
     /// Whether the given \c yypact_ value indicates a defaulted state.
     /// \param yyvalue   the value to check
@@ -4988,66 +4204,63 @@ switch (yykind)
     static const short yypact_ninf_;
     static const signed char yytable_ninf_;
 
-    /// Convert a scanner token kind \a t to a symbol kind.
-    /// In theory \a t should be a token_kind_type, but character literals
-    /// are valid, yet not members of the token_type enum.
-    static symbol_kind_type yytranslate_ (int t);
-
-    /// Convert the symbol name \a n to a form suitable for a diagnostic.
-    static std::string yytnamerr_ (const char *yystr);
+    /// Convert a scanner token number \a t to a symbol number.
+    static token_number_type yytranslate_ (token_type t);
 
-    /// For a symbol, its name in clear.
-    static const char* const yytname_[];
+    // Tables.
+  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+  // STATE-NUM.
+  static const short yypact_[];
 
+  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+  // Performed when YYTABLE does not specify something else to do.  Zero
+  // means the default is an error.
+  static const unsigned short yydefact_[];
 
-    // Tables.
-    // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    // STATE-NUM.
-    static const short yypact_[];
+  // YYPGOTO[NTERM-NUM].
+  static const short yypgoto_[];
 
-    // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-    // Performed when YYTABLE does not specify something else to do.  Zero
-    // means the default is an error.
-    static const short yydefact_[];
+  // YYDEFGOTO[NTERM-NUM].
+  static const short yydefgoto_[];
 
-    // YYPGOTO[NTERM-NUM].
-    static const short yypgoto_[];
+  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+  // positive, shift that token.  If negative, reduce the rule whose
+  // number is the opposite.  If YYTABLE_NINF, syntax error.
+  static const unsigned short yytable_[];
 
-    // YYDEFGOTO[NTERM-NUM].
-    static const short yydefgoto_[];
+  static const short yycheck_[];
 
-    // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-    // positive, shift that token.  If negative, reduce the rule whose
-    // number is the opposite.  If YYTABLE_NINF, syntax error.
-    static const short yytable_[];
+  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+  // symbol of state STATE-NUM.
+  static const unsigned short yystos_[];
 
-    static const short yycheck_[];
+  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+  static const unsigned short yyr1_[];
 
-    // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    // symbol of state STATE-NUM.
-    static const short yystos_[];
+  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+  static const unsigned char yyr2_[];
 
-    // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
-    static const short yyr1_[];
 
-    // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
-    static const signed char yyr2_[];
+    /// Convert the symbol name \a n to a form suitable for a diagnostic.
+    static std::string yytnamerr_ (const char *n);
 
 
+    /// For a symbol, its name in clear.
+    static const char* const yytname_[];
 #if PARSER6_DEBUG
-    // YYRLINE[YYN] -- Source line where rule number YYN was defined.
-    static const short yyrline_[];
+  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+  static const unsigned short yyrline_[];
     /// Report on the debug stream that the rule \a r is going to be reduced.
-    virtual void yy_reduce_print_ (int r) const;
+    virtual void yy_reduce_print_ (int r);
     /// Print the state stack on the debug stream.
-    virtual void yy_stack_print_ () const;
+    virtual void yystack_print_ ();
 
     /// Debugging level.
     int yydebug_;
     /// Debug stream.
     std::ostream* yycdebug_;
 
-    /// \brief Display a symbol kind, value and location.
+    /// \brief Display a symbol type, value and location.
     /// \param yyo    The output stream.
     /// \param yysym  The symbol.
     template <typename Base>
@@ -5068,7 +4281,7 @@ switch (yykind)
       /// Default constructor.
       by_state () YY_NOEXCEPT;
 
-      /// The symbol kind as needed by the constructor.
+      /// The symbol type as needed by the constructor.
       typedef state_type kind_type;
 
       /// Constructor.
@@ -5080,16 +4293,15 @@ switch (yykind)
       /// Record that this symbol is empty.
       void clear () YY_NOEXCEPT;
 
-      /// Steal the symbol kind from \a that.
+      /// Steal the symbol type from \a that.
       void move (by_state& that);
 
-      /// The symbol kind (corresponding to \a state).
-      /// \a symbol_kind::S_YYEMPTY when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+      /// The (internal) type number (corresponding to \a state).
+      /// \a empty_symbol when empty.
+      symbol_number_type type_get () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
-      /// We use the initial state, as it does not have a value.
-      enum { empty_state = 0 };
+      enum { empty_state = -1 };
 
       /// The state.
       /// \a empty when empty.
@@ -5111,10 +4323,6 @@ switch (yykind)
       /// Assignment, needed by push_back by some old implementations.
       /// Moves the contents of that.
       stack_symbol_type& operator= (stack_symbol_type& that);
-
-      /// Assignment, needed by push_back by other implementations.
-      /// Needed by some other old implementations.
-      stack_symbol_type& operator= (const stack_symbol_type& that);
 #endif
     };
 
@@ -5124,38 +4332,48 @@ switch (yykind)
     {
     public:
       // Hide our reversed order.
-      typedef typename S::iterator iterator;
-      typedef typename S::const_iterator const_iterator;
+      typedef typename S::reverse_iterator iterator;
+      typedef typename S::const_reverse_iterator const_iterator;
       typedef typename S::size_type size_type;
-      typedef typename std::ptrdiff_t index_type;
 
       stack (size_type n = 200)
         : seq_ (n)
       {}
 
-#if 201103L <= YY_CPLUSPLUS
-      /// Non copyable.
-      stack (const stack&) = delete;
-      /// Non copyable.
-      stack& operator= (const stack&) = delete;
-#endif
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      T&
+      operator[] (size_type i)
+      {
+        return seq_[size () - 1 - i];
+      }
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      T&
+      operator[] (int i)
+      {
+        return operator[] (size_type (i));
+      }
 
       /// Random access.
       ///
       /// Index 0 returns the topmost element.
       const T&
-      operator[] (index_type i) const
+      operator[] (size_type i) const
       {
-        return seq_[size_type (size () - 1 - i)];
+        return seq_[size () - 1 - i];
       }
 
       /// Random access.
       ///
       /// Index 0 returns the topmost element.
-      T&
-      operator[] (index_type i)
+      const T&
+      operator[] (int i) const
       {
-        return seq_[size_type (size () - 1 - i)];
+        return operator[] (size_type (i));
       }
 
       /// Steal the contents of \a t.
@@ -5170,7 +4388,7 @@ switch (yykind)
 
       /// Pop elements from the stack.
       void
-      pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
+      pop (int n = 1) YY_NOEXCEPT
       {
         for (; 0 < n; --n)
           seq_.pop_back ();
@@ -5184,53 +4402,49 @@ switch (yykind)
       }
 
       /// Number of elements on the stack.
-      index_type
+      size_type
       size () const YY_NOEXCEPT
       {
-        return index_type (seq_.size ());
+        return seq_.size ();
       }
 
       /// Iterator on top of the stack (going downwards).
       const_iterator
       begin () const YY_NOEXCEPT
       {
-        return seq_.begin ();
+        return seq_.rbegin ();
       }
 
       /// Bottom of the stack.
       const_iterator
       end () const YY_NOEXCEPT
       {
-        return seq_.end ();
+        return seq_.rend ();
       }
 
       /// Present a slice of the top of a stack.
       class slice
       {
       public:
-        slice (const stack& stack, index_type range)
+        slice (const stack& stack, int range)
           : stack_ (stack)
           , range_ (range)
         {}
 
         const T&
-        operator[] (index_type i) const
+        operator[] (int i) const
         {
           return stack_[range_ - i];
         }
 
       private:
         const stack& stack_;
-        index_type range_;
+        int range_;
       };
 
     private:
-#if YY_CPLUSPLUS < 201103L
-      /// Non copyable.
       stack (const stack&);
-      /// Non copyable.
       stack& operator= (const stack&);
-#endif
       /// The wrapped container.
       S seq_;
     };
@@ -5263,25 +4477,28 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1314,     ///< Last index in yytable_.
-      yynnts_ = 438,  ///< Number of nonterminal symbols.
-      yyfinal_ = 30 ///< Termination state number.
+      yyeof_ = 0,
+      yylast_ = 1318,     ///< Last index in yytable_.
+      yynnts_ = 439,  ///< Number of nonterminal symbols.
+      yyfinal_ = 30, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 213  ///< Number of tokens.
     };
 
 
     // User arguments.
     isc::dhcp::Parser6Context& ctx;
-
   };
 
   inline
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::yytranslate_ (int t)
+  Dhcp6Parser::token_number_type
+  Dhcp6Parser::yytranslate_ (token_type t)
   {
     // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
     // TOKEN-NUM as returned by yylex.
     static
-    const unsigned char
+    const token_number_type
     translate_table[] =
     {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -5330,52 +4547,95 @@ 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
+     205,   206,   207,   208,   209,   210,   211,   212
     };
-    // Last valid token kind.
-    const int code_max = 466;
+    const unsigned user_token_number_max_ = 467;
+    const token_number_type undef_token_ = 2;
 
-    if (t <= 0)
-      return symbol_kind::S_YYEOF;
-    else if (t <= code_max)
-      return YY_CAST (symbol_kind_type, translate_table[t]);
+    if (static_cast<int> (t) <= yyeof_)
+      return yyeof_;
+    else if (static_cast<unsigned> (t) <= user_token_number_max_)
+      return translate_table[t];
     else
-      return symbol_kind::S_YYUNDEF;
+      return undef_token_;
   }
 
   // basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+    : Base (std::move (that))
+    , value ()
+    , location (std::move (that.location))
+  {
+    switch (this->type_get ())
+    {
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
+        value.move< ElementPtr > (std::move (that.value));
+        break;
+
+      case 212: // "boolean"
+        value.move< bool > (std::move (that.value));
+        break;
+
+      case 211: // "floating point"
+        value.move< double > (std::move (that.value));
+        break;
+
+      case 210: // "integer"
+        value.move< int64_t > (std::move (that.value));
+        break;
+
+      case 209: // "constant string"
+        value.move< std::string > (std::move (that.value));
+        break;
+
+      default:
+        break;
+    }
+
+  }
+#endif
+
   template <typename Base>
   Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
     : Base (that)
     , value ()
     , location (that.location)
   {
-    switch (this->kind ())
+    switch (this->type_get ())
     {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -5387,18 +4647,11 @@ switch (yykind)
 
 
 
-  template <typename Base>
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::basic_symbol<Base>::type_get () const YY_NOEXCEPT
-  {
-    return this->kind ();
-  }
-
   template <typename Base>
   bool
   Dhcp6Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
   {
-    return this->kind () == symbol_kind::S_YYEMPTY;
+    return Base::type_get () == empty_symbol;
   }
 
   template <typename Base>
@@ -5406,32 +4659,32 @@ switch (yykind)
   Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
   {
     super_type::move (s);
-    switch (this->kind ())
+    switch (this->type_get ())
     {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_on_fail_mode: // on_fail_mode
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+      case 229: // value
+      case 233: // map_value
+      case 274: // ddns_replace_client_name_value
+      case 315: // db_type
+      case 332: // on_fail_mode
+      case 422: // hr_mode
+      case 558: // duid_type
+      case 601: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 212: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 211: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 210: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 209: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -5442,63 +4695,92 @@ switch (yykind)
     location = YY_MOVE (s.location);
   }
 
-  // by_kind.
+  // by_type.
   inline
-  Dhcp6Parser::by_kind::by_kind ()
-    : kind_ (symbol_kind::S_YYEMPTY)
+  Dhcp6Parser::by_type::by_type ()
+    : type (empty_symbol)
   {}
 
 #if 201103L <= YY_CPLUSPLUS
   inline
-  Dhcp6Parser::by_kind::by_kind (by_kind&& that)
-    : kind_ (that.kind_)
+  Dhcp6Parser::by_type::by_type (by_type&& that)
+    : type (that.type)
   {
     that.clear ();
   }
 #endif
 
   inline
-  Dhcp6Parser::by_kind::by_kind (const by_kind& that)
-    : kind_ (that.kind_)
+  Dhcp6Parser::by_type::by_type (const by_type& that)
+    : type (that.type)
   {}
 
   inline
-  Dhcp6Parser::by_kind::by_kind (token_kind_type t)
-    : kind_ (yytranslate_ (t))
+  Dhcp6Parser::by_type::by_type (token_type t)
+    : type (yytranslate_ (t))
   {}
 
   inline
   void
-  Dhcp6Parser::by_kind::clear () YY_NOEXCEPT
+  Dhcp6Parser::by_type::clear ()
   {
-    kind_ = symbol_kind::S_YYEMPTY;
+    type = empty_symbol;
   }
 
   inline
   void
-  Dhcp6Parser::by_kind::move (by_kind& that)
+  Dhcp6Parser::by_type::move (by_type& that)
   {
-    kind_ = that.kind_;
+    type = that.type;
     that.clear ();
   }
 
   inline
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::by_kind::kind () const YY_NOEXCEPT
+  int
+  Dhcp6Parser::by_type::type_get () const YY_NOEXCEPT
   {
-    return kind_;
+    return type;
   }
 
   inline
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::by_kind::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::token_type
+  Dhcp6Parser::by_type::token () const YY_NOEXCEPT
   {
-    return this->kind ();
+    // YYTOKNUM[NUM] -- (External) token number corresponding to the
+    // (internal) symbol number NUM (which must be that of a token).  */
+    static
+    const unsigned short
+    yytoken_number_[] =
+    {
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
+     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
+     465,   466,   467
+    };
+    return token_type (yytoken_number_[type]);
   }
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:401
 } } // isc::dhcp
-#line 5502 "dhcp6_parser.h"
+#line 4784 "dhcp6_parser.h" // lalr1.cc:401
 
 
 
index 0c181b8a9f0503fbff644d464b7a490b63d0e157..3871ded5ad5c3b637385471a60ae3be696265e19 100644 (file)
@@ -129,6 +129,7 @@ using namespace std;
   RECORD_TYPES "record-types"
   ENCAPSULATE "encapsulate"
   ARRAY "array"
+  PARKED_PACKET_LIMIT "parked-packet-limit"
 
   SHARED_NETWORKS "shared-networks"
 
@@ -528,6 +529,7 @@ global_param: data_directory
             | dhcp_multi_threading
             | ip_reservations_unique
             | compatibility
+            | parked_packet_limit
             | unknown_map_entry
             ;
 
@@ -744,6 +746,12 @@ server_tag: SERVER_TAG {
     ctx.leave();
 };
 
+parked_packet_limit: PARKED_PACKET_LIMIT COLON INTEGER {
+    ctx.unique("parked-packet-limit", ctx.loc2pos(@1));
+    ElementPtr ppl(new IntElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("parked-packet-limit", ppl);
+};
+
 ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(@1));
     ElementPtr unique(new BoolElement($3, ctx.loc2pos(@3)));
index 75bb6825a7edbd760a461de37e811e0ccc2b0a73..c5ba57513470e40e4cdca456e6537c9e187cb588 100644 (file)
@@ -1027,6 +1027,30 @@ Dhcpv6Srv::processDhcp6Query(Pkt6Ptr& query, Pkt6Ptr& rsp) {
         }
         callout_handle->setArgument("deleted_leases6", deleted_leases);
 
+        // Get the parking limit. Parsing should ensure the value is present.
+        uint32_t parked_packet_limit = 0;
+        data::ConstElementPtr ppl = CfgMgr::instance().
+            getCurrentCfg()->getConfiguredGlobal("parked-packet-limit");
+        if (ppl) {
+            parked_packet_limit = ppl->intValue();
+        }
+
+        if (parked_packet_limit) {
+            const auto& parking_lot = ServerHooks::getServerHooks().
+                getParkingLotPtr("leases6_committed");
+            if (parking_lot && (parking_lot->size() >= parked_packet_limit)) {
+                // We can't park it so we're going to throw it on the floor.
+                LOG_DEBUG(packet6_logger, DBGLVL_PKT_HANDLING,
+                          DHCP6_HOOK_LEASES6_PARKING_LOT_FULL)
+                          .arg(parked_packet_limit)
+                          .arg(query->getLabel());
+                isc::stats::StatsMgr::instance().addValue("pkt6-receive-drop",
+                                                          static_cast<int64_t>(1));
+                rsp.reset();
+                return;
+            }
+        }
+
         // We proactively park the packet. We'll unpark it without invoking
         // the callback (i.e. drop) unless the callout status is set to
         // NEXT_STEP_PARK.  Otherwise the callback we bind here will be
index 90e084aa807aa8c6777a0da6aae49e5bdc35d96e..44005351e0d4c83cc5ca5c08aee2c529b22f4080 100644 (file)
@@ -802,7 +802,8 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
                  (config_pair.first == "statistic-default-sample-age") ||
-                 (config_pair.first == "ip-reservations-unique")) {
+                 (config_pair.first == "ip-reservations-unique") ||
+                 (config_pair.first == "parked-packet-limit")) {
                 CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first,
                                                                         config_pair.second);
                 continue;
index e8036de559a089e89850e3f6830884b673a0ed56..d551b34a38919b159fa531c683e10e44b60c7f20 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.6.
+// A Bison parser, made by GNU Bison 3.3.1.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -38,6 +38,7 @@
 #ifndef YY_PARSER6_LOCATION_HH_INCLUDED
 # define YY_PARSER6_LOCATION_HH_INCLUDED
 
+# include <algorithm> // std::max
 # include <iostream>
 # include <string>
 
 #  endif
 # endif
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // location.cc:339
 namespace isc { namespace dhcp {
-#line 59 "location.hh"
-
+#line 60 "location.hh" // location.cc:339
   /// A point in a source file.
   class position
   {
   public:
-    /// Type for file name.
-    typedef const std::string filename_type;
-    /// Type for line and column numbers.
-    typedef int counter_type;
-
     /// Construct a position.
-    explicit position (filename_type* f = YY_NULLPTR,
-                       counter_type l = 1,
-                       counter_type c = 1)
+    explicit position (std::string* f = YY_NULLPTR,
+                       unsigned l = 1u,
+                       unsigned c = 1u)
       : filename (f)
       , line (l)
       , column (c)
@@ -77,9 +72,9 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (filename_type* fn = YY_NULLPTR,
-                     counter_type l = 1,
-                     counter_type c = 1)
+    void initialize (std::string* fn = YY_NULLPTR,
+                     unsigned l = 1u,
+                     unsigned c = 1u)
     {
       filename = fn;
       line = l;
@@ -89,40 +84,41 @@ namespace isc { namespace dhcp {
     /** \name Line and Column related manipulators
      ** \{ */
     /// (line related) Advance to the COUNT next lines.
-    void lines (counter_type count = 1)
+    void lines (int count = 1)
     {
       if (count)
         {
-          column = 1;
+          column = 1u;
           line = add_ (line, count, 1);
         }
     }
 
     /// (column related) Advance to the COUNT next columns.
-    void columns (counter_type count = 1)
+    void columns (int count = 1)
     {
       column = add_ (column, count, 1);
     }
     /** \} */
 
     /// File name to which this position refers.
-    filename_type* filename;
+    std::string* filename;
     /// Current line number.
-    counter_type line;
+    unsigned line;
     /// Current column number.
-    counter_type column;
+    unsigned column;
 
   private:
     /// Compute max (min, lhs+rhs).
-    static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min)
+    static unsigned add_ (unsigned lhs, int rhs, int min)
     {
-      return lhs + rhs < min ? min : lhs + rhs;
+      return static_cast<unsigned> (std::max (min,
+                                              static_cast<int> (lhs) + rhs));
     }
   };
 
   /// Add \a width columns, in place.
   inline position&
-  operator+= (position& res, position::counter_type width)
+  operator+= (position& res, int width)
   {
     res.columns (width);
     return res;
@@ -130,25 +126,43 @@ namespace isc { namespace dhcp {
 
   /// Add \a width columns.
   inline position
-  operator+ (position res, position::counter_type width)
+  operator+ (position res, int width)
   {
     return res += width;
   }
 
   /// Subtract \a width columns, in place.
   inline position&
-  operator-= (position& res, position::counter_type width)
+  operator-= (position& res, int width)
   {
     return res += -width;
   }
 
   /// Subtract \a width columns.
   inline position
-  operator- (position res, position::counter_type width)
+  operator- (position res, int width)
   {
     return res -= width;
   }
 
+  /// Compare two position objects.
+  inline bool
+  operator== (const position& pos1, const position& pos2)
+  {
+    return (pos1.line == pos2.line
+            && pos1.column == pos2.column
+            && (pos1.filename == pos2.filename
+                || (pos1.filename && pos2.filename
+                    && *pos1.filename == *pos2.filename)));
+  }
+
+  /// Compare two position objects.
+  inline bool
+  operator!= (const position& pos1, const position& pos2)
+  {
+    return !(pos1 == pos2);
+  }
+
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -166,10 +180,6 @@ namespace isc { namespace dhcp {
   class location
   {
   public:
-    /// Type for file name.
-    typedef position::filename_type filename_type;
-    /// Type for line and column numbers.
-    typedef position::counter_type counter_type;
 
     /// Construct a location from \a b to \a e.
     location (const position& b, const position& e)
@@ -184,18 +194,18 @@ namespace isc { namespace dhcp {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (filename_type* f,
-                       counter_type l = 1,
-                       counter_type c = 1)
+    explicit location (std::string* f,
+                       unsigned l = 1u,
+                       unsigned c = 1u)
       : begin (f, l, c)
       , end (f, l, c)
     {}
 
 
     /// Initialization.
-    void initialize (filename_type* f = YY_NULLPTR,
-                     counter_type l = 1,
-                     counter_type c = 1)
+    void initialize (std::string* f = YY_NULLPTR,
+                     unsigned l = 1u,
+                     unsigned c = 1u)
     {
       begin.initialize (f, l, c);
       end = begin;
@@ -211,13 +221,13 @@ namespace isc { namespace dhcp {
     }
 
     /// Extend the current location to the COUNT next columns.
-    void columns (counter_type count = 1)
+    void columns (int count = 1)
     {
       end += count;
     }
 
     /// Extend the current location to the COUNT next lines.
-    void lines (counter_type count = 1)
+    void lines (int count = 1)
     {
       end.lines (count);
     }
@@ -232,49 +242,57 @@ namespace isc { namespace dhcp {
   };
 
   /// Join two locations, in place.
-  inline location&
-  operator+= (location& res, const location& end)
+  inline location& operator+= (location& res, const location& end)
   {
     res.end = end.end;
     return res;
   }
 
   /// Join two locations.
-  inline location
-  operator+ (location res, const location& end)
+  inline location operator+ (location res, const location& end)
   {
     return res += end;
   }
 
   /// Add \a width columns to the end position, in place.
-  inline location&
-  operator+= (location& res, location::counter_type width)
+  inline location& operator+= (location& res, int width)
   {
     res.columns (width);
     return res;
   }
 
   /// Add \a width columns to the end position.
-  inline location
-  operator+ (location res, location::counter_type width)
+  inline location operator+ (location res, int width)
   {
     return res += width;
   }
 
   /// Subtract \a width columns to the end position, in place.
-  inline location&
-  operator-= (location& res, location::counter_type width)
+  inline location& operator-= (location& res, int width)
   {
     return res += -width;
   }
 
   /// Subtract \a width columns to the end position.
-  inline location
-  operator- (location res, location::counter_type width)
+  inline location operator- (location res, int width)
   {
     return res -= width;
   }
 
+  /// Compare two location objects.
+  inline bool
+  operator== (const location& loc1, const location& loc2)
+  {
+    return loc1.begin == loc2.begin && loc1.end == loc2.end;
+  }
+
+  /// Compare two location objects.
+  inline bool
+  operator!= (const location& loc1, const location& loc2)
+  {
+    return !(loc1 == loc2);
+  }
+
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -285,8 +303,7 @@ namespace isc { namespace dhcp {
   std::basic_ostream<YYChar>&
   operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
   {
-    location::counter_type end_col
-      = 0 < loc.end.column ? loc.end.column - 1 : 0;
+    unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
     ostr << loc.begin;
     if (loc.end.filename
         && (!loc.begin.filename
@@ -299,8 +316,7 @@ namespace isc { namespace dhcp {
     return ostr;
   }
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // location.cc:339
 } } // isc::dhcp
-#line 305 "location.hh"
-
+#line 322 "location.hh" // location.cc:339
 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index 46ba9b8e9db7b056b1578f3a15e25192f76170ef..892ca4cd0cf18a0259ab9a01c65e908be479d776 100644 (file)
@@ -11,6 +11,7 @@
 #include <cc/simple_parser.h>
 #include <cc/cfg_to_element.h>
 #include <testutils/user_context_utils.h>
+#include <testutils/user_context_utils.h>
 #include <dhcp/tests/iface_mgr_test_config.h>
 #include <dhcpsrv/cfgmgr.h>
 #include <dhcpsrv/parsers/simple_parser6.h>
@@ -69,6 +70,7 @@ namespace {
 ///@{
 /// @brief extracted configurations
 const char* EXTRACTED_CONFIGS[] = {
+/// put this after const char* EXTRACTED_CONFIGS[] = {
     // CONFIGURATION 0
 "{\n"
 "        \"interfaces-config\": {\n"
@@ -2012,11 +2014,43 @@ const char* EXTRACTED_CONFIGS[] = {
 "            \"thread-pool-size\": 48\n"
 "        },\n"
 "        \"subnet6\": [ ]\n"
+"    }\n",
+    // CONFIGURATION 63
+"{\n"
+"        \"client-classes\": [\n"
+"            {\n"
+"                \"max-preferred-lifetime\": 6000,\n"
+"                \"max-valid-lifetime\": 3000,\n"
+"                \"min-preferred-lifetime\": 4000,\n"
+"                \"min-valid-lifetime\": 1000,\n"
+"                \"name\": \"one\",\n"
+"                \"preferred-lifetime\": 5000,\n"
+"                \"valid-lifetime\": 2000\n"
+"            },\n"
+"            {\n"
+"                \"name\": \"two\"\n"
+"            }\n"
+"        ],\n"
+"        \"interfaces-config\": {\n"
+"            \"interfaces\": [ \"*\" ],\n"
+"            \"re-detect\": false\n"
+"        },\n"
+"        \"subnet6\": [\n"
+"            {\n"
+"                \"pools\": [\n"
+"                    {\n"
+"                        \"pool\": \"2001:db8:1::1 - 2001:db8:1::ffff\"\n"
+"                    }\n"
+"                ],\n"
+"                \"subnet\": \"2001:db8:1::/64\"\n"
+"            }\n"
+"        ]\n"
 "    }\n"
 };
 
 /// @brief unparsed configurations
 const char* UNPARSED_CONFIGS[] = {
+///put this after const char* UNPARSED_CONFIGS[] = {
     // CONFIGURATION 0
 "{\n"
 "        \"calculate-tee-times\": true,\n"
@@ -2073,6 +2107,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -2161,6 +2196,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -2275,6 +2311,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -2460,6 +2497,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -2645,6 +2683,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -2834,6 +2873,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -2948,6 +2988,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3059,6 +3100,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3170,6 +3212,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3313,6 +3356,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3423,6 +3467,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3535,6 +3580,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3649,6 +3695,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3778,6 +3825,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -3900,6 +3948,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"ipv6-address\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -3992,6 +4041,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"record\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -4093,6 +4143,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"ipv4-address\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -4185,6 +4236,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"uint32\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -4277,6 +4329,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"uint32\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -4376,6 +4429,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -4486,6 +4540,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -4640,6 +4695,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"uint32\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -4786,6 +4842,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"ipv4-address\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -4923,6 +4980,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"ipv4-address\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5033,6 +5091,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5186,6 +5245,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5364,6 +5424,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5493,6 +5554,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"string\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5603,6 +5665,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5687,6 +5750,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5771,6 +5835,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5881,6 +5946,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -5991,6 +6057,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -6179,6 +6246,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -6304,6 +6372,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -6437,6 +6506,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -6547,6 +6617,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -6657,6 +6728,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -6767,6 +6839,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -7012,6 +7085,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"type\": \"uint32\"\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -7135,6 +7209,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -7219,6 +7294,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -7303,6 +7379,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -7579,6 +7656,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -7717,6 +7795,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"23\", \"37\", \"65\" ],\n"
@@ -7801,6 +7880,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -7883,6 +7963,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -7965,6 +8046,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -8047,6 +8129,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -8143,6 +8226,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8253,6 +8337,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8363,6 +8448,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8474,6 +8560,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8590,6 +8677,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8706,6 +8794,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8818,6 +8907,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -8931,6 +9021,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -9063,6 +9154,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -9207,6 +9299,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                }\n"
 "            }\n"
 "        ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -9377,6 +9470,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -9579,6 +9673,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3000,\n"
 "        \"rebind-timer\": 2000,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
@@ -9663,6 +9758,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -9745,6 +9841,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        },\n"
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
 "        \"preferred-lifetime\": 3600,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
 "        \"reservations-global\": false,\n"
@@ -9770,6 +9867,129 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"t1-percent\": 0.5,\n"
 "        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
+"    }\n",
+    // CONFIGURATION 63
+"{\n"
+"        \"calculate-tee-times\": true,\n"
+"        \"client-classes\": [\n"
+"            {\n"
+"                \"max-preferred-lifetime\": 6000,\n"
+"                \"max-valid-lifetime\": 3000,\n"
+"                \"min-preferred-lifetime\": 4000,\n"
+"                \"min-valid-lifetime\": 1000,\n"
+"                \"name\": \"one\",\n"
+"                \"option-data\": [ ],\n"
+"                \"preferred-lifetime\": 5000,\n"
+"                \"valid-lifetime\": 2000\n"
+"            },\n"
+"            {\n"
+"                \"name\": \"two\",\n"
+"                \"option-data\": [ ]\n"
+"            }\n"
+"        ],\n"
+"        \"ddns-generated-prefix\": \"myhost\",\n"
+"        \"ddns-override-client-update\": false,\n"
+"        \"ddns-override-no-update\": false,\n"
+"        \"ddns-qualifying-suffix\": \"\",\n"
+"        \"ddns-replace-client-name\": \"never\",\n"
+"        \"ddns-send-updates\": true,\n"
+"        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
+"        \"decline-probation-period\": 86400,\n"
+"        \"dhcp-ddns\": {\n"
+"            \"enable-updates\": false,\n"
+"            \"max-queue-size\": 1024,\n"
+"            \"ncr-format\": \"JSON\",\n"
+"            \"ncr-protocol\": \"UDP\",\n"
+"            \"sender-ip\": \"0.0.0.0\",\n"
+"            \"sender-port\": 0,\n"
+"            \"server-ip\": \"127.0.0.1\",\n"
+"            \"server-port\": 53001\n"
+"        },\n"
+"        \"dhcp-queue-control\": {\n"
+"            \"capacity\": 64,\n"
+"            \"enable-queue\": false,\n"
+"            \"queue-type\": \"kea-ring6\"\n"
+"        },\n"
+"        \"dhcp4o6-port\": 0,\n"
+"        \"expired-leases-processing\": {\n"
+"            \"flush-reclaimed-timer-wait-time\": 25,\n"
+"            \"hold-reclaimed-time\": 3600,\n"
+"            \"max-reclaim-leases\": 100,\n"
+"            \"max-reclaim-time\": 250,\n"
+"            \"reclaim-timer-wait-time\": 10,\n"
+"            \"unwarned-reclaim-cycles\": 5\n"
+"        },\n"
+"        \"hooks-libraries\": [ ],\n"
+"        \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
+"        \"hostname-char-replacement\": \"\",\n"
+"        \"hostname-char-set\": \"[^A-Za-z0-9.-]\",\n"
+"        \"interfaces-config\": {\n"
+"            \"interfaces\": [ \"*\" ],\n"
+"            \"re-detect\": false\n"
+"        },\n"
+"        \"ip-reservations-unique\": true,\n"
+"        \"lease-database\": {\n"
+"            \"type\": \"memfile\"\n"
+"        },\n"
+"        \"mac-sources\": [ \"any\" ],\n"
+"        \"multi-threading\": {\n"
+"            \"enable-multi-threading\": false,\n"
+"            \"packet-queue-size\": 64,\n"
+"            \"thread-pool-size\": 0\n"
+"        },\n"
+"        \"option-data\": [ ],\n"
+"        \"option-def\": [ ],\n"
+"        \"parked-packet-limit\": 256,\n"
+"        \"preferred-lifetime\": 3600,\n"
+"        \"relay-supplied-options\": [ \"65\" ],\n"
+"        \"reservations-global\": false,\n"
+"        \"reservations-in-subnet\": true,\n"
+"        \"reservations-out-of-pool\": false,\n"
+"        \"sanity-checks\": {\n"
+"            \"lease-checks\": \"warn\"\n"
+"        },\n"
+"        \"server-id\": {\n"
+"            \"enterprise-id\": 0,\n"
+"            \"htype\": 0,\n"
+"            \"identifier\": \"\",\n"
+"            \"persist\": true,\n"
+"            \"time\": 0,\n"
+"            \"type\": \"LLT\"\n"
+"        },\n"
+"        \"server-tag\": \"\",\n"
+"        \"shared-networks\": [ ],\n"
+"        \"statistic-default-sample-age\": 0,\n"
+"        \"statistic-default-sample-count\": 20,\n"
+"        \"store-extended-info\": false,\n"
+"        \"subnet6\": [\n"
+"            {\n"
+"                \"calculate-tee-times\": true,\n"
+"                \"id\": 1,\n"
+"                \"option-data\": [ ],\n"
+"                \"pd-pools\": [ ],\n"
+"                \"pools\": [\n"
+"                    {\n"
+"                        \"option-data\": [ ],\n"
+"                        \"pool\": \"2001:db8:1::1-2001:db8:1::ffff\"\n"
+"                    }\n"
+"                ],\n"
+"                \"preferred-lifetime\": 3600,\n"
+"                \"rapid-commit\": false,\n"
+"                \"relay\": {\n"
+"                    \"ip-addresses\": [ ]\n"
+"                },\n"
+"                \"reservations\": [ ],\n"
+"                \"store-extended-info\": false,\n"
+"                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
+"                \"valid-lifetime\": 7200\n"
+"            }\n"
+"        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
+"        \"valid-lifetime\": 7200\n"
 "    }\n"
 };
 
index e069fb64b8d4562fae4ff586370b0b18beb20744..a4252af56e93c7bb3cf5fdce85772da3a9ea9836 100644 (file)
@@ -97,6 +97,7 @@ const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = {
     { "ddns-update-on-renew",           Element::boolean },
     { "ddns-use-conflict-resolution",   Element::boolean },
     { "compatibility",                  Element::map },
+    { "parked-packet-limit",            Element::integer },
 };
 
 /// @brief This table defines default global values for DHCPv6
@@ -129,7 +130,8 @@ const SimpleDefaults SimpleParser6::GLOBAL6_DEFAULTS = {
     { "statistic-default-sample-age",   Element::integer, "0" },
     { "ip-reservations-unique",         Element::boolean, "true" },
     { "ddns-update-on-renew",           Element::boolean, "false" },
-    { "ddns-use-conflict-resolution",   Element::boolean, "true" }
+    { "ddns-use-conflict-resolution",   Element::boolean, "true" },
+    { "parked-packet-limit",            Element::integer, "256" }
 };
 
 /// @brief This table defines all option definition parameters.