]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#129,!55] Add missing global keyword parsing to kea-dhcp6
authorThomas Markwalder <tmark@isc.org>
Tue, 2 Oct 2018 15:22:23 +0000 (11:22 -0400)
committerTomek Mrugalski <tomasz@isc.org>
Tue, 30 Oct 2018 10:06:19 +0000 (11:06 +0100)
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
    adde keyword value of "global"

src/bin/dhcp6/tests/config_parser_unittest.cc
    TEST_F(Dhcp6ParserTest, hostReservationPerSubnet) - added check
    for "global" mode value

src/bin/dhcp6/tests/get_config_unittest.cc
     Updated generated config tests

15 files changed:
src/bin/agent/location.hh
src/bin/agent/position.hh
src/bin/agent/stack.hh
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/tests/config_parser_unittest.cc
src/bin/dhcp6/tests/get_config_unittest.cc
src/lib/eval/location.hh
src/lib/eval/parser.cc
src/lib/eval/parser.h
src/lib/eval/position.hh
src/lib/eval/stack.hh

index c978ea584a5f6f9adf19a68a73471bf3a5f87c94..851b154d3e2041e65526af4ff623b898168547de 100644 (file)
@@ -1,4 +1,3 @@
-// Generated 201804111444
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 4678102783ffab04ca4ef37ff420d797a329b0e2..7bb77d373c134338127f42eab08812ac49b4ffe4 100644 (file)
@@ -1,4 +1,3 @@
-// Generated 201804111444
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index efca5678c7c6f6bc20791f4b3b108798869d509e..db8c4dfa0356a925a87371698ba4f4d4f05ee4ce 100644 (file)
@@ -1,4 +1,3 @@
-// Generated 201804111444
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index a391ebfe956b7ead3ab9b560a1e60cea641d45af..167e8dcdea75ec0040ce75670dbd478acd70a04f 100644 (file)
@@ -1,6 +1,6 @@
-#line 2 "dhcp6_lexer.cc"
+#line 1 "dhcp6_lexer.cc"
 
-#line 4 "dhcp6_lexer.cc"
+#line 3 "dhcp6_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 178
-#define YY_END_OF_BUFFER 179
+#define YY_NUM_RULES 176
+#define YY_END_OF_BUFFER 177
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,167 +700,165 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1446] =
+static const flex_int16_t yy_accept[1426] =
     {   0,
-      171,  171,    0,    0,    0,    0,    0,    0,    0,    0,
-      179,  177,   10,   11,  177,    1,  171,  168,  171,  171,
-      177,  170,  169,  177,  177,  177,  177,  177,  164,  165,
-      177,  177,  177,  166,  167,    5,    5,    5,  177,  177,
-      177,   10,   11,    0,    0,  160,    0,    0,    0,    0,
+      169,  169,    0,    0,    0,    0,    0,    0,    0,    0,
+      177,  175,   10,   11,  175,    1,  169,  166,  169,  169,
+      175,  168,  167,  175,  175,  175,  175,  175,  162,  163,
+      175,  175,  175,  164,  165,    5,    5,    5,  175,  175,
+      175,   10,   11,    0,    0,  158,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    1,  171,
-      171,    0,  170,  171,    3,    2,    6,    0,  171,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  169,
+      169,    0,  168,  169,    3,    2,    6,    0,  169,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      161,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  163,    0,    0,    0,
+      159,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  161,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    2,    0,    0,    0,
-        0,    0,    0,    0,    8,    0,    0,    0,    0,  139,
-        0,    0,  140,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
+        0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
+      137,    0,    0,  138,    0,    0,    0,    0,    0,    0,
 
-        0,  162,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  160,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   95,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   92,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  176,  174,
-        0,  173,  172,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      174,  172,    0,  171,  170,    0,    0,    0,    0,    0,
 
-      138,    0,    0,   29,    0,   28,    0,    0,  101,    0,
-        0,    0,    0,    0,    0,    0,    0,   54,    0,    0,
+        0,    0,  136,    0,    0,   29,    0,   28,    0,    0,
+       99,    0,    0,    0,    0,    0,    0,    0,   52,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   99,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  175,  172,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  173,
 
-        0,    0,    0,    0,    0,    0,    0,   30,    0,    0,
-       32,    0,    0,    0,    0,    0,  102,    0,    0,    0,
-        0,    0,    0,   80,    0,    0,    0,    0,    0,    0,
-      123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   57,    0,    0,    0,    0,    0,    0,    0,    0,
+      170,    0,    0,    0,    0,    0,    0,    0,    0,   30,
+        0,    0,   32,    0,    0,    0,    0,    0,  100,    0,
+        0,    0,    0,    0,   77,    0,    0,    0,    0,    0,
+        0,  121,    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,   79,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   89,    0,   58,    0,    0,
+        0,    0,    0,    0,   76,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   86,    0,   56,
         0,    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,  143,   50,    0,   55,
-        0,    0,    0,    0,    0,    0,  157,   38,    0,   35,
-        0,   34,    0,    0,    0,  131,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
-        0,    0,    0,  142,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   52,
-        0,    0,   33,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   82,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  132,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,  127,    0,    0,
-        0,    0,    0,    0,    7,   36,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  116,  141,   48,
+        0,   53,    0,    0,    0,    0,    0,    0,  155,   38,
+        0,   35,    0,   34,    0,    0,    0,  129,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  108,    0,    0,    0,
+        0,    0,    0,    0,    0,  140,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   50,    0,    0,   33,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   79,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  130,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  125,
+        0,    0,    0,    0,    0,    0,    7,   36,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  112,    0,    0,    0,    0,    0,    0,  109,
-        0,    0,    0,    0,    0,    0,    0,    0,   84,    0,
+        0,    0,    0,    0,   98,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
+        0,  107,    0,    0,    0,    0,    0,    0,    0,    0,
+       81,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   92,    0,    0,    0,    0,    0,    0,    0,    0,
-      106,    0,    0,    0,    0,    0,   91,    0,    0,    0,
+        0,    0,    0,   89,    0,    0,    0,    0,    0,    0,
+        0,    0,  104,    0,    0,    0,    0,    0,   88,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  126,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  124,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      136,  107,    0,    0,    0,    0,  111,   51,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   59,    0,
+      134,  105,    0,    0,    0,    0,  109,   49,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   57,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   75,    0,    0,
+        0,    0,    0,    0,    0,    0,   72,    0,    0,    0,
 
-        0,    0,    0,    0,  158,    0,    0,    0,    0,    0,
+        0,    0,    0,  156,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  123,
+        0,    0,    0,    0,    0,    0,   60,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   98,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  125,    0,    0,    0,    0,    0,    0,   62,
+        0,    0,    0,   54,   80,    0,    0,    0,  120,    0,
+        0,    0,   47,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   56,   83,    0,    0,
-        0,  122,    0,    0,    0,   49,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  114,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  156,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   93,    0,    0,    0,    0,    0,    0,
+        0,  154,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   41,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   16,    0,  137,   14,    0,    0,    0,    0,    0,
+        0,    0,    0,   41,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   16,    0,  135,   14,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  128,  113,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  126,  111,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  122,  139,    0,   40,    0,  131,
 
-        0,    0,    0,  124,  141,    0,   40,    0,  133,    0,
-        0,    0,    0,    0,    0,    0,    0,   20,    0,    0,
-        0,   77,    0,    0,    0,    0,  135,   53,    0,   85,
+        0,    0,    0,    0,    0,    0,    0,    0,   20,    0,
+        0,    0,   74,    0,    0,    0,    0,  133,   51,    0,
+       82,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   78,    0,
+        0,    0,    0,    0,    0,    0,    0,  128,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  101,    0,    0,    0,    0,    0,
+       75,   97,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   69,    0,    0,    0,    0,    0,    0,
+
+       17,   15,    0,  153,  152,    0,   64,    0,    0,    0,
+        0,    0,   31,    0,  115,    0,    0,    0,    0,    0,
+        0,  150,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   91,    0,  119,   43,    0,   58,    0,
+        0,    0,    0,   19,    0,    0,    0,    0,    0,    0,
+       93,   70,    0,    0,  127,    0,    0,    0,    0,    0,
+      118,    0,    0,    0,    0,   87,    0,  157,    0,    0,
+        0,    0,    0,    0,    0,   85,    0,  142,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   74,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   81,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  130,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  103,    0,    0,    0,
-        0,    0,   78,  100,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,   71,    0,    0,    0,    0,
-        0,    0,   17,   15,    0,  155,  154,    0,   66,    0,
-        0,    0,    0,    0,   31,    0,  117,    0,    0,    0,
-        0,    0,    0,    0,    0,  152,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   94,    0,  121,
-       43,    0,   60,    0,    0,    0,    0,   19,    0,    0,
-        0,    0,    0,    0,   96,   72,    0,    0,  129,    0,
-        0,    0,    0,    0,  120,    0,    0,    0,    0,   90,
-        0,  159,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   88,    0,  144,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,   42,    0,   63,    0,
+        0,    0,    0,  113,    0,   65,  151,    0,   12,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   45,    0,
+        0,   44,   18,    0,    0,    0,    0,  106,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   68,    0,    0,   59,    0,   83,    0,    0,    0,
+        0,    0,  132,    0,    0,    0,   46,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   42,    0,   65,    0,    0,    0,    0,  115,
-       47,    0,    0,   67,  153,    0,   12,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   45,    0,    0,   44,
-       18,    0,    0,    0,    0,  108,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   70,
-        0,    0,    0,   61,    0,   86,    0,    0,    0,    0,
-        0,  134,    0,    0,    0,   46,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   64,
-
-        0,    0,   76,    0,   37,    0,   48,    0,    0,    0,
-        0,   25,    0,    0,    0,    0,    0,    0,  150,    0,
-      119,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       97,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       62,    0,    0,   73,    0,   37,    0,    0,    0,    0,
+        0,   25,    0,    0,    0,    0,    0,    0,  148,    0,
+
+      117,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        26,   39,    0,    0,    0,    0,    0,   13,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  149,    0,    0,   22,   69,    0,    0,    0,
-        0,    0,    0,   21,    0,   87,    0,    0,  148,    0,
-        0,   68,    0,    0,   63,    0,   24,    0,    0,    0,
+        0,    0,  147,    0,    0,   22,   67,    0,    0,    0,
+        0,    0,    0,   21,    0,   84,    0,    0,  146,    0,
+        0,   66,    0,    0,   61,    0,   24,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   23,    0,  104,  116,    0,    0,
-        0,    0,    0,    0,  146,  151,   73,    0,    0,    0,
-        0,  145,    0,    0,   27,    0,    0,    0,    0,    0,
-      105,    0,    0,  147,    0
+        0,    0,    0,    0,   23,    0,  102,  114,    0,    0,
+
+        0,    0,    0,    0,  144,  149,   71,    0,    0,    0,
+        0,  143,    0,    0,   27,    0,    0,    0,    0,    0,
+      103,    0,    0,  145,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -907,351 +905,347 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1458] =
+static const flex_int16_t yy_base[1438] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1809, 1810,   32, 1805,  141,    0,  201, 1810,  206,   88,
-       11,  213, 1810, 1787,  114,   25,    2,    6, 1810, 1810,
-       73,   11,   17, 1810, 1810, 1810,  104, 1793, 1748,    0,
-     1785,  107, 1800,  217,  241, 1810,  185, 1744, 1750, 1770,
+     1790, 1791,   32, 1786,  141,    0,  201, 1791,  206,   88,
+       11,  213, 1791, 1768,  114,   25,    2,    6, 1791, 1791,
+       73,   11,   17, 1791, 1791, 1791,  104, 1774, 1729,    0,
+     1766,  107, 1781,  217,  241, 1791,  185, 1725, 1731, 1751,
        93,   58,  190,   91,  211,  200,   14,  267,  213,  175,
-      269,   64,  231, 1751,  187,   75, 1750,  274,  188,  290,
-      278,  297, 1733,  195,  302,  316,  316, 1752,    0,  355,
-      360,  372,  377,  380, 1810,    0, 1810,  267,  295,  296,
-      327,  283,  361,  368,  293, 1810, 1749, 1788, 1810,  359,
-
-     1810,  393,  341, 1736, 1746, 1785,  369,  220,  249, 1740,
-      364,  372,  373,  380,  385, 1783,    0,  444,  375, 1727,
-     1735,  364, 1731, 1720, 1721,  372, 1737, 1720, 1729,  399,
-      200,  371, 1723,  389, 1711, 1767,  416, 1714, 1765, 1707,
-     1730, 1727, 1727, 1721,  369, 1714, 1707, 1712, 1706,  409,
-     1717, 1710, 1701, 1700, 1714,  387, 1750, 1699,  414, 1711,
-     1714, 1698,  441, 1699,  416, 1711, 1708, 1709, 1707,  394,
-     1689, 1694, 1690, 1682, 1699, 1691,    0,  421,  385,  436,
-      437,  449,  454, 1690, 1810,    0,  461, 1681, 1684, 1810,
-      446,  464, 1810, 1736, 1691,  470, 1734,  472, 1733,  476,
-
-     1732, 1810,  520, 1731,  486, 1692, 1687, 1686, 1677,  460,
-     1726, 1720, 1686, 1665, 1673, 1679, 1667, 1681, 1677, 1678,
-     1678, 1673, 1665, 1667, 1651, 1655, 1668, 1668, 1660, 1650,
-     1653, 1667, 1810, 1653, 1661, 1664, 1645, 1644, 1694, 1643,
-     1653, 1691,  508, 1652, 1640, 1651, 1687,  489, 1691, 1628,
-     1643,    9, 1633, 1649, 1630, 1632, 1628, 1634, 1625, 1624,
-     1637, 1630, 1632, 1636, 1635, 1629,   80, 1636, 1631, 1623,
-     1613, 1628, 1623, 1627, 1608, 1624, 1610, 1616, 1623, 1611,
-      348, 1604, 1618, 1617, 1620, 1602, 1610,  490, 1810, 1810,
-      491, 1810, 1810, 1597,    0,  472, 1599,  532,  501, 1653,
-
-     1810, 1606,  489, 1810, 1651, 1810, 1645,  560, 1810,  485,
-     1587, 1597, 1647, 1604, 1599, 1602,  466, 1810, 1600, 1642,
-     1597, 1594, 1595,  303, 1599, 1637, 1587, 1582, 1579, 1575,
-     1577, 1626, 1585, 1574, 1623, 1571,  566, 1584, 1584, 1567,
-     1568, 1581, 1568, 1578, 1573, 1580, 1575, 1560,  452, 1569,
-     1572, 1567, 1563, 1611,  502,  496, 1810, 1605, 1557, 1556,
-     1549, 1551, 1555, 1544, 1551, 1556,  525, 1601, 1556,  300,
-     1553, 1557, 1555, 1544, 1544, 1556,  471, 1531, 1532, 1553,
-      506, 1535, 1532, 1546, 1545, 1531, 1543, 1542, 1541, 1540,
-      206, 1581, 1580, 1579, 1523,  549, 1536, 1810, 1810, 1535,
-
-        0,  518, 1523, 1574, 1573, 1531, 1571, 1810, 1519, 1569,
-     1810,  558,  615,  529, 1568, 1510, 1810, 1515, 1521, 1524,
-     1523, 1510, 1509, 1810, 1511, 1508, 1520, 1516, 1504, 1506,
-     1810, 1512, 1497, 1499, 1510, 1508, 1503,  583, 1510, 1492,
-     1541, 1810, 1490, 1506, 1538, 1542, 1500, 1494, 1496, 1497,
-     1499, 1531, 1484, 1479, 1478, 1480, 1473, 1488, 1466, 1473,
-     1478, 1526, 1810, 1473, 1469, 1523, 1476, 1470, 1477, 1462,
-     1472, 1475, 1464, 1463, 1458, 1810, 1513, 1810, 1457, 1456,
-     1449, 1466, 1503, 1450, 1455, 1464, 1458, 1452, 1461,  586,
-     1496, 1460, 1443, 1443, 1438, 1434, 1440, 1439, 1447, 1451,
-
-     1434, 1490, 1432, 1446, 1435, 1810, 1810, 1810, 1435, 1810,
-     1445, 1479, 1441,    0, 1482, 1432, 1810, 1810, 1429, 1810,
-     1435, 1810,  540,  560,  589, 1810, 1473, 1420, 1471, 1418,
-     1417, 1424, 1417, 1429, 1428, 1412, 1427, 1457, 1424, 1460,
-     1406, 1408, 1420, 1420, 1419, 1810, 1404, 1401, 1415, 1407,
-     1413, 1404, 1412, 1810, 1397, 1408, 1412, 1394, 1408,  532,
-     1390, 1384, 1389, 1386, 1401, 1402, 1399, 1440, 1397, 1810,
-     1383, 1385, 1810, 1393, 1430, 1429,  519, 1392, 1375, 1376,
-     1381, 1372, 1810, 1386, 1372,  605, 1364, 1385, 1382, 1374,
-     1417, 1371, 1378, 1414, 1810, 1362, 1360, 1374, 1358, 1372,
-
-     1375, 1407, 1406, 1405, 1352, 1403, 1402, 1810,  596, 1364,
-     1364, 1362, 1351, 1353, 1810, 1810, 1396, 1344, 1399,  561,
-      574,  551, 1358, 1397,  572, 1391, 1390, 1389, 1343, 1333,
-     1386, 1348, 1338, 1383, 1346, 1328, 1336, 1338, 1342, 1377,
-     1381, 1338, 1337, 1338, 1331, 1320, 1333, 1336, 1331, 1326,
-     1331, 1328, 1327, 1323, 1329, 1324, 1365, 1364, 1308, 1304,
-      577, 1361, 1810, 1360, 1309, 1301, 1352, 1315, 1302, 1810,
-     1302, 1311, 1310, 1310, 1294, 1349, 1292, 1305, 1810, 1297,
-     1289, 1298, 1291, 1302, 1279, 1283, 1334, 1298, 1280, 1278,
-     1289, 1329, 1328, 1327, 1274, 1290,  568,  591, 1267, 1277,
-
-      585, 1810, 1327, 1273, 1283, 1283, 1272, 1276, 1283, 1320,
-     1810, 1314,  610, 1267, 1275, 1267, 1810, 1263, 1276, 1256,
-     1259, 1255, 1272, 1267, 1255, 1266, 1250, 1252,    2,    0,
-       80,   64,  230,  312, 1810,  386,  416,  504,  556,  562,
-      640,  551,  563,  578,  585,  572,  639,  599,  586,  591,
-     1810, 1810,  609,  608,  613,  601, 1810, 1810,  621,  608,
-      606,  625,  610,  611,  660,  613,  669,  670, 1810,  617,
-      631,  631,  674,  624,  626,  620,  678,  633,  623,  624,
-      620,  630,  634,  645,  629,  647,  642,  644,  637,  639,
-      651,  641,  656,  695,  654,  659,  636, 1810,  661,  651,
-
-      696,  645,  660,  661, 1810,  680,  688,  668,  658,  672,
-      660,  655,  667,  662,  663,  659,  668,  663,  714,  720,
-      669, 1810,  681,  666,  682,  672,  684,  678,  723,  691,
-      676,  677, 1810,  694,  697,  680,  682,  738,  683, 1810,
-      700,  703,  683,  702,  740,  700,  696,  691,  709,  708,
-      694,  709,  701,  697,  715,  700, 1810, 1810,  708,  753,
-      708, 1810,  716,  711,  762, 1810,  713,  718,  760,  714,
-      715,  727,  721,  725,  723,  721,  732,  775,  721,  777,
-      778,  724,  736, 1810,  724,  732,  730,  735,  747,  731,
-      745,  746,  747,  763,  768,  742,  752,  739,  739,  759,
-
-      748,  753,  760,  801,  802,  751,  755, 1810,  750,  768,
-      765,  803,  754,  772,  773,  759,  767,  776,  756,  771,
-      778,  820,  821, 1810,  776,  823,  824,  777,  787,  789,
-      773,  774,  781,  790,  833,  782,  781,  798,  837,  789,
-      793,  791,  789,  842,  843,  795,  845,  841,  801, 1810,
-      806,  799,  790,  809,  803,  798,  808,  805,  810,  806,
-      818, 1810,  802, 1810, 1810,  803,  861,  802,  821,  822,
-      819,  805,  826,  808,  813,  820,  853,  844,  816,  875,
-      820,  822,  839,  837,  829,  833, 1810, 1810,  843,  841,
-      827,  828,  886,  841,  846,  833,  844,  836,  842,  838,
-
-      856,  858,  859, 1810, 1810,  857, 1810,  859, 1810,  844,
-      846,  865,  855,  905,  860,  902,  868, 1810,  860,  852,
-      911, 1810,  912,  861,  868,  910, 1810, 1810,  870, 1810,
-      861,  861,  864,  878,  883,  866,  877,  924,  883,  884,
-      885,  923,  881,  930,  931, 1810,  880,  933,  934,  876,
-      936,  897,  881,  893,  883,  913,  942,  902, 1810,  944,
-      893,  908,  895,  891,  907,  912,  900,  952,  911, 1810,
-      913,  912,  914,  907,  916,  917,  914,  904,  907,  907,
-      964,  913,  966,  967,  912,  970, 1810,  908,  923,  916,
-      974,  929, 1810, 1810,  925,  935,  920,  938,  924,  983,
-
-      984,  930,  941,  988,  947, 1810,  939,  939,  941,  943,
-      994,  939, 1810, 1810,  941, 1810, 1810,  955, 1810,  949,
-      999,  950, 1001,  983, 1810,  961, 1810,  948,  956,  950,
-      949,  952,  952,  953, 1011, 1810,  956, 1013,  968,  959,
-      974,  974,  977,  977,  974, 1016,  980, 1810,  972, 1810,
-     1810,  982, 1810,  984,  985,  982, 1024, 1810,  975,  975,
-      981,  980,  992,  992, 1810, 1810, 1031,  980, 1810,  997,
-      982,  982,  984,  990, 1810, 1043,  996, 1045, 1008, 1810,
-     1005, 1810, 1024, 1044, 1050, 1051, 1010,  996, 1054, 1055,
-     1010, 1810, 1057, 1810,  997, 1054, 1019, 1015, 1057, 1007,
-
-     1012, 1010, 1067, 1025, 1069, 1070, 1033, 1022, 1016, 1032,
-     1076, 1020, 1037, 1022, 1037, 1021, 1077, 1078, 1079, 1028,
-     1081, 1046, 1810, 1032, 1810, 1043, 1090, 1062, 1049, 1810,
-     1810, 1037, 1094, 1810, 1810, 1043, 1810, 1096, 1044, 1093,
-     1038, 1043, 1102, 1052, 1062, 1063, 1810, 1106, 1061, 1810,
-     1810, 1052, 1067, 1055, 1070, 1810, 1107, 1075, 1068, 1069,
-     1078, 1060, 1066, 1069, 1121, 1082, 1082, 1125, 1076, 1810,
-     1127, 1074, 1129, 1810, 1079, 1810, 1082, 1077, 1076, 1134,
-     1089, 1810, 1131, 1084, 1081, 1810, 1095, 1098, 1141, 1096,
-     1143, 1086, 1088, 1096, 1086, 1102, 1103, 1097, 1113, 1810,
-
-     1103, 1153, 1810, 1149, 1810, 1114, 1810, 1151, 1115, 1106,
-     1113, 1810, 1110, 1115, 1113, 1163, 1164, 1109, 1810, 1124,
-     1810, 1114, 1126, 1127, 1170, 1114, 1122, 1116, 1124, 1137,
-     1810, 1136, 1126, 1125, 1128, 1140, 1131, 1140, 1142, 1146,
-     1810, 1810, 1185, 1130, 1146, 1188, 1189, 1810, 1185, 1149,
-     1146, 1151, 1138, 1133, 1196, 1155, 1198, 1157, 1158, 1201,
-     1160, 1163, 1810, 1204, 1167, 1810, 1810, 1149, 1207, 1156,
-     1209, 1154, 1171, 1810, 1157, 1810, 1157, 1159, 1810, 1164,
-     1174, 1810, 1160, 1172, 1810, 1168, 1810, 1178, 1172, 1176,
-     1167, 1219, 1168, 1176, 1185, 1178, 1173, 1174, 1189, 1180,
-
-     1187, 1174, 1189, 1194, 1237, 1196, 1239, 1240, 1185, 1201,
-     1192, 1206, 1202, 1195, 1810, 1247, 1810, 1810, 1248, 1249,
-     1206, 1205, 1206, 1196, 1810, 1810, 1810, 1254, 1198, 1214,
-     1257, 1810, 1253, 1204, 1810, 1203, 1205, 1216, 1263, 1214,
-     1810, 1223, 1266, 1810, 1810, 1272, 1277, 1282, 1287, 1292,
-     1297, 1302, 1305, 1279, 1284, 1286, 1299
+      269,   64,  231,  184,  187,   75, 1732,  274,  215,  290,
+      278,  297, 1715,  207,  302,  316,  316, 1734,    0,  355,
+      360,  372,  377,  380, 1791,    0, 1791,  295,  383,  227,
+      296,  283,  327,  361,  293, 1791, 1731, 1770, 1791,  237,
+
+     1791,  394,  363, 1718, 1728, 1767,  375,  321,  403, 1722,
+      369,  378,  376,  382,  388, 1765,    0,  445,  407, 1709,
+     1717,  364, 1713, 1702, 1703,  372, 1719, 1702, 1711,  387,
+      308,  378, 1705, 1703,  391, 1692, 1748,  416, 1695, 1746,
+     1688, 1711, 1708, 1708, 1702,  214, 1695, 1688, 1693, 1687,
+      382, 1698, 1691, 1682, 1681, 1695,  362, 1731, 1680,  414,
+     1692, 1695, 1679,  441, 1680,  417, 1692, 1689, 1690, 1688,
+      422, 1670, 1675, 1671, 1663, 1680, 1672,    0,  422,  450,
+      440,  446,  454,  470, 1671, 1791,    0,  476, 1662, 1665,
+     1791,  465,  447, 1791, 1717, 1672,  477, 1715,  481, 1714,
+
+      477, 1713, 1791,  521, 1712,  489, 1673, 1668, 1667, 1658,
+      302, 1707, 1701, 1667, 1646, 1654, 1660, 1648, 1662, 1658,
+     1659, 1659, 1654, 1646, 1648, 1632, 1636, 1649, 1651, 1648,
+     1640, 1630, 1633, 1647, 1791, 1633, 1641, 1644, 1625, 1624,
+     1674, 1623, 1633, 1671,  452, 1632, 1620, 1631, 1667,  490,
+     1671, 1608, 1623,    9, 1613, 1629, 1610, 1612, 1608, 1614,
+     1605, 1604, 1617, 1610, 1612, 1616, 1615, 1609,   80, 1616,
+     1611, 1603, 1593, 1608, 1603, 1607, 1588, 1604, 1590, 1596,
+     1603, 1591,  230, 1584, 1598, 1597, 1600, 1582, 1590,  491,
+     1791, 1791,  501, 1791, 1791, 1577,    0,  376, 1579,  497,
+
+      503, 1633, 1791, 1586,  489, 1791, 1631, 1791, 1625,  557,
+     1791,  472, 1567, 1577, 1627, 1584, 1583,  480, 1791, 1581,
+     1623, 1578, 1575, 1576,  303, 1580, 1618, 1568, 1563, 1560,
+     1556, 1558, 1607, 1566, 1555, 1571, 1603, 1551,  550, 1564,
+     1564, 1547, 1548, 1561, 1548, 1558, 1553, 1560, 1555, 1540,
+      470, 1549, 1552, 1547, 1543, 1591,  499,  499, 1791, 1585,
+     1537, 1536, 1529, 1531, 1535, 1524, 1531, 1536,  513, 1581,
+     1536,  505, 1533, 1537, 1535, 1524, 1524, 1536,  498, 1511,
+     1512, 1533,  536, 1515, 1512, 1526, 1525, 1511, 1523, 1522,
+     1521, 1520,  520, 1561, 1560, 1559, 1503,  579, 1516, 1791,
+
+     1791, 1515,    0,  529, 1503, 1554, 1553, 1511, 1551, 1791,
+     1499, 1549, 1791,  557,  603,  530, 1548, 1490, 1791, 1495,
+     1505, 1504, 1491, 1490, 1791, 1492, 1489, 1501, 1497, 1485,
+     1487, 1791, 1493, 1478, 1480, 1491, 1489, 1484,  587, 1491,
+     1479, 1472, 1521, 1791, 1470, 1486, 1518, 1522, 1480, 1474,
+     1476, 1477, 1479, 1511, 1464, 1459, 1458, 1460, 1453, 1468,
+     1446, 1453, 1458, 1506, 1791, 1453, 1449, 1503, 1456, 1450,
+     1457, 1442, 1452, 1455, 1444, 1443, 1438, 1791, 1493, 1791,
+     1437, 1436, 1429, 1446, 1483, 1430, 1435, 1444, 1438, 1432,
+     1441,  588, 1476, 1440, 1423, 1423, 1418, 1414, 1420, 1419,
+
+     1427, 1431, 1414, 1470, 1412, 1426, 1415, 1791, 1791, 1791,
+     1415, 1791, 1425, 1459, 1421,    0, 1462, 1412, 1791, 1791,
+     1409, 1791, 1415, 1791,  555,  562,  604, 1791, 1453, 1400,
+     1399, 1398, 1405, 1398, 1410, 1409, 1393, 1408, 1438, 1405,
+     1441, 1387, 1389, 1401, 1401, 1400, 1791, 1385, 1382, 1438,
+     1395, 1387, 1393, 1384, 1392, 1791, 1377, 1388, 1392, 1374,
+     1388,  550, 1370, 1364, 1369, 1366, 1381, 1382, 1379, 1420,
+     1377, 1791, 1363, 1365, 1791, 1373, 1410, 1409,  594, 1372,
+     1355, 1356, 1361, 1352, 1791, 1366, 1352,  624, 1344, 1365,
+     1362, 1354, 1397, 1351, 1358, 1394, 1791, 1342, 1340, 1354,
+
+     1338, 1352, 1355, 1387, 1386, 1385, 1332, 1383, 1382, 1791,
+      546, 1344, 1344, 1342, 1331, 1333, 1791, 1791, 1376, 1324,
+     1379,  573,  584,  559, 1338, 1377, 1371, 1370, 1369, 1323,
+     1313, 1366, 1328, 1318, 1363, 1326, 1308, 1316, 1318, 1322,
+     1357, 1361, 1318, 1317, 1791, 1318, 1311, 1300, 1313, 1316,
+     1311, 1306, 1311, 1308, 1307, 1303, 1309, 1304, 1345, 1344,
+     1288, 1284,  576, 1341, 1791, 1340, 1289, 1281, 1332, 1295,
+     1282, 1791, 1282, 1291, 1290, 1290, 1274, 1329, 1272, 1285,
+     1791, 1277, 1269, 1278, 1271, 1282, 1259, 1263, 1314, 1278,
+     1260, 1258, 1269, 1309, 1308, 1307, 1254, 1270,  581,  586,
+
+     1247, 1257,  596, 1791, 1307, 1253, 1263, 1263, 1252, 1256,
+     1263, 1300, 1791, 1294,  605, 1247, 1255, 1247, 1791, 1238,
+     1241, 1237, 1254, 1249, 1237, 1248, 1232, 1234, 1286,    0,
+       80,   64,  235,  229, 1791,  302,  385,  393,  478,  506,
+      635,  513,  558,  574,  594,  581,  638,  606,  592,  595,
+     1791, 1791,  611,  610,  616,  604, 1791, 1791,  618,  605,
+      603,  621,  608,  609,  659,  610,  667,  668, 1791,  615,
+      629,  629,  672,  622,  624,  618,  676,  631,  621,  622,
+      618,  628,  632,  643,  627,  645,  640,  642,  635,  637,
+      649,  639,  692,  651,  656,  633, 1791,  658,  648,  693,
+
+      642,  657,  657, 1791,  677,  685,  665,  655,  669,  662,
+      657,  658,  654,  663,  658,  709,  715,  664, 1791,  676,
+      661,  677,  667,  679,  673,  718,  686,  670,  671, 1791,
+      688,  691,  675,  677,  733,  678, 1791,  695,  698,  678,
+      697,  735,  695,  691,  686,  704,  703,  689,  704,  696,
+      692,  710,  695, 1791, 1791,  703,  748,  703, 1791,  711,
+      706,  757, 1791,  708,  713,  755,  709,  710,  722,  716,
+      720,  718,  716,  727,  770,  716,  772,  773,  719, 1791,
+      718,  726,  724,  729,  741,  725,  739,  740,  741,  757,
+      762,  736,  746,  732,  740,  745,  752,  793,  794,  743,
+
+      747, 1791,  742,  760,  757,  795,  746,  764,  765,  751,
+      759,  768,  748,  763,  770,  810,  811, 1791,  768,  815,
+      816,  769,  779,  781,  765,  766,  773,  782,  825,  774,
+      773,  790,  829,  781,  785,  783,  781,  834,  835,  787,
+      837,  833,  793, 1791,  798,  791,  782,  801,  795,  790,
+      800,  797,  802,  798,  810, 1791,  794, 1791, 1791,  795,
+      793,  812,  813,  810,  795,  817,  799,  804,  811,  844,
+      835,  807,  866,  811,  826,  818,  822, 1791, 1791,  832,
+      830,  816,  817,  875,  830,  835,  822,  833,  825,  831,
+      827,  845,  846,  847, 1791, 1791,  846, 1791,  848, 1791,
+
+      833,  834,  853,  844,  894,  849,  891,  857, 1791,  849,
+      841,  900, 1791,  901,  850,  857,  899, 1791, 1791,  859,
+     1791,  850,  850,  853,  867,  872,  855,  866,  913,  872,
+      873,  874,  912,  870,  919,  920,  869,  922,  923,  865,
+      925,  886,  870,  882,  872,  902,  931,  891, 1791,  933,
+      882,  878,  894,  899,  887,  939,  898, 1791,  900,  899,
+      901,  894,  903,  904,  901,  891,  894,  894,  951,  900,
+      953,  954,  899,  956, 1791,  894,  910,  903,  961,  916,
+     1791, 1791,  912,  922,  907,  923,  911,  970,  971,  917,
+      927,  974,  934, 1791,  926,  926,  928,  930,  981,  926,
+
+     1791, 1791,  928, 1791, 1791,  942, 1791,  936,  986,  937,
+      988,  970, 1791,  948, 1791,  935,  934,  937,  937,  938,
+      996, 1791,  941,  998,  953,  944,  959,  959,  962,  962,
+      959, 1001,  965, 1791,  957, 1791, 1791,  967, 1791,  968,
+      969,  967, 1009, 1791,  960,  960,  966,  965,  977,  977,
+     1791, 1791, 1016,  965, 1791,  982,  967,  967,  969,  975,
+     1791, 1028,  981, 1030,  993, 1791,  990, 1791, 1009, 1029,
+     1035,  979, 1037, 1038,  993, 1791, 1040, 1791,  980, 1037,
+     1002,  998, 1040,  990,  995,  993, 1050, 1008, 1052, 1053,
+     1016, 1005,  999, 1015, 1058, 1002, 1020, 1005, 1020, 1004,
+
+     1060, 1061, 1062, 1011, 1064, 1029, 1791, 1015, 1791, 1026,
+     1073, 1045, 1032, 1791, 1076, 1791, 1791, 1025, 1791, 1078,
+     1026, 1075, 1020, 1025, 1084, 1034, 1044, 1045, 1791, 1088,
+     1043, 1791, 1791, 1034, 1049, 1037, 1052, 1791, 1089, 1057,
+     1050, 1051, 1060, 1042, 1048, 1050, 1103, 1064, 1063, 1107,
+     1058, 1791, 1109, 1056, 1791, 1060, 1791, 1063, 1058, 1057,
+     1115, 1070, 1791, 1112, 1065, 1062, 1791, 1076, 1079, 1122,
+     1077, 1124, 1067, 1069, 1077, 1067, 1083, 1084, 1078, 1094,
+     1791, 1084, 1134, 1791, 1130, 1791, 1095, 1132, 1096, 1087,
+     1094, 1791, 1091, 1096, 1094, 1144, 1145, 1090, 1791, 1105,
+
+     1791, 1095, 1107, 1108, 1151, 1095, 1103, 1097, 1105, 1118,
+     1791, 1117, 1107, 1106, 1109, 1121, 1112, 1121, 1123, 1127,
+     1791, 1791, 1166, 1111, 1127, 1169, 1170, 1791, 1166, 1130,
+     1127, 1132, 1119, 1114, 1177, 1136, 1179, 1138, 1139, 1182,
+     1141, 1144, 1791, 1185, 1148, 1791, 1791, 1130, 1188, 1137,
+     1190, 1135, 1152, 1791, 1138, 1791, 1138, 1140, 1791, 1145,
+     1155, 1791, 1141, 1153, 1791, 1149, 1791, 1159, 1153, 1157,
+     1148, 1200, 1149, 1157, 1166, 1159, 1154, 1155, 1170, 1161,
+     1168, 1155, 1170, 1175, 1218, 1177, 1220, 1221, 1166, 1182,
+     1173, 1187, 1183, 1176, 1791, 1228, 1791, 1791, 1229, 1230,
+
+     1187, 1186, 1187, 1177, 1791, 1791, 1791, 1235, 1179, 1195,
+     1238, 1791, 1234, 1185, 1791, 1184, 1186, 1197, 1244, 1195,
+     1791, 1204, 1247, 1791, 1791, 1253, 1258, 1263, 1268, 1273,
+     1278, 1283, 1286, 1260, 1265, 1267, 1280
     } ;
 
-static const flex_int16_t yy_def[1458] =
+static const flex_int16_t yy_def[1438] =
     {   0,
-     1446, 1446, 1447, 1447, 1446, 1446, 1446, 1446, 1446, 1446,
-     1445, 1445, 1445, 1445, 1445, 1448, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1449,
-     1445, 1445, 1445, 1450,   15, 1445,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1451,   45,   45,
+     1426, 1426, 1427, 1427, 1426, 1426, 1426, 1426, 1426, 1426,
+     1425, 1425, 1425, 1425, 1425, 1428, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1429,
+     1425, 1425, 1425, 1430,   15, 1425,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1431,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1448, 1445,
-     1445, 1445, 1445, 1445, 1445, 1452, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1449, 1445, 1450,
+       45,   45,   45,   45,   45,   45,   45,   45, 1428, 1425,
+     1425, 1425, 1425, 1425, 1425, 1432, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1429, 1425, 1430,
 
-     1445, 1445,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1453,   45, 1451,   45,   45,
+     1425, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1433,   45, 1431,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1452, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1454,   45,   45,   45, 1445,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1432, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1434,   45,   45,   45,
+     1425,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
 
-     1453, 1445, 1451,   45,   45,   45,   45,   45,   45,   45,
+       45, 1433, 1425, 1431,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1455,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1435,   45,   45,   45,
 
-     1445,   45,   45, 1445,   45, 1445,   45, 1451, 1445,   45,
-       45,   45,   45,   45,   45,   45,   45, 1445,   45,   45,
+       45,   45, 1425,   45,   45, 1425,   45, 1425,   45, 1431,
+     1425,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1445,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1445, 1445, 1445,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1425,
 
-     1456,   45,   45,   45,   45,   45,   45, 1445,   45,   45,
-     1445,   45, 1451,   45,   45,   45, 1445,   45,   45,   45,
-       45,   45,   45, 1445,   45,   45,   45,   45,   45,   45,
-     1445,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1445,   45,   45,   45,   45,   45,   45,   45,   45,
+     1425, 1425, 1436,   45,   45,   45,   45,   45,   45, 1425,
+       45,   45, 1425,   45, 1431,   45,   45,   45, 1425,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
+       45, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1445,   45, 1445,   45,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1425,   45, 1425,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 1445, 1445, 1445,   45, 1445,
-       45,   45, 1445, 1457,   45,   45, 1445, 1445,   45, 1445,
-       45, 1445,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45,   45, 1445,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1445,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1445,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45, 1445,   45,   45,
-       45,   45,   45,   45, 1445, 1445,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1425, 1425, 1425,
+       45, 1425,   45,   45, 1425, 1437,   45,   45, 1425, 1425,
+       45, 1425,   45, 1425,   45,   45,   45, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1425,   45,   45,   45,
+       45,   45,   45,   45,   45, 1425,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1425,   45,   45, 1425,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1425,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1425,
+       45,   45,   45,   45,   45,   45, 1425, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45, 1445,
-       45,   45,   45,   45,   45,   45,   45,   45, 1445,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
+       45, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
+     1425,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1445,   45,   45,   45,   45,   45,   45,   45,   45,
-     1445,   45,   45,   45,   45,   45, 1445,   45,   45,   45,
+       45,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
+       45,   45, 1425,   45,   45,   45,   45,   45, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1445,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1445, 1445,   45,   45,   45,   45, 1445, 1445,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1445,   45,
+     1425, 1425,   45,   45,   45,   45, 1425, 1425,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1445,   45,   45,
+       45,   45,   45,   45,   45,   45, 1425,   45,   45,   45,
 
-       45,   45,   45,   45, 1445,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1445,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45,   45,   45,   45,   45,   45, 1445,
+       45,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1425,
+       45,   45,   45,   45,   45,   45, 1425,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1445, 1445,   45,   45,
-       45, 1445,   45,   45,   45, 1445,   45,   45,   45,   45,
+       45,   45,   45, 1425, 1425,   45,   45,   45, 1425,   45,
+       45,   45, 1425,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1425,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1445,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 1445,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1445,   45,   45,   45,   45,   45,   45,
+       45, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1445,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1445,   45, 1445, 1445,   45,   45,   45,   45,   45,
+       45,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1425,   45, 1425, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1445, 1445,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1425, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1425, 1425,   45, 1425,   45, 1425,
 
-       45,   45,   45, 1445, 1445,   45, 1445,   45, 1445,   45,
-       45,   45,   45,   45,   45,   45,   45, 1445,   45,   45,
-       45, 1445,   45,   45,   45,   45, 1445, 1445,   45, 1445,
+       45,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
+       45,   45, 1425,   45,   45,   45,   45, 1425, 1425,   45,
+     1425,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1445,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1445,
+       45,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
+       45,   45,   45,   45,   45,   45,   45, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1445,   45,   45,   45,
-       45,   45, 1445, 1445,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45, 1445, 1445,   45, 1445, 1445,   45, 1445,   45,
-       45,   45,   45,   45, 1445,   45, 1445,   45,   45,   45,
-       45,   45,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1445,   45, 1445,
-     1445,   45, 1445,   45,   45,   45,   45, 1445,   45,   45,
-       45,   45,   45,   45, 1445, 1445,   45,   45, 1445,   45,
-       45,   45,   45,   45, 1445,   45,   45,   45,   45, 1445,
-       45, 1445,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1445,   45, 1445,   45,   45,   45,   45,   45,   45,
-
+       45,   45,   45,   45, 1425,   45,   45,   45,   45,   45,
+     1425, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
+
+     1425, 1425,   45, 1425, 1425,   45, 1425,   45,   45,   45,
+       45,   45, 1425,   45, 1425,   45,   45,   45,   45,   45,
+       45, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1425,   45, 1425, 1425,   45, 1425,   45,
+       45,   45,   45, 1425,   45,   45,   45,   45,   45,   45,
+     1425, 1425,   45,   45, 1425,   45,   45,   45,   45,   45,
+     1425,   45,   45,   45,   45, 1425,   45, 1425,   45,   45,
+       45,   45,   45,   45,   45, 1425,   45, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45, 1445,   45,   45,   45,   45, 1445,
-     1445,   45,   45, 1445, 1445,   45, 1445,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1445,   45,   45, 1445,
-     1445,   45,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1445,
-       45,   45,   45, 1445,   45, 1445,   45,   45,   45,   45,
-       45, 1445,   45,   45,   45, 1445,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1445,
-
-       45,   45, 1445,   45, 1445,   45, 1445,   45,   45,   45,
-       45, 1445,   45,   45,   45,   45,   45,   45, 1445,   45,
-     1445,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1445,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1445, 1445,   45,   45,   45,   45,   45, 1445,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 1425,   45, 1425,   45,
+       45,   45,   45, 1425,   45, 1425, 1425,   45, 1425,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
+       45, 1425, 1425,   45,   45,   45,   45, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1445,   45,   45, 1445, 1445,   45,   45,   45,
-       45,   45,   45, 1445,   45, 1445,   45,   45, 1445,   45,
-       45, 1445,   45,   45, 1445,   45, 1445,   45,   45,   45,
+       45, 1425,   45,   45, 1425,   45, 1425,   45,   45,   45,
+       45,   45, 1425,   45,   45,   45, 1425,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1425,   45,   45, 1425,   45, 1425,   45,   45,   45,   45,
+       45, 1425,   45,   45,   45,   45,   45,   45, 1425,   45,
 
+     1425,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1425,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1425, 1425,   45,   45,   45,   45,   45, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1445,   45, 1445, 1445,   45,   45,
-       45,   45,   45,   45, 1445, 1445, 1445,   45,   45,   45,
-       45, 1445,   45,   45, 1445,   45,   45,   45,   45,   45,
-     1445,   45,   45, 1445,    0, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445
+       45,   45, 1425,   45,   45, 1425, 1425,   45,   45,   45,
+       45,   45,   45, 1425,   45, 1425,   45,   45, 1425,   45,
+       45, 1425,   45,   45, 1425,   45, 1425,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1425,   45, 1425, 1425,   45,   45,
+
+       45,   45,   45,   45, 1425, 1425, 1425,   45,   45,   45,
+       45, 1425,   45,   45, 1425,   45,   45,   45,   45,   45,
+     1425,   45,   45, 1425,    0, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425
     } ;
 
-static const flex_int16_t yy_nxt[1882] =
+static const flex_int16_t yy_nxt[1863] =
     {   0,
-     1445,   13,   14,   13, 1445,   15,   16,  822,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  360,
-       37,   14,   37,   86,   25,   26,   38, 1445, 1445,   27,
+     1425,   13,   14,   13, 1425,   15,   16, 1425,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  362,
+       37,   14,   37,   86,   25,   26,   38, 1425, 1425,   27,
        37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
       115,   30,   13,   14,   13,   90,   91,   25,   31,   92,
-       13,   14,   13,   13,   14,   13,   32,   40,  823,   13,
-       14,   13,   33,   40,  115,   91,   92,  361,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40,  820,   13,
+       14,   13,   33,   40,  115,   91,   92,  363,   90,   34,
        35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  108,   39,   90,   25,   26,   13,   14,   13,   27,
 
        39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
        42,   30,   82,  107,   41,  111,   93,   25,   31,  108,
-      130,  137,   88,  824,   88,  825,   32,   89,   89,   89,
-      131,  138,   33,  139,  376,   82,  107,  377,  111,   34,
+      130,  138,   88,  821,   88,  822,   32,   89,   89,   89,
+      131,  139,   33,  140,  378,   82,  107,  379,  111,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   48,   49,   50,   51,   45,   52,   53,
@@ -1262,199 +1256,197 @@ static const flex_int16_t yy_nxt[1882] =
        73,   74,   75,   76,   77,   78,   57,   45,   45,   45,
        45,   45,   80,  103,   81,   81,   81,   80,  109,   83,
        83,   83,  101,  114,   80,   82,   83,   83,   83,  121,
-       82,  145,  122,  112,  123,  146,  124,   82,  162,  103,
-      826,  103,  163,  113,  134,  223,  114,  110,   82,  135,
-      192,  107,  136,   82,  193,  147,  112,  102,  224,  504,
-       82,   45,  505,   45,   45,   45,   45,  119,   45,   45,
-       45,  113,  117,  120,  107,   45,   45,  192,   45,   45,
-       89,   89,   89,  194,   45,  132,   45,   45,   45,   45,
+       82,  133,  122,  112,  123,  306,  124,   82,  134,  103,
+      393,  103,  101,  113,  135,  823,  114,  110,   82,  136,
+      163,  107,  137,   82,  164,  179,  112,  102,  146,  244,
+       82,   45,  147,   45,   45,   45,   45,  119,   45,   45,
+       45,  113,  117,  120,  107,   45,   45,  102,   45,   45,
+      245,  179,  148,  824,   45,  132,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   89,   89,
-       89,   45,  125,  428,  111,   45,  126,  429,  180,  127,
-      128,  141,  142,   45,  178,  143,  151,   45,  180,   45,
-      118,  144,  129,  148,  152,  149,  153,  150,  112,  114,
-      156,  154,  155,  157,  158,  164,  180,  480,  113,  165,
-      178,  481,  166,  304,  159,  179,  183,  160,  391,  167,
-      168,  170,  114,  171,  101,  169,  827,  172,   84,   84,
-       84,   80,  174,   81,   81,   81,  113,  175,  187,   82,
-       88,  179,   88,  173,   82,   89,   89,   89,   80,  178,
-       83,   83,   83,   84,   84,   84,  179,  191,  100,  102,
-
-      196,   82,   82,  197,   82,  100,  187,   82,  198,  200,
-      208,  199,  187,  289,  242,  181,  214,  215,  225,  209,
-      210,  233,  182,  191,   82,  197,  216,   82,  196,  204,
-      197,  828,  200,  100,  226,  243,  198,  100,  199,  289,
-      205,  100,  220,  228,  221,  196,  229,  254,  255,  100,
-      230,  264,  281,  100,  288,  100,  186,  203,  203,  203,
-      290,  222,  829,  234,  203,  203,  203,  203,  203,  203,
-      288,  258,  274,  248,  259,  260,  275,  289,  290,  299,
-      276,  296,  288,  290,  265,  266,  267,  203,  203,  203,
-      203,  203,  203,  300,  303,  268,  305,  269,  291,  270,
-
-      271,  293,  272,  292,  296,  307,  296,  299,  315,  421,
-      402,  457,  458,  303,  398,  398,  316,  303,  349,  305,
-      300,  410,  317,  402,  670,  407,  422,  488,  410,  310,
-      476,  489,  307,  308,  308,  308,  356,  398,  399,  402,
-      308,  308,  308,  308,  308,  308,  404,  405,  407,  410,
-      464,  515,  414,  493,  510,  406,  466,  494,  830,  511,
-      465,  671,  515,  308,  308,  308,  308,  308,  308,  350,
-      620,  442,  351,  413,  413,  413,  443,  654,  655,  515,
-      413,  413,  413,  413,  413,  413,  477,  523,  546,  524,
-      525,  595,  621,  547,  616,  712,  596,  620,  713,  622,
-
-      831,  702,  714,  413,  413,  413,  413,  413,  413,  832,
-      679,  703,  715,  835,  523,  680,  524,  718,  719,  789,
-      621,  713,  444,  712,  836,  837,  790,  445,   45,   45,
-       45,  755,  838,  839,  756,   45,   45,   45,   45,   45,
-       45,  796,  791,  807,  840,  833,  841,  797,  842,  792,
-      834,  843,  681,  793,  844,  845,  846,  847,   45,   45,
-       45,   45,   45,   45,  848,  849,  850,  853,  851,  854,
-      855,  807,  852,  856,  857,  858,  859,  860,  861,  862,
-      863,  864,  865,  866,  867,  868,  869,  870,  871,  872,
-      873,  874,  875,  876,  877,  878,  879,  880,  882,  883,
-
-      884,  885,  886,  887,  888,  889,  890,  891,  892,  881,
-      893,  894,  895,  896,  897,  898,  899,  900,  901,  902,
-      903,  904,  905,  906,  907,  908,  909,  910,  911,  912,
-      913,  914,  915,  916,  917,  895,  918,  919,  894,  920,
-      921,  922,  923,  924,  927,  928,  929,  930,  925,  931,
-      932,  933,  934,  935,  936,  937,  938,  939,  940,  941,
-      942,  944,  945,  946,  947,  948,  949,  950,  951,  952,
-      953,  943,  954,  955,  956,  957,  958,  959,  960,  961,
-      962,  963,  964,  965,  966,  967,  968,  969,  970,  971,
-      972,  973,  974,  975,  976,  977,  979,  978,  980,  926,
-
-      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
-      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
-     1001, 1002, 1003,  977,  978, 1004, 1005, 1006, 1007, 1009,
-     1011, 1012, 1013, 1008, 1014, 1015, 1016, 1017, 1018, 1019,
-     1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
-     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
-     1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049,
-     1050, 1010, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
-     1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
-     1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
-
-     1056, 1079, 1080, 1081, 1082, 1083, 1057, 1084, 1085, 1086,
-     1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
-     1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
-     1107, 1108, 1109, 1110, 1112, 1113, 1114, 1115, 1116, 1117,
+       89,   45,  125,  429,  111,   45,  126,  430,  181,  127,
+      128,  142,  143,   45,  180,  144,  152,   45,  181,   45,
+      118,  145,  129,  149,  153,  150,  154,  151,  112,  114,
+      157,  155,  156,  158,  159,  165,  181,  825,  113,  166,
+      180,  193,  167,  224,  160,  179,  184,  161,  317,  168,
+      169,  171,  114,  172,  318,  170,  225,  173,   84,   84,
+       84,   80,  175,   81,   81,   81,  113,  176,  193,   82,
+       88,  182,   88,  174,   82,   89,   89,   89,   80,  180,
+       83,   83,   83,   84,   84,   84,   89,   89,   89,  100,
+
+      188,   82,   82,  192,   82,  197,  100,   82,  194,  198,
+      209,  199,  201,  200,  404,  183,  215,  216,  197,  210,
+      211,  235,  256,  257,   82,  226,  217,   82,  188,  192,
+      221,  826,  222,  197,  100,  201,  198,  195,  100,  199,
+      200,  227,  100,  404,  188,  230,  250,  827,  231,  223,
+      100,  266,  232,  198,  100,  290,  100,  187,  204,  204,
+      204,  205,  351,  236,  292,  204,  204,  204,  204,  204,
+      204,  260,  206,  276,  261,  262,  302,  277,  291,  290,
+      283,  278,  291,  290,  267,  268,  269,  292,  204,  204,
+      204,  204,  204,  204,  292,  270,  298,  271,  301,  272,
+
+      273,  305,  274,  302,  291,  307,  309,  293,  294,  298,
+      404,  406,  407,  352,  305,  400,  353,  295,  478,  298,
+      408,  412,  828,  422,  305,  400,  301,  409,  307,  459,
+      460,  412,  312,  309,  310,  310,  310,  358,  400,  416,
+      423,  310,  310,  310,  310,  310,  310,  466,  401,  412,
+      409,  704,  482,  829,  490,  444,  483,  467,  491,  468,
+      445,  705,  517,  517,  310,  310,  310,  310,  310,  310,
+      415,  415,  415,  506,  479,  832,  507,  415,  415,  415,
+      415,  415,  415,  495,  512,  622,  525,  496,  526,  513,
+      517,  527,  547,  597,  623,  656,  657,  548,  598,  672,
+
+      415,  415,  415,  415,  415,  415,  446,  714,  715,  618,
+      716,  447,  622,  525,  624,  526,   45,   45,   45,  833,
+      717,  834,  623,   45,   45,   45,   45,   45,   45,  681,
+      755,  715,  789,  756,  682,  714,  673,  791,  806,  790,
+      830,  835,  836,  837,  792,  831,   45,   45,   45,   45,
+       45,   45,  795,  838,  839,  840,  841,  842,  796,  843,
+      844,  845,  846,  847,  848,  850,  806,  851,  849,  852,
+      853,  683,  854,  855,  856,  857,  858,  859,  860,  861,
+      862,  863,  864,  865,  866,  867,  868,  869,  870,  871,
+      872,  873,  874,  875,  876,  877,  879,  880,  881,  882,
+
+      883,  884,  885,  886,  887,  888,  889,  878,  890,  891,
+      892,  893,  894,  895,  896,  897,  898,  899,  900,  901,
+      902,  903,  904,  905,  906,  907,  908,  909,  910,  911,
+      912,  913,  891,  914,  915,  890,  916,  917,  918,  921,
+      922,  923,  924,  919,  925,  926,  927,  928,  929,  930,
+      931,  932,  933,  934,  935,  936,  938,  939,  940,  941,
+      942,  943,  944,  945,  946,  947,  937,  948,  949,  950,
+      951,  952,  953,  954,  955,  956,  957,  958,  959,  960,
+      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
+      972,  971,  973,  974,  920,  975,  976,  977,  978,  979,
+
+      980,  981,  982,  983,  984,  985,  986,  987,  988,  989,
+      990,  991,  992,  993,  994,  995,  996,  970,  971,  997,
+      998, 1000, 1002, 1003, 1004,  999, 1005, 1006, 1007, 1008,
+     1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
+     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
+     1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
+     1039, 1040, 1041, 1001, 1042, 1043, 1044, 1045, 1046, 1047,
+     1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
+     1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
+     1068, 1046, 1069, 1070, 1071, 1072, 1073, 1047, 1074, 1075,
+
+     1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
+     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
+     1096, 1097, 1098, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
+     1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1117,
      1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127,
-     1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
-     1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148,
-     1149, 1150, 1151, 1152, 1124, 1153, 1154, 1155, 1157, 1158,
-     1159, 1160, 1161, 1162, 1111, 1156, 1163, 1164, 1165, 1166,
-     1167, 1128, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175,
-
-     1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185,
-     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
-     1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205,
-     1183, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
-     1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224,
-     1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
-     1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
-     1245, 1246, 1247, 1249, 1250, 1251, 1252, 1253, 1254, 1255,
-     1228, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
-     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
-
-     1275, 1276, 1278, 1279, 1280, 1281, 1277, 1282, 1283, 1284,
-     1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
-     1295, 1296, 1297, 1298, 1271, 1299, 1300, 1301, 1248, 1302,
-     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312,
-     1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322,
-     1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332,
-     1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342,
-     1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
-     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
-     1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372,
-
-     1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
-     1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
-     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
-     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
-     1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422,
-     1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432,
-     1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442,
-     1443, 1444,   12,   12,   12,   12,   12,   36,   36,   36,
-       36,   36,   79,  295,   79,   79,   79,   98,  401,   98,
-      514,   98,  100,  100,  100,  100,  100,  116,  116,  116,
-
-      116,  116,  177,  100,  177,  177,  177,  201,  201,  201,
-      821,  820,  819,  818,  817,  816,  815,  814,  813,  812,
-      811,  810,  809,  808,  806,  805,  804,  803,  802,  801,
-      800,  799,  798,  795,  794,  788,  787,  786,  785,  784,
+     1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
+     1138, 1139, 1140, 1112, 1141, 1143, 1144, 1145, 1146, 1147,
+     1148, 1149, 1142, 1099, 1150, 1151, 1152, 1153, 1154, 1155,
+     1116, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164,
+     1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
+
+     1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
+     1185, 1186, 1187, 1188, 1189, 1190, 1191, 1169, 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, 1221, 1222, 1223,
+     1224, 1225, 1226, 1227, 1228, 1229, 1231, 1232, 1233, 1234,
+     1235, 1236, 1237, 1238, 1239, 1212, 1240, 1241, 1242, 1243,
+     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
+     1254, 1255, 1256, 1257, 1259, 1260, 1261, 1262, 1258, 1263,
+     1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273,
+
+     1274, 1275, 1276, 1277, 1278, 1279, 1280, 1253, 1281, 1282,
+     1283, 1230, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291,
+     1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301,
+     1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
+     1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321,
+     1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
+     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,
+     1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351,
+     1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361,
+     1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371,
+
+     1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
+     1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
+     1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401,
+     1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411,
+     1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
+     1422, 1423, 1424,   12,   12,   12,   12,   12,   36,   36,
+       36,   36,   36,   79,  297,   79,   79,   79,   98,  403,
+       98,  516,   98,  100,  100,  100,  100,  100,  116,  116,
+      116,  116,  116,  178,  100,  178,  178,  178,  202,  202,
+      202,  819,  818,  817,  816,  815,  814,  813,  812,  811,
+
+      810,  809,  808,  807,  805,  804,  803,  802,  801,  800,
+      799,  798,  797,  794,  793,  788,  787,  786,  785,  784,
       783,  782,  781,  780,  779,  778,  777,  776,  775,  774,
       773,  772,  771,  770,  769,  768,  767,  766,  765,  764,
       763,  762,  761,  760,  759,  758,  757,  754,  753,  752,
       751,  750,  749,  748,  747,  746,  745,  744,  743,  742,
       741,  740,  739,  738,  737,  736,  735,  734,  733,  732,
       731,  730,  729,  728,  727,  726,  725,  724,  723,  722,
-
-      721,  720,  717,  716,  711,  710,  709,  708,  707,  706,
-      705,  704,  701,  700,  699,  698,  697,  696,  695,  694,
-      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
-      683,  682,  678,  677,  676,  675,  674,  673,  672,  669,
-      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
-      658,  657,  656,  653,  652,  651,  650,  649,  648,  647,
-      646,  645,  644,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  631,  630,  629,  628,  627,
-      626,  625,  624,  623,  619,  618,  617,  616,  615,  614,
-      613,  612,  611,  610,  609,  608,  607,  606,  605,  604,
-
-      603,  602,  601,  600,  599,  598,  597,  594,  593,  592,
-      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
-      581,  580,  579,  578,  577,  576,  575,  574,  573,  572,
-      571,  570,  569,  568,  567,  566,  565,  564,  563,  562,
-      561,  560,  559,  558,  557,  556,  555,  554,  553,  552,
-      551,  550,  549,  548,  545,  544,  543,  542,  541,  540,
-      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
-      529,  528,  527,  526,  522,  521,  520,  519,  518,  517,
-      516,  513,  512,  509,  508,  507,  506,  503,  502,  501,
-      500,  499,  498,  497,  496,  495,  492,  491,  490,  487,
-
-      486,  485,  484,  483,  482,  479,  478,  475,  474,  473,
-      472,  471,  470,  469,  468,  467,  463,  462,  461,  460,
-      459,  456,  455,  454,  453,  452,  451,  450,  449,  448,
-      447,  446,  441,  440,  439,  438,  437,  436,  435,  434,
-      433,  432,  431,  430,  427,  426,  425,  424,  423,  420,
-      419,  418,  417,  416,  415,  412,  411,  409,  408,  403,
-      400,  397,  396,  395,  394,  393,  392,  390,  389,  388,
-      387,  386,  385,  384,  383,  382,  381,  380,  379,  378,
-      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  359,  358,  357,  355,  354,  353,
-
-      352,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  338,  337,  336,  335,  334,  333,  332,  331,  330,
-      329,  328,  327,  326,  325,  324,  323,  322,  321,  320,
-      319,  318,  314,  313,  312,  311,  309,  202,  306,  304,
-      302,  301,  298,  297,  294,  287,  286,  285,  284,  283,
-      282,  280,  279,  278,  277,  273,  263,  262,  261,  257,
-      256,  253,  252,  251,  250,  249,  247,  246,  245,  244,
-      241,  240,  239,  238,  237,  236,  235,  232,  231,  227,
-      219,  218,  217,  213,  212,  211,  207,  206,  202,  195,
-      190,  189,  188,  185,  184,  176,  161,  140,  133,  106,
-
-      105,  104,   43,   99,   97,   96,   87,   43, 1445,   11,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445
+      721,  720,  719,  718,  713,  712,  711,  710,  709,  708,
+      707,  706,  703,  702,  701,  700,  699,  698,  697,  696,
+
+      695,  694,  693,  692,  691,  690,  689,  688,  687,  686,
+      685,  684,  680,  679,  678,  677,  676,  675,  674,  671,
+      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
+      660,  659,  658,  655,  654,  653,  652,  651,  650,  649,
+      648,  647,  646,  645,  644,  643,  642,  641,  640,  639,
+      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  626,  625,  621,  620,  619,  618,  617,  616,
+      615,  614,  613,  612,  611,  610,  609,  608,  607,  606,
+      605,  604,  603,  602,  601,  600,  599,  596,  595,  594,
+      593,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+
+      583,  582,  581,  580,  579,  578,  577,  576,  575,  574,
+      573,  572,  571,  570,  569,  568,  567,  566,  565,  564,
+      563,  562,  561,  560,  559,  558,  557,  556,  555,  554,
+      553,  552,  551,  550,  549,  546,  545,  544,  543,  542,
+      541,  540,  539,  538,  537,  536,  535,  534,  533,  532,
+      531,  530,  529,  528,  524,  523,  522,  521,  520,  519,
+      518,  515,  514,  511,  510,  509,  508,  505,  504,  503,
+      502,  501,  500,  499,  498,  497,  494,  493,  492,  489,
+      488,  487,  486,  485,  484,  481,  480,  477,  476,  475,
+      474,  473,  472,  471,  470,  469,  465,  464,  463,  462,
+
+      461,  458,  457,  456,  455,  454,  453,  452,  451,  450,
+      449,  448,  443,  442,  441,  440,  439,  438,  437,  436,
+      435,  434,  433,  432,  431,  428,  427,  426,  425,  424,
+      421,  420,  419,  418,  417,  414,  413,  411,  410,  405,
+      402,  399,  398,  397,  396,  395,  394,  392,  391,  390,
+      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
+      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
+      367,  366,  365,  364,  361,  360,  359,  357,  356,  355,
+      354,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+
+      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
+      321,  320,  319,  316,  315,  314,  313,  311,  203,  308,
+      306,  304,  303,  300,  299,  296,  289,  288,  287,  286,
+      285,  284,  282,  281,  280,  279,  275,  265,  264,  263,
+      259,  258,  255,  254,  253,  252,  251,  249,  248,  247,
+      246,  243,  242,  241,  240,  239,  238,  237,  234,  233,
+      229,  228,  220,  219,  218,  214,  213,  212,  208,  207,
+      203,  196,  191,  190,  189,  186,  185,  177,  162,  141,
+      106,  105,  104,   43,   99,   97,   96,   87,   43, 1425,
+       11, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425
     } ;
 
-static const flex_int16_t yy_chk[1882] =
+static const flex_int16_t yy_chk[1863] =
     {   0,
-        0,    1,    1,    1,    0,    1,    1,  729,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  252,
+        0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  254,
         3,    3,    3,   21,    1,    1,    3,    0,    0,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
         6,    6,    6,    7,    7,    7,    1,    7,  730,    8,
-        8,    8,    1,    8,   57,   27,   28,  252,   26,    1,
+        8,    8,    1,    8,   57,   27,   28,  254,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
         9,   52,    5,   31,    2,    2,   10,   10,   10,    2,
@@ -1462,7 +1454,7 @@ static const flex_int16_t yy_chk[1882] =
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
        62,   66,   25,  731,   25,  732,    2,   25,   25,   25,
-       62,   66,    2,   66,  267,   20,   51,  267,   54,    2,
+       62,   66,    2,   66,  269,   20,   51,  269,   54,    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,
@@ -1473,188 +1465,186 @@ static const flex_int16_t yy_chk[1882] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   17,   47,   17,   17,   17,   19,   53,   19,
        19,   19,   44,   56,   22,   17,   22,   22,   22,   60,
-       19,   69,   60,   55,   60,   69,   60,   22,   74,   47,
-      733,   59,   74,   55,   65,  131,   56,   53,   17,   65,
-      108,   63,   65,   19,  109,   69,   55,   44,  131,  391,
-       22,   45,  391,   45,   45,   45,   45,   59,   45,   45,
-       45,   55,   58,   59,   63,   45,   45,  108,   45,   58,
-       88,   88,   88,  109,   45,   63,   45,   45,   45,   45,
+       19,   64,   60,   55,   60,  283,   60,   22,   64,   47,
+      283,   59,  100,   55,   65,  733,   56,   53,   17,   65,
+       74,   63,   65,   19,   74,   90,   55,   44,   69,  146,
+       22,   45,   69,   45,   45,   45,   45,   59,   45,   45,
+       45,   55,   58,   59,   63,   45,   45,  100,   45,   58,
+      146,   90,   69,  734,   45,   63,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   58,   89,   89,
-       89,   58,   61,  324,   70,   58,   61,  324,   92,   61,
-       61,   68,   68,   58,   90,   68,   71,   58,   95,   58,
+       45,   45,   45,   45,   45,   45,   45,   58,   88,   88,
+       88,   58,   61,  325,   70,   58,   61,  325,   92,   61,
+       61,   68,   68,   58,   91,   68,   71,   58,   95,   58,
        58,   68,   61,   70,   71,   70,   71,   70,   76,   77,
-       72,   71,   71,   72,   72,   75,   92,  370,   76,   75,
-       90,  370,   75,  281,   72,   91,   95,   72,  281,   75,
-       75,   76,   77,   76,  100,   75,  734,   76,   80,   80,
-       80,   81,   77,   81,   81,   81,   76,   77,  103,   80,
-       82,   91,   82,   76,   81,   82,   82,   82,   83,   93,
-       83,   83,   83,   84,   84,   84,   94,  107,  102,  100,
-
-      111,   83,   80,  112,   84,  102,  103,   81,  113,  115,
-      122,  114,  119,  179,  145,   93,  126,  126,  132,  122,
-      122,  137,   94,  107,   83,  170,  126,   84,  111,  119,
-      112,  736,  115,  102,  132,  145,  113,  102,  114,  179,
-      119,  102,  130,  134,  130,  150,  134,  156,  156,  102,
-      134,  163,  170,  102,  178,  102,  102,  118,  118,  118,
-      180,  130,  737,  137,  118,  118,  118,  118,  118,  118,
-      181,  159,  165,  150,  159,  159,  165,  182,  183,  191,
-      165,  187,  178,  180,  163,  163,  163,  118,  118,  118,
-      118,  118,  118,  192,  196,  163,  198,  163,  181,  163,
-
-      163,  183,  163,  182,  187,  200,  205,  191,  210,  317,
-      296,  349,  349,  248,  288,  291,  210,  196,  243,  198,
-      192,  303,  210,  310,  577,  299,  317,  377,  356,  205,
-      367,  377,  200,  203,  203,  203,  248,  288,  291,  296,
-      203,  203,  203,  203,  203,  203,  298,  298,  299,  303,
-      355,  402,  310,  381,  396,  298,  356,  381,  738,  396,
-      355,  577,  414,  203,  203,  203,  203,  203,  203,  243,
-      523,  337,  243,  308,  308,  308,  337,  560,  560,  402,
-      308,  308,  308,  308,  308,  308,  367,  412,  438,  412,
-      414,  490,  524,  438,  525,  620,  490,  523,  621,  525,
-
-      739,  609,  622,  308,  308,  308,  308,  308,  308,  740,
-      586,  609,  622,  742,  412,  586,  412,  625,  625,  697,
-      524,  621,  337,  620,  743,  744,  697,  337,  413,  413,
-      413,  661,  745,  746,  661,  413,  413,  413,  413,  413,
-      413,  701,  698,  713,  747,  741,  748,  701,  749,  698,
-      741,  750,  586,  698,  753,  754,  755,  756,  413,  413,
-      413,  413,  413,  413,  759,  760,  761,  763,  762,  764,
-      765,  713,  762,  766,  767,  768,  770,  771,  772,  773,
-      774,  775,  776,  777,  778,  779,  780,  781,  782,  783,
-      784,  785,  786,  787,  788,  789,  790,  791,  792,  793,
-
-      794,  795,  796,  797,  799,  800,  801,  802,  803,  791,
-      804,  806,  807,  808,  809,  810,  811,  812,  813,  814,
-      815,  816,  817,  818,  819,  820,  821,  823,  824,  825,
-      826,  827,  828,  829,  830,  807,  831,  832,  806,  834,
-      835,  836,  837,  838,  839,  841,  842,  843,  838,  844,
-      845,  846,  847,  848,  849,  850,  851,  852,  853,  854,
-      855,  856,  859,  860,  861,  863,  864,  865,  867,  868,
-      869,  855,  870,  871,  872,  873,  874,  875,  876,  877,
-      878,  879,  880,  881,  882,  883,  885,  886,  887,  888,
-      889,  890,  891,  892,  893,  894,  896,  895,  897,  838,
-
-      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
-      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
-      919,  920,  921,  894,  895,  922,  923,  925,  926,  927,
-      928,  929,  930,  926,  931,  932,  933,  934,  935,  936,
-      937,  938,  939,  940,  941,  942,  943,  944,  945,  946,
-      947,  948,  949,  951,  952,  953,  954,  955,  956,  957,
-      958,  959,  960,  961,  963,  966,  967,  968,  969,  970,
-      971,  927,  972,  973,  974,  975,  976,  977,  978,  979,
-      980,  981,  982,  983,  984,  985,  986,  989,  990,  991,
-      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
-
-      977, 1002, 1003, 1006, 1008, 1010,  978, 1011, 1012, 1013,
-     1014, 1015, 1016, 1017, 1019, 1020, 1021, 1023, 1024, 1025,
-     1026, 1029, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
-     1039, 1040, 1041, 1042, 1043, 1044, 1045, 1047, 1048, 1049,
-     1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1060,
-     1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071,
-     1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
-     1082, 1083, 1084, 1085, 1056, 1086, 1088, 1089, 1090, 1091,
-     1092, 1095, 1096, 1097, 1042, 1089, 1098, 1099, 1100, 1101,
-     1102, 1060, 1103, 1104, 1105, 1107, 1108, 1109, 1110, 1111,
-
-     1112, 1115, 1118, 1120, 1121, 1122, 1123, 1124, 1126, 1128,
-     1129, 1130, 1131, 1132, 1133, 1134, 1135, 1137, 1138, 1139,
-     1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1149, 1152,
-     1124, 1154, 1155, 1156, 1157, 1159, 1160, 1161, 1162, 1163,
-     1164, 1167, 1168, 1170, 1171, 1172, 1173, 1174, 1176, 1177,
-     1178, 1179, 1181, 1183, 1184, 1185, 1186, 1187, 1188, 1189,
-     1190, 1191, 1193, 1195, 1196, 1197, 1198, 1199, 1200, 1201,
-     1202, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
-     1183, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219,
-     1220, 1221, 1222, 1224, 1226, 1227, 1228, 1229, 1232, 1233,
-
-     1236, 1238, 1239, 1240, 1241, 1242, 1238, 1243, 1244, 1245,
-     1246, 1248, 1249, 1252, 1253, 1254, 1255, 1257, 1258, 1259,
-     1260, 1261, 1262, 1263, 1228, 1264, 1265, 1266, 1203, 1267,
-     1268, 1269, 1271, 1272, 1273, 1275, 1277, 1278, 1279, 1280,
-     1281, 1283, 1284, 1285, 1287, 1288, 1289, 1290, 1291, 1292,
-     1293, 1294, 1295, 1296, 1297, 1298, 1299, 1301, 1302, 1304,
-     1306, 1308, 1309, 1310, 1311, 1313, 1314, 1315, 1316, 1317,
-     1318, 1320, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
-     1330, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340,
-     1343, 1344, 1345, 1346, 1347, 1349, 1350, 1351, 1352, 1353,
-
-     1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1364,
-     1365, 1368, 1369, 1370, 1371, 1372, 1373, 1375, 1377, 1378,
-     1380, 1381, 1383, 1384, 1386, 1388, 1389, 1390, 1391, 1392,
-     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
-     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
-     1413, 1414, 1416, 1419, 1420, 1421, 1422, 1423, 1424, 1428,
-     1429, 1430, 1431, 1433, 1434, 1436, 1437, 1438, 1439, 1440,
-     1442, 1443, 1446, 1446, 1446, 1446, 1446, 1447, 1447, 1447,
-     1447, 1447, 1448, 1454, 1448, 1448, 1448, 1449, 1455, 1449,
-     1456, 1449, 1450, 1450, 1450, 1450, 1450, 1451, 1451, 1451,
-
-     1451, 1451, 1452, 1457, 1452, 1452, 1452, 1453, 1453, 1453,
-      728,  727,  726,  725,  724,  723,  722,  721,  720,  719,
-      718,  716,  715,  714,  712,  710,  709,  708,  707,  706,
-      705,  704,  703,  700,  699,  696,  695,  694,  693,  692,
-      691,  690,  689,  688,  687,  686,  685,  684,  683,  682,
-      681,  680,  678,  677,  676,  675,  674,  673,  672,  671,
-      669,  668,  667,  666,  665,  664,  662,  660,  659,  658,
-      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
-      647,  646,  645,  644,  643,  642,  641,  640,  639,  638,
-      637,  636,  635,  634,  633,  632,  631,  630,  629,  628,
-
-      627,  626,  624,  623,  619,  618,  617,  614,  613,  612,
-      611,  610,  607,  606,  605,  604,  603,  602,  601,  600,
-      599,  598,  597,  596,  594,  593,  592,  591,  590,  589,
-      588,  587,  585,  584,  582,  581,  580,  579,  578,  576,
-      575,  574,  572,  571,  569,  568,  567,  566,  565,  564,
-      563,  562,  561,  559,  558,  557,  556,  555,  553,  552,
-      551,  550,  549,  548,  547,  545,  544,  543,  542,  541,
-      540,  539,  538,  537,  536,  535,  534,  533,  532,  531,
-      530,  529,  528,  527,  521,  519,  516,  515,  513,  512,
-      511,  509,  505,  504,  503,  502,  501,  500,  499,  498,
-
-      497,  496,  495,  494,  493,  492,  491,  489,  488,  487,
-      486,  485,  484,  483,  482,  481,  480,  479,  477,  475,
-      474,  473,  472,  471,  470,  469,  468,  467,  466,  465,
-      464,  462,  461,  460,  459,  458,  457,  456,  455,  454,
-      453,  452,  451,  450,  449,  448,  447,  446,  445,  444,
-      443,  441,  440,  439,  437,  436,  435,  434,  433,  432,
-      430,  429,  428,  427,  426,  425,  423,  422,  421,  420,
-      419,  418,  416,  415,  410,  409,  407,  406,  405,  404,
-      403,  400,  397,  395,  394,  393,  392,  390,  389,  388,
-      387,  386,  385,  384,  383,  382,  380,  379,  378,  376,
-
-      375,  374,  373,  372,  371,  369,  368,  366,  365,  364,
-      363,  362,  361,  360,  359,  358,  354,  353,  352,  351,
-      350,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  338,  336,  335,  334,  333,  332,  331,  330,  329,
-      328,  327,  326,  325,  323,  322,  321,  320,  319,  316,
-      315,  314,  313,  312,  311,  307,  305,  302,  300,  297,
-      294,  287,  286,  285,  284,  283,  282,  280,  279,  278,
-      277,  276,  275,  274,  273,  272,  271,  270,  269,  268,
-      266,  265,  264,  263,  262,  261,  260,  259,  258,  257,
-      256,  255,  254,  253,  251,  250,  249,  247,  246,  245,
-
-      244,  242,  241,  240,  239,  238,  237,  236,  235,  234,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  221,  220,  219,  218,  217,  216,  215,  214,  213,
-      212,  211,  209,  208,  207,  206,  204,  201,  199,  197,
-      195,  194,  189,  188,  184,  176,  175,  174,  173,  172,
-      171,  169,  168,  167,  166,  164,  162,  161,  160,  158,
-      157,  155,  154,  153,  152,  151,  149,  148,  147,  146,
-      144,  143,  142,  141,  140,  139,  138,  136,  135,  133,
-      129,  128,  127,  125,  124,  123,  121,  120,  116,  110,
-      106,  105,  104,   98,   97,   78,   73,   67,   64,   50,
-
-       49,   48,   43,   41,   39,   38,   24,   14,   11, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-     1445
+       72,   71,   71,   72,   72,   75,   92,  736,   76,   75,
+       91,  108,   75,  131,   72,   93,   95,   72,  211,   75,
+       75,   76,   77,   76,  211,   75,  131,   76,   80,   80,
+       80,   81,   77,   81,   81,   81,   76,   77,  108,   80,
+       82,   93,   82,   76,   81,   82,   82,   82,   83,   94,
+       83,   83,   83,   84,   84,   84,   89,   89,   89,  102,
+
+      103,   83,   80,  107,   84,  111,  102,   81,  109,  112,
+      122,  113,  115,  114,  298,   94,  126,  126,  151,  122,
+      122,  138,  157,  157,   83,  132,  126,   84,  103,  107,
+      130,  737,  130,  111,  102,  115,  112,  109,  102,  113,
+      114,  132,  102,  298,  119,  135,  151,  738,  135,  130,
+      102,  164,  135,  171,  102,  179,  102,  102,  118,  118,
+      118,  119,  245,  138,  181,  118,  118,  118,  118,  118,
+      118,  160,  119,  166,  160,  160,  193,  166,  180,  182,
+      171,  166,  183,  179,  164,  164,  164,  181,  118,  118,
+      118,  118,  118,  118,  184,  164,  188,  164,  192,  164,
+
+      164,  197,  164,  193,  180,  199,  201,  182,  183,  206,
+      312,  300,  300,  245,  250,  290,  245,  184,  369,  188,
+      300,  305,  739,  318,  197,  293,  192,  301,  199,  351,
+      351,  358,  206,  201,  204,  204,  204,  250,  290,  312,
+      318,  204,  204,  204,  204,  204,  204,  357,  293,  305,
+      301,  611,  372,  740,  379,  339,  372,  357,  379,  358,
+      339,  611,  404,  416,  204,  204,  204,  204,  204,  204,
+      310,  310,  310,  393,  369,  742,  393,  310,  310,  310,
+      310,  310,  310,  383,  398,  525,  414,  383,  414,  398,
+      404,  416,  439,  492,  526,  562,  562,  439,  492,  579,
+
+      310,  310,  310,  310,  310,  310,  339,  622,  623,  527,
+      624,  339,  525,  414,  527,  414,  415,  415,  415,  743,
+      624,  744,  526,  415,  415,  415,  415,  415,  415,  588,
+      663,  623,  699,  663,  588,  622,  579,  700,  715,  699,
+      741,  745,  746,  747,  700,  741,  415,  415,  415,  415,
+      415,  415,  703,  748,  749,  750,  753,  754,  703,  755,
+      756,  759,  760,  761,  762,  763,  715,  764,  762,  765,
+      766,  588,  767,  768,  770,  771,  772,  773,  774,  775,
+      776,  777,  778,  779,  780,  781,  782,  783,  784,  785,
+      786,  787,  788,  789,  790,  791,  792,  793,  794,  795,
+
+      796,  798,  799,  800,  801,  802,  803,  791,  805,  806,
+      807,  808,  809,  810,  811,  812,  813,  814,  815,  816,
+      817,  818,  820,  821,  822,  823,  824,  825,  826,  827,
+      828,  829,  806,  831,  832,  805,  833,  834,  835,  836,
+      838,  839,  840,  835,  841,  842,  843,  844,  845,  846,
+      847,  848,  849,  850,  851,  852,  853,  856,  857,  858,
+      860,  861,  862,  864,  865,  866,  852,  867,  868,  869,
+      870,  871,  872,  873,  874,  875,  876,  877,  878,  879,
+      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
+      892,  891,  893,  894,  835,  895,  896,  897,  898,  899,
+
+      900,  901,  903,  904,  905,  906,  907,  908,  909,  910,
+      911,  912,  913,  914,  915,  916,  917,  890,  891,  919,
+      920,  921,  922,  923,  924,  920,  925,  926,  927,  928,
+      929,  930,  931,  932,  933,  934,  935,  936,  937,  938,
+      939,  940,  941,  942,  943,  945,  946,  947,  948,  949,
+      950,  951,  952,  953,  954,  955,  957,  960,  961,  962,
+      963,  964,  965,  921,  966,  967,  968,  969,  970,  971,
+      972,  973,  974,  975,  976,  977,  980,  981,  982,  983,
+      984,  985,  986,  987,  988,  989,  990,  991,  992,  993,
+      994,  970,  997,  999, 1001, 1002, 1003,  971, 1004, 1005,
+
+     1006, 1007, 1008, 1010, 1011, 1012, 1014, 1015, 1016, 1017,
+     1020, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
+     1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
+     1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1050, 1051,
+     1052, 1053, 1054, 1055, 1056, 1057, 1059, 1060, 1061, 1062,
+     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
+     1073, 1074, 1076, 1046, 1077, 1078, 1079, 1080, 1083, 1084,
+     1085, 1086, 1077, 1033, 1087, 1088, 1089, 1090, 1091, 1092,
+     1050, 1093, 1095, 1096, 1097, 1098, 1099, 1100, 1103, 1106,
+     1108, 1109, 1110, 1111, 1112, 1114, 1116, 1117, 1118, 1119,
+
+     1120, 1121, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
+     1131, 1132, 1133, 1135, 1138, 1140, 1141, 1112, 1142, 1143,
+     1145, 1146, 1147, 1148, 1149, 1150, 1153, 1154, 1156, 1157,
+     1158, 1159, 1160, 1162, 1163, 1164, 1165, 1167, 1169, 1170,
+     1171, 1172, 1173, 1174, 1175, 1177, 1179, 1180, 1181, 1182,
+     1183, 1184, 1185, 1186, 1186, 1187, 1188, 1189, 1190, 1191,
+     1192, 1193, 1194, 1195, 1196, 1169, 1197, 1198, 1199, 1200,
+     1201, 1202, 1203, 1204, 1205, 1206, 1208, 1210, 1211, 1212,
+     1213, 1215, 1218, 1220, 1221, 1222, 1223, 1224, 1220, 1225,
+     1226, 1227, 1228, 1230, 1231, 1234, 1235, 1236, 1237, 1239,
+
+     1240, 1241, 1242, 1243, 1244, 1245, 1246, 1212, 1247, 1248,
+     1249, 1187, 1250, 1251, 1253, 1254, 1256, 1258, 1259, 1260,
+     1261, 1262, 1264, 1265, 1266, 1268, 1269, 1270, 1271, 1272,
+     1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1282, 1283,
+     1285, 1287, 1288, 1289, 1290, 1291, 1293, 1294, 1295, 1296,
+     1297, 1298, 1300, 1302, 1303, 1304, 1305, 1306, 1307, 1308,
+     1309, 1310, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319,
+     1320, 1323, 1324, 1325, 1326, 1327, 1329, 1330, 1331, 1332,
+     1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342,
+     1344, 1345, 1348, 1349, 1350, 1351, 1352, 1353, 1355, 1357,
+
+     1358, 1360, 1361, 1363, 1364, 1366, 1368, 1369, 1370, 1371,
+     1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
+     1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
+     1392, 1393, 1394, 1396, 1399, 1400, 1401, 1402, 1403, 1404,
+     1408, 1409, 1410, 1411, 1413, 1414, 1416, 1417, 1418, 1419,
+     1420, 1422, 1423, 1426, 1426, 1426, 1426, 1426, 1427, 1427,
+     1427, 1427, 1427, 1428, 1434, 1428, 1428, 1428, 1429, 1435,
+     1429, 1436, 1429, 1430, 1430, 1430, 1430, 1430, 1431, 1431,
+     1431, 1431, 1431, 1432, 1437, 1432, 1432, 1432, 1433, 1433,
+     1433,  729,  728,  727,  726,  725,  724,  723,  722,  721,
+
+      720,  718,  717,  716,  714,  712,  711,  710,  709,  708,
+      707,  706,  705,  702,  701,  698,  697,  696,  695,  694,
+      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
+      683,  682,  680,  679,  678,  677,  676,  675,  674,  673,
+      671,  670,  669,  668,  667,  666,  664,  662,  661,  660,
+      659,  658,  657,  656,  655,  654,  653,  652,  651,  650,
+      649,  648,  647,  646,  644,  643,  642,  641,  640,  639,
+      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  626,  625,  621,  620,  619,  616,  615,  614,
+      613,  612,  609,  608,  607,  606,  605,  604,  603,  602,
+
+      601,  600,  599,  598,  596,  595,  594,  593,  592,  591,
+      590,  589,  587,  586,  584,  583,  582,  581,  580,  578,
+      577,  576,  574,  573,  571,  570,  569,  568,  567,  566,
+      565,  564,  563,  561,  560,  559,  558,  557,  555,  554,
+      553,  552,  551,  550,  549,  548,  546,  545,  544,  543,
+      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
+      532,  531,  530,  529,  523,  521,  518,  517,  515,  514,
+      513,  511,  507,  506,  505,  504,  503,  502,  501,  500,
+      499,  498,  497,  496,  495,  494,  493,  491,  490,  489,
+      488,  487,  486,  485,  484,  483,  482,  481,  479,  477,
+
+      476,  475,  474,  473,  472,  471,  470,  469,  468,  467,
+      466,  464,  463,  462,  461,  460,  459,  458,  457,  456,
+      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
+      445,  443,  442,  441,  440,  438,  437,  436,  435,  434,
+      433,  431,  430,  429,  428,  427,  426,  424,  423,  422,
+      421,  420,  418,  417,  412,  411,  409,  408,  407,  406,
+      405,  402,  399,  397,  396,  395,  394,  392,  391,  390,
+      389,  388,  387,  386,  385,  384,  382,  381,  380,  378,
+      377,  376,  375,  374,  373,  371,  370,  368,  367,  366,
+      365,  364,  363,  362,  361,  360,  356,  355,  354,  353,
+
+      352,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  338,  337,  336,  335,  334,  333,  332,  331,
+      330,  329,  328,  327,  326,  324,  323,  322,  321,  320,
+      317,  316,  315,  314,  313,  309,  307,  304,  302,  299,
+      296,  289,  288,  287,  286,  285,  284,  282,  281,  280,
+      279,  278,  277,  276,  275,  274,  273,  272,  271,  270,
+      268,  267,  266,  265,  264,  263,  262,  261,  260,  259,
+      258,  257,  256,  255,  253,  252,  251,  249,  248,  247,
+      246,  244,  243,  242,  241,  240,  239,  238,  237,  236,
+      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
+
+      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
+      214,  213,  212,  210,  209,  208,  207,  205,  202,  200,
+      198,  196,  195,  190,  189,  185,  177,  176,  175,  174,
+      173,  172,  170,  169,  168,  167,  165,  163,  162,  161,
+      159,  158,  156,  155,  154,  153,  152,  150,  149,  148,
+      147,  145,  144,  143,  142,  141,  140,  139,  137,  136,
+      134,  133,  129,  128,  127,  125,  124,  123,  121,  120,
+      116,  110,  106,  105,  104,   98,   97,   78,   73,   67,
+       50,   49,   48,   43,   41,   39,   38,   24,   14,   11,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425,
+     1425, 1425
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1663,27 +1653,27 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[178] =
+static const flex_int16_t yy_rule_linenum[176] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  254,  263,
       272,  281,  290,  299,  308,  317,  326,  335,  345,  355,
       365,  375,  385,  394,  404,  414,  424,  434,  443,  452,
-      461,  470,  479,  488,  497,  506,  515,  524,  534,  543,
-      556,  565,  574,  583,  592,  603,  614,  625,  636,  648,
-      659,  670,  681,  692,  703,  714,  725,  736,  747,  758,
-      769,  780,  791,  800,  809,  819,  828,  837,  852,  868,
-      877,  886,  895,  904,  913,  922,  931,  940,  949,  958,
-      980, 1002, 1011, 1021, 1031, 1040, 1050, 1060, 1069, 1078,
-
-     1087, 1096, 1106, 1115, 1124, 1133, 1142, 1151, 1160, 1169,
-     1178, 1187, 1197, 1206, 1215, 1225, 1237, 1250, 1259, 1268,
-     1278, 1288, 1297, 1308, 1318, 1327, 1337, 1347, 1356, 1365,
-     1374, 1383, 1393, 1402, 1412, 1421, 1430, 1439, 1448, 1457,
-     1466, 1475, 1484, 1493, 1502, 1511, 1520, 1529, 1538, 1547,
-     1556, 1565, 1574, 1583, 1592, 1601, 1610, 1619, 1628, 1638,
-     1737, 1742, 1747, 1752, 1753, 1754, 1755, 1756, 1757, 1759,
-     1777, 1790, 1795, 1799, 1801, 1803, 1805
+      461,  470,  479,  488,  497,  506,  515,  524,  536,  545,
+      554,  563,  572,  582,  592,  602,  612,  623,  633,  643,
+      653,  663,  673,  683,  693,  703,  713,  724,  735,  746,
+      757,  766,  776,  785,  794,  809,  824,  833,  842,  851,
+      860,  869,  878,  887,  896,  905,  914,  936,  958,  967,
+      977,  987,  996, 1006, 1016, 1025, 1034, 1043, 1052, 1061,
+
+     1071, 1080, 1089, 1098, 1107, 1116, 1125, 1134, 1143, 1152,
+     1162, 1171, 1180, 1190, 1202, 1215, 1224, 1233, 1243, 1253,
+     1262, 1273, 1283, 1292, 1302, 1312, 1321, 1330, 1339, 1348,
+     1358, 1367, 1377, 1386, 1395, 1404, 1413, 1422, 1431, 1440,
+     1449, 1458, 1467, 1476, 1485, 1494, 1503, 1512, 1521, 1530,
+     1539, 1548, 1557, 1566, 1575, 1584, 1593, 1603, 1702, 1707,
+     1712, 1717, 1718, 1719, 1720, 1721, 1722, 1724, 1742, 1755,
+     1760, 1764, 1766, 1768, 1770
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1736,7 +1726,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1740 "dhcp6_lexer.cc"
+#line 1729 "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
@@ -1762,8 +1752,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 1766 "dhcp6_lexer.cc"
-#line 1767 "dhcp6_lexer.cc"
+#line 1755 "dhcp6_lexer.cc"
+#line 1756 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2093,7 +2083,7 @@ YY_DECL
     }
 
 
-#line 2097 "dhcp6_lexer.cc"
+#line 2086 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2122,13 +2112,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 >= 1446 )
+                               if ( yy_current_state >= 1426 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1445 );
+               while ( yy_current_state != 1425 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2147,13 +2137,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 < 178 )
+                       else if ( yy_act < 176 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 178 )
+                       else if ( yy_act == 176 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 179 )
+                       else if ( yy_act == 177 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2689,30 +2679,6 @@ YY_RULE_SETUP
 case 47:
 YY_RULE_SETUP
 #line 515 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP6:
-        return isc::dhcp::Dhcp6Parser::make_CONFIG_CONTROL(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("config-control", driver.loc_);
-    }
-}
-       YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 524 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::CONFIG_CONTROL:
-        return isc::dhcp::Dhcp6Parser::make_CONFIG_DATABASES(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("config-databases", driver.loc_);
-    }
-}
-       YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 534 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
@@ -2722,25 +2688,24 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 48:
 YY_RULE_SETUP
-#line 543 "dhcp6_lexer.ll"
+#line 524 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::OPTION_DEF:
     case isc::dhcp::Parser6Context::SERVER_ID:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_TYPE(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("type", driver.loc_);
     }
 }
        YY_BREAK
-case 51:
+case 49:
 YY_RULE_SETUP
-#line 556 "dhcp6_lexer.ll"
+#line 536 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2750,9 +2715,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 50:
 YY_RULE_SETUP
-#line 565 "dhcp6_lexer.ll"
+#line 545 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2762,9 +2727,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 51:
 YY_RULE_SETUP
-#line 574 "dhcp6_lexer.ll"
+#line 554 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2774,9 +2739,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 52:
 YY_RULE_SETUP
-#line 583 "dhcp6_lexer.ll"
+#line 563 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2786,206 +2751,192 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 53:
 YY_RULE_SETUP
-#line 592 "dhcp6_lexer.ll"
+#line 572 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_USER(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("user", driver.loc_);
     }
 }
        YY_BREAK
-case 56:
+case 54:
 YY_RULE_SETUP
-#line 603 "dhcp6_lexer.ll"
+#line 582 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_PASSWORD(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("password", driver.loc_);
     }
 }
        YY_BREAK
-case 57:
+case 55:
 YY_RULE_SETUP
-#line 614 "dhcp6_lexer.ll"
+#line 592 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_HOST(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("host", driver.loc_);
     }
 }
        YY_BREAK
-case 58:
+case 56:
 YY_RULE_SETUP
-#line 625 "dhcp6_lexer.ll"
+#line 602 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_PORT(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("port", driver.loc_);
     }
 }
        YY_BREAK
-case 59:
+case 57:
 YY_RULE_SETUP
-#line 636 "dhcp6_lexer.ll"
+#line 612 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::SERVER_ID:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_PERSIST(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("persist", driver.loc_);
     }
 }
        YY_BREAK
-case 60:
+case 58:
 YY_RULE_SETUP
-#line 648 "dhcp6_lexer.ll"
+#line 623 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_LFC_INTERVAL(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("lfc-interval", driver.loc_);
     }
 }
        YY_BREAK
-case 61:
+case 59:
 YY_RULE_SETUP
-#line 659 "dhcp6_lexer.ll"
+#line 633 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_CONNECT_TIMEOUT(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("connect-timeout", driver.loc_);
     }
 }
        YY_BREAK
-case 62:
+case 60:
 YY_RULE_SETUP
-#line 670 "dhcp6_lexer.ll"
+#line 643 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_KEYSPACE(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("keyspace", driver.loc_);
     }
 }
        YY_BREAK
-case 63:
+case 61:
 YY_RULE_SETUP
-#line 681 "dhcp6_lexer.ll"
+#line 653 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("reconnect-wait-time", driver.loc_);
     }
 }
        YY_BREAK
-case 64:
+case 62:
 YY_RULE_SETUP
-#line 692 "dhcp6_lexer.ll"
+#line 663 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_REQUEST_TIMEOUT(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("request-timeout", driver.loc_);
     }
 }
        YY_BREAK
-case 65:
+case 63:
 YY_RULE_SETUP
-#line 703 "dhcp6_lexer.ll"
+#line 673 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_TCP_KEEPALIVE(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("tcp-keepalive", driver.loc_);
     }
 }
        YY_BREAK
-case 66:
+case 64:
 YY_RULE_SETUP
-#line 714 "dhcp6_lexer.ll"
+#line 683 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_TCP_NODELAY(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("tcp-nodelay", driver.loc_);
     }
 }
        YY_BREAK
-case 67:
+case 65:
 YY_RULE_SETUP
-#line 725 "dhcp6_lexer.ll"
+#line 693 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_CONTACT_POINTS(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("contact-points", driver.loc_);
     }
 }
        YY_BREAK
-case 68:
+case 66:
 YY_RULE_SETUP
-#line 736 "dhcp6_lexer.ll"
+#line 703 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_MAX_RECONNECT_TRIES(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("max-reconnect-tries", driver.loc_);
     }
 }
        YY_BREAK
-case 69:
+case 67:
 YY_RULE_SETUP
-#line 747 "dhcp6_lexer.ll"
+#line 713 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2997,9 +2948,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 68:
 YY_RULE_SETUP
-#line 758 "dhcp6_lexer.ll"
+#line 724 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3011,9 +2962,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 69:
 YY_RULE_SETUP
-#line 769 "dhcp6_lexer.ll"
+#line 735 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3025,9 +2976,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 70:
 YY_RULE_SETUP
-#line 780 "dhcp6_lexer.ll"
+#line 746 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3039,9 +2990,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 71:
 YY_RULE_SETUP
-#line 791 "dhcp6_lexer.ll"
+#line 757 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3051,21 +3002,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 800 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP6:
-        return isc::dhcp::Dhcp6Parser::make_SERVER_TAG(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("server-tag", driver.loc_);
-    }
-}
-       YY_BREAK
-case 75:
+case 72:
 YY_RULE_SETUP
-#line 809 "dhcp6_lexer.ll"
+#line 766 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3076,9 +3015,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 73:
 YY_RULE_SETUP
-#line 819 "dhcp6_lexer.ll"
+#line 776 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3088,9 +3027,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 74:
 YY_RULE_SETUP
-#line 828 "dhcp6_lexer.ll"
+#line 785 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3100,9 +3039,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 75:
 YY_RULE_SETUP
-#line 837 "dhcp6_lexer.ll"
+#line 794 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3118,9 +3057,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 76:
 YY_RULE_SETUP
-#line 852 "dhcp6_lexer.ll"
+#line 809 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3130,16 +3069,15 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
     case isc::dhcp::Parser6Context::LOGGERS:
     case isc::dhcp::Parser6Context::SHARED_NETWORK:
-    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_NAME(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("name", driver.loc_);
     }
 }
        YY_BREAK
-case 80:
+case 77:
 YY_RULE_SETUP
-#line 868 "dhcp6_lexer.ll"
+#line 824 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3149,9 +3087,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 78:
 YY_RULE_SETUP
-#line 877 "dhcp6_lexer.ll"
+#line 833 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3161,9 +3099,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 79:
 YY_RULE_SETUP
-#line 886 "dhcp6_lexer.ll"
+#line 842 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3173,9 +3111,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 80:
 YY_RULE_SETUP
-#line 895 "dhcp6_lexer.ll"
+#line 851 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3185,9 +3123,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 81:
 YY_RULE_SETUP
-#line 904 "dhcp6_lexer.ll"
+#line 860 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3197,9 +3135,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 82:
 YY_RULE_SETUP
-#line 913 "dhcp6_lexer.ll"
+#line 869 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3209,9 +3147,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 83:
 YY_RULE_SETUP
-#line 922 "dhcp6_lexer.ll"
+#line 878 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3221,9 +3159,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 84:
 YY_RULE_SETUP
-#line 931 "dhcp6_lexer.ll"
+#line 887 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3233,9 +3171,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 85:
 YY_RULE_SETUP
-#line 940 "dhcp6_lexer.ll"
+#line 896 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3245,9 +3183,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 86:
 YY_RULE_SETUP
-#line 949 "dhcp6_lexer.ll"
+#line 905 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3257,9 +3195,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 87:
 YY_RULE_SETUP
-#line 958 "dhcp6_lexer.ll"
+#line 914 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3282,9 +3220,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 88:
 YY_RULE_SETUP
-#line 980 "dhcp6_lexer.ll"
+#line 936 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3307,9 +3245,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 89:
 YY_RULE_SETUP
-#line 1002 "dhcp6_lexer.ll"
+#line 958 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3319,9 +3257,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 90:
 YY_RULE_SETUP
-#line 1011 "dhcp6_lexer.ll"
+#line 967 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3332,9 +3270,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 91:
 YY_RULE_SETUP
-#line 1021 "dhcp6_lexer.ll"
+#line 977 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3345,9 +3283,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 92:
 YY_RULE_SETUP
-#line 1031 "dhcp6_lexer.ll"
+#line 987 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3357,9 +3295,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 93:
 YY_RULE_SETUP
-#line 1040 "dhcp6_lexer.ll"
+#line 996 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3370,9 +3308,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 94:
 YY_RULE_SETUP
-#line 1050 "dhcp6_lexer.ll"
+#line 1006 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3383,9 +3321,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 95:
 YY_RULE_SETUP
-#line 1060 "dhcp6_lexer.ll"
+#line 1016 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3395,9 +3333,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 96:
 YY_RULE_SETUP
-#line 1069 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3407,9 +3345,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 97:
 YY_RULE_SETUP
-#line 1078 "dhcp6_lexer.ll"
+#line 1034 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3419,9 +3357,21 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 98:
+YY_RULE_SETUP
+#line 1043 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp6Parser::make_GLOBAL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("global", driver.loc_);
+    }
+}
+       YY_BREAK
+case 99:
 YY_RULE_SETUP
-#line 1087 "dhcp6_lexer.ll"
+#line 1052 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3431,9 +3381,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 100:
 YY_RULE_SETUP
-#line 1096 "dhcp6_lexer.ll"
+#line 1061 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3444,9 +3394,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 101:
 YY_RULE_SETUP
-#line 1106 "dhcp6_lexer.ll"
+#line 1071 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3456,9 +3406,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 102:
 YY_RULE_SETUP
-#line 1115 "dhcp6_lexer.ll"
+#line 1080 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3468,9 +3418,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 103:
 YY_RULE_SETUP
-#line 1124 "dhcp6_lexer.ll"
+#line 1089 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3480,9 +3430,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 104:
 YY_RULE_SETUP
-#line 1133 "dhcp6_lexer.ll"
+#line 1098 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3492,9 +3442,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 105:
 YY_RULE_SETUP
-#line 1142 "dhcp6_lexer.ll"
+#line 1107 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3504,9 +3454,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 106:
 YY_RULE_SETUP
-#line 1151 "dhcp6_lexer.ll"
+#line 1116 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3516,9 +3466,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 107:
 YY_RULE_SETUP
-#line 1160 "dhcp6_lexer.ll"
+#line 1125 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3528,9 +3478,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 108:
 YY_RULE_SETUP
-#line 1169 "dhcp6_lexer.ll"
+#line 1134 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3540,9 +3490,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 109:
 YY_RULE_SETUP
-#line 1178 "dhcp6_lexer.ll"
+#line 1143 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3552,9 +3502,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 110:
 YY_RULE_SETUP
-#line 1187 "dhcp6_lexer.ll"
+#line 1152 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3564,9 +3514,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 111:
 YY_RULE_SETUP
-#line 1197 "dhcp6_lexer.ll"
+#line 1162 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3576,9 +3526,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 112:
 YY_RULE_SETUP
-#line 1206 "dhcp6_lexer.ll"
+#line 1171 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3588,9 +3538,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 113:
 YY_RULE_SETUP
-#line 1215 "dhcp6_lexer.ll"
+#line 1180 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3601,9 +3551,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 114:
 YY_RULE_SETUP
-#line 1225 "dhcp6_lexer.ll"
+#line 1190 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3616,9 +3566,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 115:
 YY_RULE_SETUP
-#line 1237 "dhcp6_lexer.ll"
+#line 1202 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3632,9 +3582,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 116:
 YY_RULE_SETUP
-#line 1250 "dhcp6_lexer.ll"
+#line 1215 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3644,9 +3594,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 117:
 YY_RULE_SETUP
-#line 1259 "dhcp6_lexer.ll"
+#line 1224 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3656,9 +3606,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 118:
 YY_RULE_SETUP
-#line 1268 "dhcp6_lexer.ll"
+#line 1233 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3669,9 +3619,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 119:
 YY_RULE_SETUP
-#line 1278 "dhcp6_lexer.ll"
+#line 1243 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3682,9 +3632,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 120:
 YY_RULE_SETUP
-#line 1288 "dhcp6_lexer.ll"
+#line 1253 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3694,9 +3644,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 121:
 YY_RULE_SETUP
-#line 1297 "dhcp6_lexer.ll"
+#line 1262 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3708,9 +3658,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 122:
 YY_RULE_SETUP
-#line 1308 "dhcp6_lexer.ll"
+#line 1273 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3721,9 +3671,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 123:
 YY_RULE_SETUP
-#line 1318 "dhcp6_lexer.ll"
+#line 1283 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3733,9 +3683,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 124:
 YY_RULE_SETUP
-#line 1327 "dhcp6_lexer.ll"
+#line 1292 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3746,9 +3696,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 125:
 YY_RULE_SETUP
-#line 1337 "dhcp6_lexer.ll"
+#line 1302 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3759,9 +3709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 126:
 YY_RULE_SETUP
-#line 1347 "dhcp6_lexer.ll"
+#line 1312 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3771,9 +3721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 127:
 YY_RULE_SETUP
-#line 1356 "dhcp6_lexer.ll"
+#line 1321 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3783,9 +3733,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 128:
 YY_RULE_SETUP
-#line 1365 "dhcp6_lexer.ll"
+#line 1330 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3795,9 +3745,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 129:
 YY_RULE_SETUP
-#line 1374 "dhcp6_lexer.ll"
+#line 1339 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3807,9 +3757,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 130:
 YY_RULE_SETUP
-#line 1383 "dhcp6_lexer.ll"
+#line 1348 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3820,9 +3770,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 131:
 YY_RULE_SETUP
-#line 1393 "dhcp6_lexer.ll"
+#line 1358 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3832,9 +3782,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 132:
 YY_RULE_SETUP
-#line 1402 "dhcp6_lexer.ll"
+#line 1367 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3844,9 +3794,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 133:
 YY_RULE_SETUP
-#line 1412 "dhcp6_lexer.ll"
+#line 1377 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3856,9 +3806,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 134:
 YY_RULE_SETUP
-#line 1421 "dhcp6_lexer.ll"
+#line 1386 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3868,9 +3818,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 135:
 YY_RULE_SETUP
-#line 1430 "dhcp6_lexer.ll"
+#line 1395 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3880,9 +3830,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 136:
 YY_RULE_SETUP
-#line 1439 "dhcp6_lexer.ll"
+#line 1404 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3892,9 +3842,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 137:
 YY_RULE_SETUP
-#line 1448 "dhcp6_lexer.ll"
+#line 1413 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3904,9 +3854,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 138:
 YY_RULE_SETUP
-#line 1457 "dhcp6_lexer.ll"
+#line 1422 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3916,9 +3866,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 139:
 YY_RULE_SETUP
-#line 1466 "dhcp6_lexer.ll"
+#line 1431 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3928,9 +3878,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 140:
 YY_RULE_SETUP
-#line 1475 "dhcp6_lexer.ll"
+#line 1440 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3940,9 +3890,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 141:
 YY_RULE_SETUP
-#line 1484 "dhcp6_lexer.ll"
+#line 1449 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3952,9 +3902,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 142:
 YY_RULE_SETUP
-#line 1493 "dhcp6_lexer.ll"
+#line 1458 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3964,9 +3914,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 143:
 YY_RULE_SETUP
-#line 1502 "dhcp6_lexer.ll"
+#line 1467 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3976,9 +3926,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 144:
 YY_RULE_SETUP
-#line 1511 "dhcp6_lexer.ll"
+#line 1476 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3988,9 +3938,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 145:
 YY_RULE_SETUP
-#line 1520 "dhcp6_lexer.ll"
+#line 1485 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4000,9 +3950,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 146:
 YY_RULE_SETUP
-#line 1529 "dhcp6_lexer.ll"
+#line 1494 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4012,9 +3962,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 147:
 YY_RULE_SETUP
-#line 1538 "dhcp6_lexer.ll"
+#line 1503 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4024,9 +3974,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 148:
 YY_RULE_SETUP
-#line 1547 "dhcp6_lexer.ll"
+#line 1512 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4036,9 +3986,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 149:
 YY_RULE_SETUP
-#line 1556 "dhcp6_lexer.ll"
+#line 1521 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4048,9 +3998,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 150:
 YY_RULE_SETUP
-#line 1565 "dhcp6_lexer.ll"
+#line 1530 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4060,9 +4010,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 151:
 YY_RULE_SETUP
-#line 1574 "dhcp6_lexer.ll"
+#line 1539 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4072,9 +4022,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 152:
 YY_RULE_SETUP
-#line 1583 "dhcp6_lexer.ll"
+#line 1548 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4084,9 +4034,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 153:
 YY_RULE_SETUP
-#line 1592 "dhcp6_lexer.ll"
+#line 1557 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4096,9 +4046,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 154:
 YY_RULE_SETUP
-#line 1601 "dhcp6_lexer.ll"
+#line 1566 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4108,9 +4058,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 155:
 YY_RULE_SETUP
-#line 1610 "dhcp6_lexer.ll"
+#line 1575 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4120,9 +4070,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 156:
 YY_RULE_SETUP
-#line 1619 "dhcp6_lexer.ll"
+#line 1584 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4132,9 +4082,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 157:
 YY_RULE_SETUP
-#line 1628 "dhcp6_lexer.ll"
+#line 1593 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4144,9 +4094,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 158:
 YY_RULE_SETUP
-#line 1638 "dhcp6_lexer.ll"
+#line 1603 "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.
@@ -4246,65 +4196,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 161:
-/* rule 161 can match eol */
+case 159:
+/* rule 159 can match eol */
 YY_RULE_SETUP
-#line 1737 "dhcp6_lexer.ll"
+#line 1702 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 162:
-/* rule 162 can match eol */
+case 160:
+/* rule 160 can match eol */
 YY_RULE_SETUP
-#line 1742 "dhcp6_lexer.ll"
+#line 1707 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 163:
+case 161:
 YY_RULE_SETUP
-#line 1747 "dhcp6_lexer.ll"
+#line 1712 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 164:
+case 162:
 YY_RULE_SETUP
-#line 1752 "dhcp6_lexer.ll"
+#line 1717 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 165:
+case 163:
 YY_RULE_SETUP
-#line 1753 "dhcp6_lexer.ll"
+#line 1718 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 166:
+case 164:
 YY_RULE_SETUP
-#line 1754 "dhcp6_lexer.ll"
+#line 1719 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 167:
+case 165:
 YY_RULE_SETUP
-#line 1755 "dhcp6_lexer.ll"
+#line 1720 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 168:
+case 166:
 YY_RULE_SETUP
-#line 1756 "dhcp6_lexer.ll"
+#line 1721 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 169:
+case 167:
 YY_RULE_SETUP
-#line 1757 "dhcp6_lexer.ll"
+#line 1722 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 170:
+case 168:
 YY_RULE_SETUP
-#line 1759 "dhcp6_lexer.ll"
+#line 1724 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4323,9 +4273,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 171:
+case 169:
 YY_RULE_SETUP
-#line 1777 "dhcp6_lexer.ll"
+#line 1742 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4339,43 +4289,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 172:
+case 170:
 YY_RULE_SETUP
-#line 1790 "dhcp6_lexer.ll"
+#line 1755 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 173:
+case 171:
 YY_RULE_SETUP
-#line 1795 "dhcp6_lexer.ll"
+#line 1760 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 174:
+case 172:
 YY_RULE_SETUP
-#line 1799 "dhcp6_lexer.ll"
+#line 1764 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 175:
+case 173:
 YY_RULE_SETUP
-#line 1801 "dhcp6_lexer.ll"
+#line 1766 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 176:
+case 174:
 YY_RULE_SETUP
-#line 1803 "dhcp6_lexer.ll"
+#line 1768 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 177:
+case 175:
 YY_RULE_SETUP
-#line 1805 "dhcp6_lexer.ll"
+#line 1770 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1807 "dhcp6_lexer.ll"
+#line 1772 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4399,12 +4349,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 178:
+case 176:
 YY_RULE_SETUP
-#line 1830 "dhcp6_lexer.ll"
+#line 1795 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4408 "dhcp6_lexer.cc"
+#line 4357 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4723,7 +4673,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 >= 1446 )
+                       if ( yy_current_state >= 1426 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4756,11 +4706,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 >= 1446 )
+               if ( yy_current_state >= 1426 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1445);
+       yy_is_jam = (yy_current_state == 1425);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5509,7 +5459,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1830 "dhcp6_lexer.ll"
+#line 1795 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 810d2f3d3426a6d374ac6cc74681c4c0b39bd138..db4ea4b75fa33b7643363873f50de143640c382f 100644 (file)
@@ -1083,6 +1083,15 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"global\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::RESERVATION_MODE:
+        return isc::dhcp::Dhcp6Parser::make_GLOBAL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("global", driver.loc_);
+    }
+}
+
 \"all\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
index ba6287114a916985d0743e4a44c146f887fb5878..c6ac2680cfe074b6fd0c75cb7b10c1c8021dddec 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -294,29 +294,29 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 169: // "constant string"
+            case 166: // "constant string"
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 190: // value
+      case 186: // value
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 194: // map_value
+      case 190: // map_value
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 246: // db_type
+      case 240: // db_type
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 335: // hr_mode
+      case 329: // hr_mode
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 471: // duid_type
+      case 465: // duid_type
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 504: // ncr_protocol_value
+      case 498: // ncr_protocol_value
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 512: // replace_client_name_value
+      case 506: // replace_client_name_value
 
-#line 246 "dhcp6_parser.yy" // lalr1.cc:636
+#line 243 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 434 "dhcp6_parser.cc" // lalr1.cc:636
         break;
@@ -630,29 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,286 +674,280 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 255 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 253 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 257 "dhcp6_parser.yy" // lalr1.cc:859
+#line 254 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 258 "dhcp6_parser.yy" // lalr1.cc:859
+#line 255 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 259 "dhcp6_parser.yy" // lalr1.cc:859
+#line 256 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:859
+#line 257 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 261 "dhcp6_parser.yy" // lalr1.cc:859
+#line 258 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 262 "dhcp6_parser.yy" // lalr1.cc:859
+#line 259 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 263 "dhcp6_parser.yy" // lalr1.cc:859
+#line 260 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 264 "dhcp6_parser.yy" // lalr1.cc:859
+#line 261 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:859
+#line 262 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 266 "dhcp6_parser.yy" // lalr1.cc:859
+#line 263 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 267 "dhcp6_parser.yy" // lalr1.cc:859
+#line 264 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 268 "dhcp6_parser.yy" // lalr1.cc:859
+#line 265 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.LOGGING; }
 #line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 269 "dhcp6_parser.yy" // lalr1.cc:859
-    { ctx.ctx_ = ctx.CONFIG_CONTROL; }
+#line 273 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 32:
-#line 277 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+  case 31:
+#line 274 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 33:
-#line 278 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
+  case 32:
+#line 275 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 34:
-#line 279 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
+  case 33:
+#line 276 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 35:
-#line 280 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
+  case 34:
+#line 277 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 36:
-#line 281 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+  case 35:
+#line 278 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 37:
-#line 282 "dhcp6_parser.yy" // lalr1.cc:859
+  case 36:
+#line 279 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 800 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 38:
-#line 283 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 806 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 39:
-#line 286 "dhcp6_parser.yy" // lalr1.cc:859
+  case 37:
+#line 282 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 815 "dhcp6_parser.cc" // lalr1.cc:859
+#line 809 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 40:
-#line 291 "dhcp6_parser.yy" // lalr1.cc:859
+  case 38:
+#line 287 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 826 "dhcp6_parser.cc" // lalr1.cc:859
+#line 820 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 41:
-#line 296 "dhcp6_parser.yy" // lalr1.cc:859
+  case 39:
+#line 292 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 836 "dhcp6_parser.cc" // lalr1.cc:859
+#line 830 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 42:
-#line 302 "dhcp6_parser.yy" // lalr1.cc:859
+  case 40:
+#line 298 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 842 "dhcp6_parser.cc" // lalr1.cc:859
+#line 836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 45:
-#line 309 "dhcp6_parser.yy" // lalr1.cc:859
+  case 43:
+#line 305 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 851 "dhcp6_parser.cc" // lalr1.cc:859
+#line 845 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 46:
-#line 313 "dhcp6_parser.yy" // lalr1.cc:859
+  case 44:
+#line 309 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 861 "dhcp6_parser.cc" // lalr1.cc:859
+#line 855 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 47:
-#line 320 "dhcp6_parser.yy" // lalr1.cc:859
+  case 45:
+#line 316 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 870 "dhcp6_parser.cc" // lalr1.cc:859
+#line 864 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 48:
-#line 323 "dhcp6_parser.yy" // lalr1.cc:859
+  case 46:
+#line 319 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 878 "dhcp6_parser.cc" // lalr1.cc:859
+#line 872 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 51:
-#line 331 "dhcp6_parser.yy" // lalr1.cc:859
+  case 49:
+#line 327 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 887 "dhcp6_parser.cc" // lalr1.cc:859
+#line 881 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 52:
-#line 335 "dhcp6_parser.yy" // lalr1.cc:859
+  case 50:
+#line 331 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 896 "dhcp6_parser.cc" // lalr1.cc:859
+#line 890 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 53:
-#line 342 "dhcp6_parser.yy" // lalr1.cc:859
+  case 51:
+#line 338 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 904 "dhcp6_parser.cc" // lalr1.cc:859
+#line 898 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 54:
-#line 344 "dhcp6_parser.yy" // lalr1.cc:859
+  case 52:
+#line 340 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 913 "dhcp6_parser.cc" // lalr1.cc:859
+#line 907 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 57:
-#line 353 "dhcp6_parser.yy" // lalr1.cc:859
+  case 55:
+#line 349 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 922 "dhcp6_parser.cc" // lalr1.cc:859
+#line 916 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 58:
-#line 357 "dhcp6_parser.yy" // lalr1.cc:859
+  case 56:
+#line 353 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 931 "dhcp6_parser.cc" // lalr1.cc:859
+#line 925 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 59:
-#line 368 "dhcp6_parser.yy" // lalr1.cc:859
+  case 57:
+#line 364 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 942 "dhcp6_parser.cc" // lalr1.cc:859
+#line 936 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 60:
-#line 378 "dhcp6_parser.yy" // lalr1.cc:859
+  case 58:
+#line 374 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 953 "dhcp6_parser.cc" // lalr1.cc:859
+#line 947 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 61:
-#line 383 "dhcp6_parser.yy" // lalr1.cc:859
+  case 59:
+#line 379 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -962,11 +956,11 @@ namespace isc { namespace dhcp {
     // Dhcp6 is required
     ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 966 "dhcp6_parser.cc" // lalr1.cc:859
+#line 960 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 70:
-#line 406 "dhcp6_parser.yy" // lalr1.cc:859
+  case 68:
+#line 402 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -975,523 +969,505 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 979 "dhcp6_parser.cc" // lalr1.cc:859
+#line 973 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 71:
-#line 413 "dhcp6_parser.yy" // lalr1.cc:859
+  case 69:
+#line 409 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 989 "dhcp6_parser.cc" // lalr1.cc:859
+#line 983 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 72:
-#line 421 "dhcp6_parser.yy" // lalr1.cc:859
+  case 70:
+#line 417 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 999 "dhcp6_parser.cc" // lalr1.cc:859
+#line 993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 73:
-#line 425 "dhcp6_parser.yy" // lalr1.cc:859
+  case 71:
+#line 421 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     // parsing completed
 }
-#line 1008 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1002 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 106:
-#line 468 "dhcp6_parser.yy" // lalr1.cc:859
+  case 102:
+#line 462 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
 }
-#line 1017 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 473 "dhcp6_parser.yy" // lalr1.cc:859
+  case 103:
+#line 467 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
 }
-#line 1026 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1020 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 478 "dhcp6_parser.yy" // lalr1.cc:859
+  case 104:
+#line 472 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
 }
-#line 1035 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 109:
-#line 483 "dhcp6_parser.yy" // lalr1.cc:859
+  case 105:
+#line 477 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
 }
-#line 1044 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1038 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 110:
-#line 488 "dhcp6_parser.yy" // lalr1.cc:859
+  case 106:
+#line 482 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1053 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1047 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 111:
-#line 493 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 1061 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 112:
-#line 495 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("server-tag", stag);
-    ctx.leave();
-}
-#line 1071 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 113:
-#line 501 "dhcp6_parser.yy" // lalr1.cc:859
+  case 107:
+#line 487 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1082 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 114:
-#line 506 "dhcp6_parser.yy" // lalr1.cc:859
+  case 108:
+#line 492 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1092 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1068 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 115:
-#line 512 "dhcp6_parser.yy" // lalr1.cc:859
+  case 109:
+#line 498 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1102 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1078 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 116:
-#line 516 "dhcp6_parser.yy" // lalr1.cc:859
+  case 110:
+#line 502 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1111 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1087 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 532 "dhcp6_parser.yy" // lalr1.cc:859
+  case 118:
+#line 518 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1122 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1098 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 119:
+#line 523 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1107 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 542 "dhcp6_parser.yy" // lalr1.cc:859
+  case 120:
+#line 528 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1140 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1116 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 548 "dhcp6_parser.yy" // lalr1.cc:859
+  case 121:
+#line 534 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1151 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1127 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 553 "dhcp6_parser.yy" // lalr1.cc:859
+  case 122:
+#line 539 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1162 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1138 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 560 "dhcp6_parser.yy" // lalr1.cc:859
+  case 123:
+#line 546 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1173 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 565 "dhcp6_parser.yy" // lalr1.cc:859
+  case 124:
+#line 551 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1184 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1160 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 572 "dhcp6_parser.yy" // lalr1.cc:859
+  case 125:
+#line 558 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1195 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1171 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 577 "dhcp6_parser.yy" // lalr1.cc:859
+  case 126:
+#line 563 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1204 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1180 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 590 "dhcp6_parser.yy" // lalr1.cc:859
+  case 131:
+#line 576 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1214 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1190 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 594 "dhcp6_parser.yy" // lalr1.cc:859
+  case 132:
+#line 580 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1224 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1200 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 624 "dhcp6_parser.yy" // lalr1.cc:859
+  case 153:
+#line 610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1232 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1208 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 626 "dhcp6_parser.yy" // lalr1.cc:859
+  case 154:
+#line 612 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1241 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1217 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 631 "dhcp6_parser.yy" // lalr1.cc:859
+  case 155:
+#line 617 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1247 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1223 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 632 "dhcp6_parser.yy" // lalr1.cc:859
+  case 156:
+#line 618 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1253 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1229 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 633 "dhcp6_parser.yy" // lalr1.cc:859
+  case 157:
+#line 619 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1259 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1235 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 634 "dhcp6_parser.yy" // lalr1.cc:859
+  case 158:
+#line 620 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1265 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1241 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 637 "dhcp6_parser.yy" // lalr1.cc:859
+  case 159:
+#line 623 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1273 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1249 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 639 "dhcp6_parser.yy" // lalr1.cc:859
+  case 160:
+#line 625 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1283 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1259 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 645 "dhcp6_parser.yy" // lalr1.cc:859
+  case 161:
+#line 631 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1291 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1267 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 162:
+#line 633 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1301 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1277 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 653 "dhcp6_parser.yy" // lalr1.cc:859
+  case 163:
+#line 639 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1309 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1285 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 655 "dhcp6_parser.yy" // lalr1.cc:859
+  case 164:
+#line 641 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1295 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 171:
-#line 661 "dhcp6_parser.yy" // lalr1.cc:859
+  case 165:
+#line 647 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1328 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1304 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 172:
-#line 666 "dhcp6_parser.yy" // lalr1.cc:859
+  case 166:
+#line 652 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1336 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1312 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 173:
-#line 668 "dhcp6_parser.yy" // lalr1.cc:859
+  case 167:
+#line 654 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1346 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1322 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 174:
-#line 674 "dhcp6_parser.yy" // lalr1.cc:859
+  case 168:
+#line 660 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1355 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1331 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 679 "dhcp6_parser.yy" // lalr1.cc:859
+  case 169:
+#line 665 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1364 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1340 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 684 "dhcp6_parser.yy" // lalr1.cc:859
+  case 170:
+#line 670 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1349 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 689 "dhcp6_parser.yy" // lalr1.cc:859
+  case 171:
+#line 675 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1358 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 694 "dhcp6_parser.yy" // lalr1.cc:859
+  case 172:
+#line 680 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1391 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1367 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 699 "dhcp6_parser.yy" // lalr1.cc:859
+  case 173:
+#line 685 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1400 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1376 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 704 "dhcp6_parser.yy" // lalr1.cc:859
+  case 174:
+#line 690 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1409 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1385 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 709 "dhcp6_parser.yy" // lalr1.cc:859
+  case 175:
+#line 695 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1418 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1394 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 714 "dhcp6_parser.yy" // lalr1.cc:859
+  case 176:
+#line 700 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1426 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1402 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 183:
-#line 716 "dhcp6_parser.yy" // lalr1.cc:859
+  case 177:
+#line 702 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1436 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1412 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 184:
-#line 722 "dhcp6_parser.yy" // lalr1.cc:859
+  case 178:
+#line 708 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1445 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1421 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 727 "dhcp6_parser.yy" // lalr1.cc:859
+  case 179:
+#line 713 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1453 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1429 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 729 "dhcp6_parser.yy" // lalr1.cc:859
+  case 180:
+#line 715 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1463 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1439 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 187:
-#line 735 "dhcp6_parser.yy" // lalr1.cc:859
+  case 181:
+#line 721 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1474 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1450 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 188:
-#line 740 "dhcp6_parser.yy" // lalr1.cc:859
+  case 182:
+#line 726 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1483 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1459 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 192:
-#line 750 "dhcp6_parser.yy" // lalr1.cc:859
+  case 186:
+#line 736 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1491 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 752 "dhcp6_parser.yy" // lalr1.cc:859
+  case 187:
+#line 738 "dhcp6_parser.yy" // lalr1.cc:859
     {
 
     if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
@@ -1507,307 +1483,307 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1511 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1487 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 768 "dhcp6_parser.yy" // lalr1.cc:859
+  case 188:
+#line 754 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1522 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1498 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 773 "dhcp6_parser.yy" // lalr1.cc:859
+  case 189:
+#line 759 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1507 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 786 "dhcp6_parser.yy" // lalr1.cc:859
+  case 194:
+#line 772 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1540 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1516 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 791 "dhcp6_parser.yy" // lalr1.cc:859
+  case 195:
+#line 777 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1525 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 796 "dhcp6_parser.yy" // lalr1.cc:859
+  case 196:
+#line 782 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1560 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1536 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 801 "dhcp6_parser.yy" // lalr1.cc:859
+  case 197:
+#line 787 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1569 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1545 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 815 "dhcp6_parser.yy" // lalr1.cc:859
+  case 203:
+#line 801 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1578 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1554 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 820 "dhcp6_parser.yy" // lalr1.cc:859
+  case 204:
+#line 806 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1587 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1563 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 827 "dhcp6_parser.yy" // lalr1.cc:859
+  case 205:
+#line 813 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1598 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1574 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 212:
-#line 832 "dhcp6_parser.yy" // lalr1.cc:859
+  case 206:
+#line 818 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1607 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1583 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 837 "dhcp6_parser.yy" // lalr1.cc:859
+  case 207:
+#line 823 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1618 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1594 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 842 "dhcp6_parser.yy" // lalr1.cc:859
+  case 208:
+#line 828 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1627 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1603 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 219:
-#line 855 "dhcp6_parser.yy" // lalr1.cc:859
+  case 213:
+#line 841 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1637 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1613 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 220:
-#line 859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 214:
+#line 845 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1647 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1623 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 221:
-#line 865 "dhcp6_parser.yy" // lalr1.cc:859
+  case 215:
+#line 851 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1657 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1633 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 222:
-#line 869 "dhcp6_parser.yy" // lalr1.cc:859
+  case 216:
+#line 855 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1667 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1643 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 228:
-#line 884 "dhcp6_parser.yy" // lalr1.cc:859
+  case 222:
+#line 870 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1675 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1651 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 229:
-#line 886 "dhcp6_parser.yy" // lalr1.cc:859
+  case 223:
+#line 872 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1685 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1661 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 230:
-#line 892 "dhcp6_parser.yy" // lalr1.cc:859
+  case 224:
+#line 878 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1693 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1669 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 231:
-#line 894 "dhcp6_parser.yy" // lalr1.cc:859
+  case 225:
+#line 880 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1702 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1678 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 232:
-#line 900 "dhcp6_parser.yy" // lalr1.cc:859
+  case 226:
+#line 886 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1713 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1689 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 905 "dhcp6_parser.yy" // lalr1.cc:859
+  case 227:
+#line 891 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1723 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1699 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 242:
-#line 923 "dhcp6_parser.yy" // lalr1.cc:859
+  case 236:
+#line 909 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1732 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1708 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 928 "dhcp6_parser.yy" // lalr1.cc:859
+  case 237:
+#line 914 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1741 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1717 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 933 "dhcp6_parser.yy" // lalr1.cc:859
+  case 238:
+#line 919 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1750 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1726 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 938 "dhcp6_parser.yy" // lalr1.cc:859
+  case 239:
+#line 924 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1759 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1735 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 943 "dhcp6_parser.yy" // lalr1.cc:859
+  case 240:
+#line 929 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1768 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1744 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 948 "dhcp6_parser.yy" // lalr1.cc:859
+  case 241:
+#line 934 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1777 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1753 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 956 "dhcp6_parser.yy" // lalr1.cc:859
+  case 242:
+#line 942 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1788 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 249:
-#line 961 "dhcp6_parser.yy" // lalr1.cc:859
+  case 243:
+#line 947 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1797 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 981 "dhcp6_parser.yy" // lalr1.cc:859
+  case 248:
+#line 967 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1807 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1783 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 985 "dhcp6_parser.yy" // lalr1.cc:859
+  case 249:
+#line 971 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1829,261 +1805,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1833 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1809 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 256:
-#line 1007 "dhcp6_parser.yy" // lalr1.cc:859
+  case 250:
+#line 993 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1843 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1819 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 257:
-#line 1011 "dhcp6_parser.yy" // lalr1.cc:859
+  case 251:
+#line 997 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1853 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1829 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1045 "dhcp6_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1031 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1861 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1837 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1047 "dhcp6_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1033 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1871 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1847 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1053 "dhcp6_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1039 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1879 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1855 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1055 "dhcp6_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1041 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1889 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1865 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 284:
-#line 1061 "dhcp6_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1047 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1897 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1873 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 285:
-#line 1063 "dhcp6_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1049 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 1907 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1883 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1069 "dhcp6_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1055 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1915 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1891 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1071 "dhcp6_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1057 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 1925 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1901 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1077 "dhcp6_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1063 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1936 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1912 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1082 "dhcp6_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1068 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1945 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1921 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1087 "dhcp6_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1073 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 1953 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1929 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1089 "dhcp6_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1962 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1938 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 292:
-#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
+  case 286:
+#line 1080 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 1968 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1944 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 293:
-#line 1095 "dhcp6_parser.yy" // lalr1.cc:859
+  case 287:
+#line 1081 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 1974 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1950 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 288:
+#line 1082 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 1956 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1096 "dhcp6_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1083 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 1980 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1962 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1099 "dhcp6_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1086 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 1989 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1971 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 296:
-#line 1104 "dhcp6_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1091 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 1998 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1112 "dhcp6_parser.yy" // lalr1.cc:859
+  case 292:
+#line 1099 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2009 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1991 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 298:
-#line 1117 "dhcp6_parser.yy" // lalr1.cc:859
+  case 293:
+#line 1104 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2018 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2000 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1132 "dhcp6_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1119 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2028 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2010 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1136 "dhcp6_parser.yy" // lalr1.cc:859
+  case 299:
+#line 1123 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2036 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2018 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 319:
+#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2047 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1172 "dhcp6_parser.yy" // lalr1.cc:859
+  case 320:
+#line 1159 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2056 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2038 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1180 "dhcp6_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2065 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2047 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1183 "dhcp6_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1170 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2073 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2055 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1199 "dhcp6_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2083 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2065 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1190 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2091,21 +2073,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2095 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1214 "dhcp6_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2105 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2087 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1218 "dhcp6_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2113,280 +2095,280 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2117 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2099 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1250 "dhcp6_parser.yy" // lalr1.cc:859
+  case 346:
+#line 1237 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2126 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2108 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1257 "dhcp6_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1244 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2134 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2116 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 354:
-#line 1259 "dhcp6_parser.yy" // lalr1.cc:859
+  case 349:
+#line 1246 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2126 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 355:
-#line 1265 "dhcp6_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1252 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2152 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2134 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1267 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1254 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2162 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2144 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 357:
-#line 1273 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1260 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2170 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2152 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 358:
-#line 1275 "dhcp6_parser.yy" // lalr1.cc:859
+  case 353:
+#line 1262 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2180 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2162 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 360:
-#line 1283 "dhcp6_parser.yy" // lalr1.cc:859
+  case 355:
+#line 1270 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2188 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2170 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1285 "dhcp6_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1272 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2198 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2180 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1291 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1278 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2207 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2189 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1300 "dhcp6_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1287 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2218 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2200 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1305 "dhcp6_parser.yy" // lalr1.cc:859
+  case 359:
+#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2227 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2209 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1324 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1311 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2237 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2219 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1328 "dhcp6_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1315 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2246 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2228 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 371:
-#line 1336 "dhcp6_parser.yy" // lalr1.cc:859
+  case 366:
+#line 1323 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2256 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2238 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1340 "dhcp6_parser.yy" // lalr1.cc:859
+  case 367:
+#line 1327 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2265 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2247 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1373 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1360 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2273 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2255 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1375 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1362 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2283 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2265 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1372 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2292 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2274 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1390 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2301 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2283 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1398 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2312 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2294 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1403 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1390 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2321 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2303 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 399:
-#line 1418 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1405 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2331 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2313 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1422 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1409 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2341 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2323 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1428 "dhcp6_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1415 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2351 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2333 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1432 "dhcp6_parser.yy" // lalr1.cc:859
+  case 397:
+#line 1419 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2360 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2342 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1450 "dhcp6_parser.yy" // lalr1.cc:859
+  case 407:
+#line 1437 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2368 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2350 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1439 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2378 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2360 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1458 "dhcp6_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1445 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2386 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2368 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1460 "dhcp6_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
@@ -2409,19 +2391,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2413 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2395 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1483 "dhcp6_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1470 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2421 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2403 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1485 "dhcp6_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1472 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2446,41 +2428,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2450 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2432 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1513 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1500 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2461 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2443 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1518 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1505 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2470 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2452 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1533 "dhcp6_parser.yy" // lalr1.cc:859
+  case 419:
+#line 1520 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2480 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2462 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2488,21 +2470,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2492 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2474 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1545 "dhcp6_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1532 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2502 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2484 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 427:
-#line 1549 "dhcp6_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1536 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2510,1169 +2492,1091 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2514 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2496 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1561 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2522 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2504 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1563 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2514 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1582 "dhcp6_parser.yy" // lalr1.cc:859
+  case 438:
+#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2523 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1587 "dhcp6_parser.yy" // lalr1.cc:859
+  case 439:
+#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2531 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1589 "dhcp6_parser.yy" // lalr1.cc:859
+  case 440:
+#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1595 "dhcp6_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1582 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2568 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2550 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1600 "dhcp6_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1587 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2577 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1608 "dhcp6_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1595 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2588 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2570 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1613 "dhcp6_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1600 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2597 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2579 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1613 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2607 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2589 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1630 "dhcp6_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1617 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2616 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2598 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1635 "dhcp6_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1622 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2626 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2608 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1639 "dhcp6_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2635 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2617 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1666 "dhcp6_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1653 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2646 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2628 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1671 "dhcp6_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1658 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2655 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2637 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1676 "dhcp6_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1663 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2666 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2648 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1681 "dhcp6_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1668 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2675 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2657 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1686 "dhcp6_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1673 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2683 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2665 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1688 "dhcp6_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1675 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2693 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2675 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1694 "dhcp6_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1681 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2701 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2683 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1696 "dhcp6_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1683 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2711 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2693 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1702 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2719 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2701 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1704 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1691 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2729 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2711 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1710 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1697 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2737 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2719 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1712 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 2747 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2729 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1718 "dhcp6_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2758 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1710 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2767 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2749 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1718 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2778 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2760 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1736 "dhcp6_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2787 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2769 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1745 "dhcp6_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1732 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2795 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2777 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1747 "dhcp6_parser.yy" // lalr1.cc:859
+  case 487:
+#line 1734 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2805 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2787 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1756 "dhcp6_parser.yy" // lalr1.cc:859
+  case 488:
+#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2816 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2798 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1761 "dhcp6_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1748 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2825 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2807 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1770 "dhcp6_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2835 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2817 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1774 "dhcp6_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1761 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2845 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2827 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 511:
-#line 1799 "dhcp6_parser.yy" // lalr1.cc:859
+  case 506:
+#line 1786 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2853 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2835 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 512:
-#line 1801 "dhcp6_parser.yy" // lalr1.cc:859
+  case 507:
+#line 1788 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2863 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2845 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 513:
-#line 1807 "dhcp6_parser.yy" // lalr1.cc:859
+  case 508:
+#line 1794 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 2872 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2854 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 514:
-#line 1815 "dhcp6_parser.yy" // lalr1.cc:859
+  case 509:
+#line 1802 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2883 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2865 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 515:
-#line 1820 "dhcp6_parser.yy" // lalr1.cc:859
+  case 510:
+#line 1807 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2894 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2876 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 527:
-#line 1842 "dhcp6_parser.yy" // lalr1.cc:859
+  case 522:
+#line 1829 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2902 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2884 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 528:
-#line 1844 "dhcp6_parser.yy" // lalr1.cc:859
+  case 523:
+#line 1831 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2911 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2893 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 529:
-#line 1849 "dhcp6_parser.yy" // lalr1.cc:859
+  case 524:
+#line 1836 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2917 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2899 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 530:
-#line 1850 "dhcp6_parser.yy" // lalr1.cc:859
+  case 525:
+#line 1837 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2923 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2905 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1851 "dhcp6_parser.yy" // lalr1.cc:859
+  case 526:
+#line 1838 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2929 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2911 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1854 "dhcp6_parser.yy" // lalr1.cc:859
+  case 527:
+#line 1841 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 2938 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2920 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 528:
+#line 1846 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2946 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2928 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1861 "dhcp6_parser.yy" // lalr1.cc:859
+  case 529:
+#line 1848 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 2956 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2938 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 535:
-#line 1867 "dhcp6_parser.yy" // lalr1.cc:859
+  case 530:
+#line 1854 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 2965 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2947 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 536:
-#line 1872 "dhcp6_parser.yy" // lalr1.cc:859
+  case 531:
+#line 1859 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 2974 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2956 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 537:
-#line 1879 "dhcp6_parser.yy" // lalr1.cc:859
+  case 532:
+#line 1866 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2983 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2965 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 538:
-#line 1886 "dhcp6_parser.yy" // lalr1.cc:859
+  case 533:
+#line 1873 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2994 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2976 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 539:
-#line 1891 "dhcp6_parser.yy" // lalr1.cc:859
+  case 534:
+#line 1878 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3003 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2985 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 547:
-#line 1907 "dhcp6_parser.yy" // lalr1.cc:859
+  case 542:
+#line 1894 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3011 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 548:
-#line 1909 "dhcp6_parser.yy" // lalr1.cc:859
+  case 543:
+#line 1896 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3021 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3003 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 549:
-#line 1915 "dhcp6_parser.yy" // lalr1.cc:859
+  case 544:
+#line 1902 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 550:
-#line 1917 "dhcp6_parser.yy" // lalr1.cc:859
+  case 545:
+#line 1904 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3039 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3021 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 551:
-#line 1925 "dhcp6_parser.yy" // lalr1.cc:859
+  case 546:
+#line 1912 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 3050 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3032 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 552:
-#line 1930 "dhcp6_parser.yy" // lalr1.cc:859
+  case 547:
+#line 1917 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3061 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3043 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 553:
-#line 1937 "dhcp6_parser.yy" // lalr1.cc:859
+  case 548:
+#line 1924 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3071 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3053 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 554:
-#line 1941 "dhcp6_parser.yy" // lalr1.cc:859
+  case 549:
+#line 1928 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3081 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3063 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 576:
-#line 1972 "dhcp6_parser.yy" // lalr1.cc:859
+  case 571:
+#line 1959 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3090 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3072 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 577:
-#line 1977 "dhcp6_parser.yy" // lalr1.cc:859
+  case 572:
+#line 1964 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3098 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3080 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 578:
-#line 1979 "dhcp6_parser.yy" // lalr1.cc:859
+  case 573:
+#line 1966 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3108 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3090 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 579:
-#line 1985 "dhcp6_parser.yy" // lalr1.cc:859
+  case 574:
+#line 1972 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3116 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3098 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 580:
-#line 1987 "dhcp6_parser.yy" // lalr1.cc:859
+  case 575:
+#line 1974 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3126 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3108 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 581:
-#line 1993 "dhcp6_parser.yy" // lalr1.cc:859
+  case 576:
+#line 1980 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3135 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3117 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 582:
-#line 1998 "dhcp6_parser.yy" // lalr1.cc:859
+  case 577:
+#line 1985 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3143 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3125 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 583:
-#line 2000 "dhcp6_parser.yy" // lalr1.cc:859
+  case 578:
+#line 1987 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3153 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3135 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 584:
-#line 2006 "dhcp6_parser.yy" // lalr1.cc:859
+  case 579:
+#line 1993 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3162 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3144 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 585:
-#line 2011 "dhcp6_parser.yy" // lalr1.cc:859
+  case 580:
+#line 1998 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3171 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3153 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 586:
-#line 2016 "dhcp6_parser.yy" // lalr1.cc:859
+  case 581:
+#line 2003 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3179 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 587:
-#line 2018 "dhcp6_parser.yy" // lalr1.cc:859
+  case 582:
+#line 2005 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3188 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3170 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 588:
-#line 2024 "dhcp6_parser.yy" // lalr1.cc:859
+  case 583:
+#line 2011 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3194 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3176 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 589:
-#line 2025 "dhcp6_parser.yy" // lalr1.cc:859
+  case 584:
+#line 2012 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3200 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3182 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 590:
-#line 2028 "dhcp6_parser.yy" // lalr1.cc:859
+  case 585:
+#line 2015 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3208 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3190 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 591:
-#line 2030 "dhcp6_parser.yy" // lalr1.cc:859
+  case 586:
+#line 2017 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3218 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3200 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 592:
-#line 2036 "dhcp6_parser.yy" // lalr1.cc:859
+  case 587:
+#line 2023 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
 }
-#line 3227 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3209 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 593:
-#line 2041 "dhcp6_parser.yy" // lalr1.cc:859
+  case 588:
+#line 2028 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3236 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3218 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 594:
-#line 2046 "dhcp6_parser.yy" // lalr1.cc:859
+  case 589:
+#line 2033 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3245 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3227 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 595:
-#line 2051 "dhcp6_parser.yy" // lalr1.cc:859
+  case 590:
+#line 2038 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3253 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3235 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 596:
-#line 2053 "dhcp6_parser.yy" // lalr1.cc:859
+  case 591:
+#line 2040 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3262 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3244 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 597:
-#line 2059 "dhcp6_parser.yy" // lalr1.cc:859
+  case 592:
+#line 2046 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3270 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3252 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 598:
-#line 2062 "dhcp6_parser.yy" // lalr1.cc:859
+  case 593:
+#line 2049 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3278 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3260 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 599:
-#line 2065 "dhcp6_parser.yy" // lalr1.cc:859
+  case 594:
+#line 2052 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3286 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3268 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 600:
-#line 2068 "dhcp6_parser.yy" // lalr1.cc:859
+  case 595:
+#line 2055 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3294 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3276 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 601:
-#line 2071 "dhcp6_parser.yy" // lalr1.cc:859
+  case 596:
+#line 2058 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3303 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3285 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 602:
-#line 2077 "dhcp6_parser.yy" // lalr1.cc:859
+  case 597:
+#line 2064 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3311 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3293 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 603:
-#line 2079 "dhcp6_parser.yy" // lalr1.cc:859
+  case 598:
+#line 2066 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3321 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3303 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 604:
-#line 2085 "dhcp6_parser.yy" // lalr1.cc:859
+  case 599:
+#line 2072 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3329 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3311 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 605:
-#line 2087 "dhcp6_parser.yy" // lalr1.cc:859
+  case 600:
+#line 2074 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3339 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3321 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 606:
-#line 2093 "dhcp6_parser.yy" // lalr1.cc:859
+  case 601:
+#line 2080 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3347 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3329 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 607:
-#line 2095 "dhcp6_parser.yy" // lalr1.cc:859
+  case 602:
+#line 2082 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3357 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3339 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 608:
-#line 2103 "dhcp6_parser.yy" // lalr1.cc:859
+  case 603:
+#line 2090 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3365 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3347 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 609:
-#line 2105 "dhcp6_parser.yy" // lalr1.cc:859
+  case 604:
+#line 2092 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3374 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3356 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 610:
-#line 2110 "dhcp6_parser.yy" // lalr1.cc:859
+  case 605:
+#line 2097 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3364 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 611:
-#line 2112 "dhcp6_parser.yy" // lalr1.cc:859
+  case 606:
+#line 2099 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3391 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3373 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 612:
-#line 2117 "dhcp6_parser.yy" // lalr1.cc:859
+  case 607:
+#line 2104 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3399 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3381 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 613:
-#line 2119 "dhcp6_parser.yy" // lalr1.cc:859
+  case 608:
+#line 2106 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3408 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 614:
-#line 2126 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->add(m);
-    ctx.stack_.push_back(m);
-}
-#line 3418 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 615:
-#line 2130 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    ctx.stack_.pop_back();
-}
-#line 3426 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 616:
-#line 2135 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    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 3437 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 617:
-#line 2140 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    // No config control params are required
-    ctx.stack_.pop_back();
-    ctx.leave();
-}
-#line 3447 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 618:
-#line 2146 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    // Parse the config-control map
-    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.push_back(m);
-}
-#line 3457 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 619:
-#line 2150 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    // No config_control params are required
-    // parsing completed
-}
-#line 3466 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 624:
-#line 2165 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    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 3477 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 625:
-#line 2170 "dhcp6_parser.yy" // lalr1.cc:859
-    {
-    ctx.stack_.pop_back();
-    ctx.leave();
-}
-#line 3486 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3390 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 626:
-#line 2180 "dhcp6_parser.yy" // lalr1.cc:859
+  case 609:
+#line 2117 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3497 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3401 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 627:
-#line 2185 "dhcp6_parser.yy" // lalr1.cc:859
+  case 610:
+#line 2122 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3506 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3410 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 628:
-#line 2190 "dhcp6_parser.yy" // lalr1.cc:859
+  case 611:
+#line 2127 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3516 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3420 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 629:
-#line 2194 "dhcp6_parser.yy" // lalr1.cc:859
+  case 612:
+#line 2131 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 3524 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 633:
-#line 2210 "dhcp6_parser.yy" // lalr1.cc:859
+  case 616:
+#line 2147 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 3535 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3439 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 634:
-#line 2215 "dhcp6_parser.yy" // lalr1.cc:859
+  case 617:
+#line 2152 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3544 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3448 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 637:
-#line 2227 "dhcp6_parser.yy" // lalr1.cc:859
+  case 620:
+#line 2164 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3554 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3458 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 638:
-#line 2231 "dhcp6_parser.yy" // lalr1.cc:859
+  case 621:
+#line 2168 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3562 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3466 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 648:
-#line 2248 "dhcp6_parser.yy" // lalr1.cc:859
+  case 631:
+#line 2185 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3571 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3475 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 649:
-#line 2253 "dhcp6_parser.yy" // lalr1.cc:859
+  case 632:
+#line 2190 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3579 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3483 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 650:
-#line 2255 "dhcp6_parser.yy" // lalr1.cc:859
+  case 633:
+#line 2192 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3589 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3493 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 651:
-#line 2261 "dhcp6_parser.yy" // lalr1.cc:859
+  case 634:
+#line 2198 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 3600 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3504 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 652:
-#line 2266 "dhcp6_parser.yy" // lalr1.cc:859
+  case 635:
+#line 2203 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3609 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3513 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 655:
-#line 2275 "dhcp6_parser.yy" // lalr1.cc:859
+  case 638:
+#line 2212 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3619 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3523 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 656:
-#line 2279 "dhcp6_parser.yy" // lalr1.cc:859
+  case 639:
+#line 2216 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3627 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3531 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 663:
-#line 2293 "dhcp6_parser.yy" // lalr1.cc:859
+  case 646:
+#line 2230 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3635 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3539 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 664:
-#line 2295 "dhcp6_parser.yy" // lalr1.cc:859
+  case 647:
+#line 2232 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3645 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 665:
-#line 2301 "dhcp6_parser.yy" // lalr1.cc:859
+  case 648:
+#line 2238 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3654 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3558 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 666:
-#line 2306 "dhcp6_parser.yy" // lalr1.cc:859
+  case 649:
+#line 2243 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3663 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 667:
-#line 2311 "dhcp6_parser.yy" // lalr1.cc:859
+  case 650:
+#line 2248 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3672 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3676 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3580 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3927,724 +3831,706 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -821;
+  const short int Dhcp6Parser::yypact_ninf_ = -795;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     414,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,    64,    46,    76,    95,
-      99,   119,   126,   130,   143,   145,   157,   174,   178,   191,
-     204,   218,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,    46,    66,    44,    45,    63,   230,   190,   244,
-      65,   187,    53,   194,   -27,   362,   108,    57,  -821,   258,
-     262,   263,   270,   285,  -821,  -821,  -821,  -821,  -821,   286,
-    -821,    97,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,   288,   290,   299,   308,   310,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,   322,  -821,  -821,  -821,   112,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,   333,  -821,   131,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,   336,   363,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,   132,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,   199,  -821,  -821,
-    -821,  -821,  -821,   375,  -821,   376,   389,  -821,  -821,  -821,
-    -821,  -821,  -821,   201,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,   374,   368,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,   387,  -821,  -821,   402,  -821,  -821,  -821,   408,  -821,
-    -821,   407,   430,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,   437,   438,  -821,  -821,
-    -821,  -821,   440,   442,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,   216,  -821,  -821,  -821,
-     447,  -821,  -821,   448,  -821,   449,   450,  -821,  -821,   451,
-     452,   453,  -821,  -821,  -821,  -821,  -821,  -821,  -821,   228,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,   246,  -821,
-    -821,  -821,  -821,   250,  -821,  -821,  -821,    46,    46,  -821,
-     170,   454,   455,   456,   458,   459,  -821,    44,  -821,    57,
-     461,   462,   463,   464,   465,   300,   301,   303,   304,   305,
-     472,   473,   474,   475,   476,   491,   492,   493,   494,   495,
-     496,   497,   500,   501,   502,   503,   338,   505,   506,    45,
-    -821,   507,   340,    63,  -821,   509,   511,   512,   513,   520,
-     355,   354,   523,   524,   525,   526,   230,  -821,   528,   190,
-    -821,   530,   366,   531,   369,   370,   244,  -821,   533,   534,
-     540,   542,   544,   545,   546,  -821,    65,  -821,   547,   548,
-     386,   553,   554,   555,   388,  -821,    53,   557,   390,   391,
-    -821,   194,   560,   579,    16,  -821,   412,   581,   582,   417,
-     584,   419,   420,   587,   588,   421,   422,   423,   592,   594,
-     595,   596,   362,  -821,   597,   108,  -821,   598,    57,  -821,
-    -821,  -821,   599,   600,   601,    46,    46,    46,  -821,   254,
-     602,   603,   604,   605,   608,  -821,  -821,  -821,  -821,  -821,
-     435,   609,   610,   611,   612,   436,   613,   616,   617,   618,
-     619,   620,   622,   623,   624,   625,  -821,   626,   627,  -821,
-     630,  -821,  -821,   631,   632,   460,   469,   470,  -821,  -821,
-     274,   630,   471,   634,  -821,   477,  -821,   478,  -821,   479,
-    -821,  -821,  -821,   630,   630,   630,   480,   481,   482,   483,
-    -821,   484,   485,  -821,   486,   487,   488,  -821,  -821,   489,
-    -821,  -821,  -821,   490,    46,  -821,  -821,   498,   499,  -821,
-     504,  -821,  -821,   105,   508,  -821,  -821,  -821,   146,   510,
-     514,   515,  -821,   637,  -821,   639,  -821,    46,    45,   108,
-    -821,  -821,  -821,  -821,    57,    63,   142,   142,   638,  -821,
-     653,   654,   655,  -821,  -821,  -821,   656,   -31,    46,   -17,
-     536,   657,   658,   659,   231,   117,    83,   362,  -821,  -821,
-     662,   663,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,   -13,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,   664,   638,  -821,   260,
-     271,   272,   312,  -821,  -821,  -821,  -821,   668,   670,   671,
-     672,   673,  -821,   674,   676,  -821,   677,   678,   681,  -821,
-     320,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,   335,
-    -821,   680,   621,  -821,  -821,   682,   684,  -821,  -821,   683,
-     687,  -821,  -821,   685,   689,  -821,  -821,   688,   690,  -821,
-    -821,  -821,    54,  -821,  -821,  -821,   691,  -821,  -821,  -821,
-      93,  -821,  -821,  -821,  -821,   347,  -821,  -821,  -821,   140,
-    -821,  -821,   692,   693,  -821,  -821,   694,   696,  -821,   697,
-     698,   699,   700,   701,   702,   348,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,   703,   704,   705,  -821,  -821,
-    -821,  -821,   357,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,   365,  -821,  -821,  -821,   367,   541,
-    -821,   706,   708,  -821,  -821,   707,   711,  -821,  -821,  -821,
-     709,  -821,  -821,   159,  -821,   710,  -821,  -821,  -821,  -821,
-     714,   715,   716,   717,   552,   434,   556,   543,   558,   719,
-     559,   561,   720,   562,   563,   564,   142,  -821,  -821,   142,
-    -821,   638,   230,  -821,   653,    53,  -821,   654,   194,  -821,
-     655,   378,  -821,   656,   -31,  -821,  -821,   -17,  -821,   721,
-     536,  -821,    32,   657,  -821,    65,  -821,   658,   -27,  -821,
-     659,   565,   567,   568,   569,   570,   571,   231,  -821,   723,
-     726,   572,   573,   574,   117,  -821,   730,   741,    83,  -821,
-    -821,  -821,   740,   744,   190,  -821,   662,   244,  -821,   663,
-     745,  -821,   175,   664,  -821,  -821,   171,   583,   585,   586,
-    -821,  -821,  -821,  -821,  -821,   589,  -821,  -821,   590,  -821,
-    -821,  -821,  -821,   380,  -821,   394,  -821,   742,  -821,   743,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,   400,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,   591,  -821,  -821,   749,  -821,  -821,  -821,
-    -821,  -821,   748,   754,  -821,  -821,  -821,  -821,  -821,   753,
-    -821,   413,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-     331,   606,  -821,  -821,  -821,  -821,   607,   628,  -821,  -821,
-     640,   426,  -821,   427,  -821,   642,  -821,   759,  -821,  -821,
-    -821,  -821,  -821,   428,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,   378,  -821,  -821,   760,   576,  -821,    32,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,   762,   615,   763,   175,  -821,  -821,   649,
-    -821,  -821,   764,  -821,   652,  -821,  -821,   766,  -821,  -821,
-     202,  -821,    39,   766,  -821,  -821,   774,   775,   778,   429,
-    -821,  -821,  -821,  -821,  -821,  -821,   786,   661,   666,   667,
-      39,  -821,   660,  -821,  -821,  -821,  -821,  -821
+     277,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,    49,    46,    47,    68,    84,
+     121,   130,   139,   150,   152,   166,   168,   172,   176,   183,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,    46,    51,
+      42,    58,    44,   237,   339,   208,    98,   210,    41,    14,
+     -25,   336,   113,  -795,   257,   254,   255,   264,   270,  -795,
+    -795,  -795,  -795,  -795,   275,  -795,   107,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,   276,   286,   304,
+     305,   306,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,   322,  -795,  -795,
+    -795,   108,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,   341,  -795,   123,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,   349,   355,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,   136,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,   137,  -795,  -795,
+    -795,  -795,  -795,   375,  -795,   377,   381,  -795,  -795,  -795,
+    -795,  -795,  -795,   160,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,   358,   354,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,   380,  -795,  -795,   385,  -795,  -795,  -795,   388,  -795,
+    -795,   397,   409,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,   411,   421,  -795,  -795,
+    -795,  -795,   414,   424,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,   164,  -795,  -795,  -795,
+     447,  -795,  -795,   448,  -795,   463,   467,  -795,  -795,   468,
+     469,   472,  -795,  -795,  -795,  -795,  -795,  -795,  -795,   173,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,   195,  -795,
+    -795,  -795,    46,    46,  -795,   311,   474,   475,   476,   477,
+     478,  -795,    42,  -795,   479,   480,   481,   482,   320,   321,
+     323,   324,   326,   485,   490,   491,   492,   497,   499,   500,
+     502,   503,   504,   506,   507,   508,   509,   510,   348,   515,
+     516,    58,  -795,   518,   356,    44,  -795,   519,   520,   522,
+     523,   527,   365,   364,   530,   531,   532,   533,   237,  -795,
+     534,   339,  -795,   535,   376,   540,   378,   379,   208,  -795,
+     543,   544,   545,   546,   547,   548,   549,  -795,    98,  -795,
+     550,   551,   389,   553,   554,   555,   391,  -795,    41,   557,
+     393,   394,  -795,    14,   560,   561,    13,  -795,   398,   562,
+     564,   402,   566,   404,   405,   569,   571,   407,   412,   413,
+     573,   574,   575,   576,   336,  -795,   579,   113,  -795,  -795,
+    -795,   580,   578,   581,    46,    46,    46,  -795,   582,   583,
+     584,   587,  -795,  -795,  -795,  -795,  -795,   588,   589,   591,
+     590,   420,   593,   594,   595,   596,   597,   598,   600,   601,
+     602,   603,  -795,   604,   605,  -795,   608,  -795,  -795,   609,
+     610,   436,   441,   442,  -795,  -795,   373,   608,   450,   611,
+    -795,   451,  -795,   453,  -795,   454,  -795,  -795,  -795,   608,
+     608,   608,   455,   456,   457,   458,  -795,   459,   460,  -795,
+     461,   462,   464,  -795,  -795,   465,  -795,  -795,  -795,   466,
+      46,  -795,  -795,   470,   471,  -795,   473,  -795,  -795,   115,
+     496,  -795,  -795,  -795,   -55,   483,   484,   486,  -795,   628,
+    -795,    46,    58,   113,  -795,  -795,  -795,    44,   203,   203,
+     627,   631,   633,   634,  -795,  -795,  -795,   635,   -10,    46,
+      -4,   556,   636,   637,   638,   185,   132,    50,   336,  -795,
+    -795,   639,   640,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,    -3,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,   641,  -795,
+     196,   198,   241,  -795,  -795,  -795,  -795,   647,   649,   650,
+     651,   652,  -795,   653,   654,  -795,   655,   656,   657,  -795,
+     242,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,   252,
+    -795,   658,   659,  -795,  -795,   660,   662,  -795,  -795,   661,
+     665,  -795,  -795,   663,   667,  -795,  -795,   666,   668,  -795,
+    -795,  -795,   194,  -795,  -795,  -795,   669,  -795,  -795,  -795,
+     291,  -795,  -795,  -795,  -795,   253,  -795,  -795,  -795,   313,
+    -795,  -795,   670,   671,  -795,  -795,   672,   674,  -795,   675,
+     676,   677,   678,   679,   680,   309,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,   681,   682,   683,  -795,  -795,
+    -795,  -795,   327,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,   333,  -795,  -795,  -795,   334,   524,
+    -795,   685,   686,  -795,  -795,   687,   689,  -795,  -795,  -795,
+     688,  -795,  -795,   317,  -795,  -795,  -795,  -795,   684,   690,
+     691,   693,   536,   494,   537,   529,   538,   695,   539,   541,
+     696,   542,   552,   558,   203,  -795,  -795,   203,  -795,   627,
+     237,  -795,   631,    41,  -795,   633,    14,  -795,   634,    85,
+    -795,   635,   -10,  -795,  -795,    -4,  -795,   697,   556,  -795,
+     251,   636,  -795,    98,  -795,   637,   -25,  -795,   638,   559,
+     563,   565,   567,   568,   570,   185,  -795,   698,   703,   572,
+     614,   616,   132,  -795,   706,   707,    50,  -795,  -795,  -795,
+     708,   709,   339,  -795,   639,   208,  -795,   640,   711,  -795,
+     262,   641,  -795,   429,   585,   624,   630,  -795,  -795,  -795,
+    -795,  -795,   642,  -795,  -795,   643,  -795,  -795,  -795,  -795,
+     343,  -795,   346,  -795,   705,  -795,   710,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,   353,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+     648,  -795,  -795,   712,  -795,  -795,  -795,  -795,  -795,   713,
+     714,  -795,  -795,  -795,  -795,  -795,   715,  -795,   406,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,   363,   664,  -795,
+    -795,  -795,  -795,   673,   692,  -795,  -795,   694,   408,  -795,
+     410,  -795,   699,  -795,   716,  -795,  -795,  -795,  -795,  -795,
+     416,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+      85,  -795,  -795,   718,   632,  -795,   251,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+     720,   626,   721,   262,  -795,  -795,   700,  -795,  -795,   723,
+    -795,   701,  -795,  -795,   722,  -795,  -795,   362,  -795,    75,
+     722,  -795,  -795,   727,   729,   732,   418,  -795,  -795,  -795,
+    -795,  -795,  -795,   734,   644,   702,   704,    75,  -795,   717,
+    -795,  -795,  -795,  -795,  -795
   };
 
   const unsigned short int
   Dhcp6Parser::yydefact_[] =
   {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
-      20,    22,    24,    26,    28,    30,     0,     0,     0,     0,
+      20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     1,    47,    40,    36,    35,    32,    33,    34,
-      39,     3,    37,    38,    60,     5,    72,     7,   115,     9,
-     256,    11,   401,    13,   426,    15,   456,    17,   326,    19,
-     334,    21,   371,    23,   221,    25,   553,    27,   628,    29,
-     618,    31,    49,    43,     0,     0,     0,     0,     0,     0,
-     458,     0,   336,   373,     0,     0,     0,     0,    51,     0,
-      50,     0,     0,    44,    70,   626,   608,   610,   612,     0,
-      69,     0,    62,    64,    66,    67,    68,    65,   614,   616,
-     113,   127,   129,   131,     0,     0,     0,     0,     0,   111,
-     248,   324,   363,   414,   416,   297,   194,   211,   202,   187,
-     493,   448,   213,   232,   514,     0,   538,   551,   105,     0,
-      74,    76,    77,    78,    79,    80,   104,    83,    84,    85,
-      86,   101,    87,    89,    88,    93,    94,    81,    82,    91,
-      92,    99,   100,   102,    90,    95,    96,    97,    98,   103,
-     124,     0,   123,     0,   117,   119,   120,   121,   122,   393,
-     418,   280,   282,   284,     0,     0,   290,   288,   286,   487,
-     279,   260,   261,   262,   263,     0,   258,   267,   268,   269,
-     272,   273,   275,   270,   271,   264,   265,   277,   278,   266,
-     274,   276,   412,   411,   407,   408,   406,     0,   403,   405,
-     409,   410,   441,     0,   444,     0,     0,   440,   434,   435,
-     433,   438,   439,     0,   428,   430,   431,   436,   437,   432,
-     485,   473,   475,   477,   479,   481,   483,   472,   469,   470,
-     471,     0,   459,   460,   464,   465,   462,   466,   467,   468,
-     463,     0,   353,   172,     0,   357,   355,   360,     0,   349,
-     350,     0,   337,   338,   340,   352,   341,   342,   343,   359,
-     344,   345,   346,   347,   348,   387,     0,     0,   385,   386,
-     389,   390,     0,   374,   375,   377,   378,   379,   380,   381,
-     382,   383,   384,   228,   230,   225,     0,   223,   226,   227,
-       0,   577,   579,     0,   582,     0,     0,   586,   590,     0,
-       0,     0,   595,   602,   604,   606,   575,   573,   574,     0,
-     555,   557,   558,   559,   560,   561,   562,   563,   564,   565,
-     566,   567,   568,   569,   570,   571,   572,   633,     0,   630,
-     632,   624,   623,     0,   620,   622,    48,     0,     0,    41,
-       0,     0,     0,     0,     0,     0,    59,     0,    61,     0,
+       1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
+      35,    36,    58,     5,    70,     7,   109,     9,   250,    11,
+     396,    13,   421,    15,   451,    17,   321,    19,   329,    21,
+     366,    23,   215,    25,   548,    27,   611,    29,    47,    41,
+       0,     0,     0,     0,     0,     0,   453,     0,   331,   368,
+       0,     0,     0,    49,     0,    48,     0,     0,    42,    68,
+     609,   603,   605,   607,     0,    67,     0,    60,    62,    64,
+      65,    66,    63,   107,   121,   123,   125,     0,     0,     0,
+       0,     0,   242,   319,   358,   409,   411,   292,   188,   205,
+     196,   181,   488,   443,   207,   226,   509,     0,   533,   546,
+     101,     0,    72,    74,    75,    76,    77,    78,    81,    82,
+      83,    84,    99,    85,    87,    86,    91,    92,    79,    80,
+      89,    90,    97,    98,   100,    88,    93,    94,    95,    96,
+     118,     0,   117,     0,   111,   113,   114,   115,   116,   388,
+     413,   274,   276,   278,     0,     0,   284,   282,   280,   482,
+     273,   254,   255,   256,   257,     0,   252,   261,   262,   263,
+     266,   267,   269,   264,   265,   258,   259,   271,   272,   260,
+     268,   270,   407,   406,   402,   403,   401,     0,   398,   400,
+     404,   405,   436,     0,   439,     0,     0,   435,   429,   430,
+     428,   433,   434,     0,   423,   425,   426,   431,   432,   427,
+     480,   468,   470,   472,   474,   476,   478,   467,   464,   465,
+     466,     0,   454,   455,   459,   460,   457,   461,   462,   463,
+     458,     0,   348,   166,     0,   352,   350,   355,     0,   344,
+     345,     0,   332,   333,   335,   347,   336,   337,   338,   354,
+     339,   340,   341,   342,   343,   382,     0,     0,   380,   381,
+     384,   385,     0,   369,   370,   372,   373,   374,   375,   376,
+     377,   378,   379,   222,   224,   219,     0,   217,   220,   221,
+       0,   572,   574,     0,   577,     0,     0,   581,   585,     0,
+       0,     0,   590,   597,   599,   601,   570,   568,   569,     0,
+     550,   552,   553,   554,   555,   556,   557,   558,   559,   560,
+     561,   562,   563,   564,   565,   566,   567,   616,     0,   613,
+     615,    46,     0,     0,    39,     0,     0,     0,     0,     0,
+       0,    57,     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,    71,     0,     0,     0,   110,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   251,
+       0,     0,   397,     0,     0,     0,     0,     0,     0,   422,
+       0,     0,     0,     0,     0,     0,     0,   452,     0,   322,
+       0,     0,     0,     0,     0,     0,     0,   330,     0,     0,
+       0,     0,   367,     0,     0,     0,     0,   216,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      73,     0,     0,     0,   116,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   257,     0,     0,
-     402,     0,     0,     0,     0,     0,     0,   427,     0,     0,
-       0,     0,     0,     0,     0,   457,     0,   327,     0,     0,
-       0,     0,     0,     0,     0,   335,     0,     0,     0,     0,
-     372,     0,     0,     0,     0,   222,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   549,     0,     0,   612,    50,
+      43,     0,     0,     0,     0,     0,     0,    61,     0,     0,
+       0,     0,   102,   103,   104,   105,   106,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   554,     0,     0,   629,     0,     0,   619,
-      52,    45,     0,     0,     0,     0,     0,     0,    63,     0,
-       0,     0,     0,     0,     0,   106,   107,   108,   109,   110,
+       0,     0,   532,     0,     0,    73,     0,   120,   112,     0,
+       0,     0,     0,     0,   290,   291,     0,     0,     0,     0,
+     253,     0,   399,     0,   438,     0,   441,   442,   424,     0,
+       0,     0,     0,     0,     0,     0,   456,     0,     0,   346,
+       0,     0,     0,   357,   334,     0,   386,   387,   371,     0,
+       0,   218,   571,     0,     0,   576,     0,   579,   580,     0,
+       0,   587,   588,   589,     0,     0,     0,     0,   551,     0,
+     614,     0,     0,     0,   604,   606,   608,     0,     0,     0,
+     127,   244,   323,   360,    40,   410,   412,   294,     0,    47,
+       0,     0,     0,   445,   209,     0,     0,     0,     0,    51,
+     119,   390,   415,   275,   277,   279,   286,   287,   288,   289,
+     285,   283,   281,     0,   408,   437,   440,   481,   469,   471,
+     473,   475,   477,   479,   349,   167,   353,   351,   356,   383,
+     223,   225,   573,   575,   578,   583,   584,   582,   586,   592,
+     593,   594,   595,   596,   591,   598,   600,   602,     0,    44,
+       0,     0,     0,   153,   159,   161,   163,     0,     0,     0,
+       0,     0,   176,     0,     0,   179,     0,     0,     0,   152,
+       0,   133,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   147,   148,   149,   150,   145,   146,   151,     0,
+     131,     0,   128,   129,   248,     0,   245,   246,   327,     0,
+     324,   325,   364,     0,   361,   362,   298,     0,   295,   296,
+     194,   195,     0,   190,   192,   193,     0,   203,   204,   200,
+       0,   198,   201,   202,   186,     0,   183,   185,   492,     0,
+     490,   449,     0,   446,   447,   213,     0,   210,   211,     0,
+       0,     0,     0,     0,     0,     0,   228,   230,   231,   232,
+     233,   234,   235,   522,   528,     0,     0,     0,   521,   518,
+     519,   520,     0,   511,   513,   516,   514,   515,   517,   542,
+     544,   541,   539,   540,     0,   535,   537,   538,     0,    53,
+     394,     0,   391,   392,   419,     0,   416,   417,   486,   485,
+       0,   484,   620,     0,   618,    69,   610,   108,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   537,     0,     0,    75,
-       0,   126,   118,     0,     0,     0,     0,     0,   295,   296,
-       0,     0,     0,     0,   259,     0,   404,     0,   443,     0,
-     446,   447,   429,     0,     0,     0,     0,     0,     0,     0,
-     461,     0,     0,   351,     0,     0,     0,   362,   339,     0,
-     391,   392,   376,     0,     0,   224,   576,     0,     0,   581,
-       0,   584,   585,     0,     0,   592,   593,   594,     0,     0,
-       0,     0,   556,     0,   631,     0,   621,     0,     0,     0,
-     609,   611,   613,   615,     0,     0,     0,     0,   133,   112,
-     250,   328,   365,    42,   415,   417,   299,     0,    49,     0,
-       0,     0,   450,   215,     0,     0,     0,     0,    53,   125,
-     395,   420,   281,   283,   285,   292,   293,   294,   291,   289,
-     287,     0,   413,   442,   445,   486,   474,   476,   478,   480,
-     482,   484,   354,   173,   358,   356,   361,   388,   229,   231,
-     578,   580,   583,   588,   589,   587,   591,   597,   598,   599,
-     600,   601,   596,   603,   605,   607,     0,   133,    46,     0,
-       0,     0,     0,   159,   165,   167,   169,     0,     0,     0,
-       0,     0,   182,     0,     0,   185,     0,     0,     0,   158,
-       0,   139,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   153,   154,   155,   156,   151,   152,   157,     0,
-     137,     0,   134,   135,   254,     0,   251,   252,   332,     0,
-     329,   330,   369,     0,   366,   367,   303,     0,   300,   301,
-     200,   201,     0,   196,   198,   199,     0,   209,   210,   206,
-       0,   204,   207,   208,   192,     0,   189,   191,   497,     0,
-     495,   454,     0,   451,   452,   219,     0,   216,   217,     0,
-       0,     0,     0,     0,     0,     0,   234,   236,   237,   238,
-     239,   240,   241,   527,   533,     0,     0,     0,   526,   523,
-     524,   525,     0,   516,   518,   521,   519,   520,   522,   547,
-     549,   546,   544,   545,     0,   540,   542,   543,     0,    55,
-     399,     0,   396,   397,   424,     0,   421,   422,   491,   490,
-       0,   489,   637,     0,   635,     0,    71,   627,   617,   114,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   128,   130,     0,
-     132,     0,     0,   249,     0,   336,   325,     0,   373,   364,
-       0,     0,   298,     0,     0,   195,   212,     0,   203,     0,
-       0,   188,   499,     0,   494,   458,   449,     0,     0,   214,
-       0,     0,     0,     0,     0,     0,     0,     0,   233,     0,
-       0,     0,     0,     0,     0,   515,     0,     0,     0,   539,
-     552,    57,     0,    56,     0,   394,     0,     0,   419,     0,
-       0,   488,     0,     0,   634,   625,     0,     0,     0,     0,
-     171,   174,   175,   176,   177,     0,   184,   178,     0,   179,
-     180,   181,   140,     0,   136,     0,   253,     0,   331,     0,
-     368,   323,   318,   320,   311,   312,   307,   308,   309,   310,
-     316,   317,   315,   319,     0,   305,   313,   321,   322,   314,
-     302,   197,   205,     0,   190,   511,     0,   509,   510,   506,
-     507,   508,     0,   500,   501,   503,   504,   505,   496,     0,
-     453,     0,   218,   242,   243,   244,   245,   246,   247,   235,
-       0,     0,   532,   535,   536,   517,     0,     0,   541,    54,
-       0,     0,   398,     0,   423,     0,   651,     0,   649,   647,
-     641,   645,   646,     0,   639,   643,   644,   642,   636,   161,
-     162,   163,   164,   160,   166,   168,   170,   183,   186,   138,
-     255,   333,   370,     0,   304,   193,     0,     0,   498,     0,
-     455,   220,   529,   530,   531,   528,   534,   548,   550,    58,
-     400,   425,   492,     0,     0,     0,     0,   638,   306,     0,
-     513,   502,     0,   648,     0,   640,   512,     0,   650,   655,
-       0,   653,     0,     0,   652,   663,     0,     0,     0,     0,
-     657,   659,   660,   661,   662,   654,     0,     0,     0,     0,
-       0,   656,     0,   665,   666,   667,   658,   664
+       0,     0,     0,     0,     0,   122,   124,     0,   126,     0,
+       0,   243,     0,   331,   320,     0,   368,   359,     0,     0,
+     293,     0,     0,   189,   206,     0,   197,     0,     0,   182,
+     494,     0,   489,   453,   444,     0,     0,   208,     0,     0,
+       0,     0,     0,     0,     0,     0,   227,     0,     0,     0,
+       0,     0,     0,   510,     0,     0,     0,   534,   547,    55,
+       0,    54,     0,   389,     0,     0,   414,     0,     0,   483,
+       0,     0,   617,     0,     0,     0,     0,   165,   168,   169,
+     170,   171,     0,   178,   172,     0,   173,   174,   175,   134,
+       0,   130,     0,   247,     0,   326,     0,   363,   318,   313,
+     315,   306,   307,   302,   303,   304,   305,   311,   312,   310,
+     314,     0,   300,   308,   316,   317,   309,   297,   191,   199,
+       0,   184,   506,     0,   504,   505,   501,   502,   503,     0,
+     495,   496,   498,   499,   500,   491,     0,   448,     0,   212,
+     236,   237,   238,   239,   240,   241,   229,     0,     0,   527,
+     530,   531,   512,     0,     0,   536,    52,     0,     0,   393,
+       0,   418,     0,   634,     0,   632,   630,   624,   628,   629,
+       0,   622,   626,   627,   625,   619,   155,   156,   157,   158,
+     154,   160,   162,   164,   177,   180,   132,   249,   328,   365,
+       0,   299,   187,     0,     0,   493,     0,   450,   214,   524,
+     525,   526,   523,   529,   543,   545,    56,   395,   420,   487,
+       0,     0,     0,     0,   621,   301,     0,   508,   497,     0,
+     631,     0,   623,   507,     0,   633,   638,     0,   636,     0,
+       0,   635,   646,     0,     0,     0,     0,   640,   642,   643,
+     644,   645,   637,     0,     0,     0,     0,     0,   639,     0,
+     648,   649,   650,   641,   647
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,    33,  -821,   266,
-    -821,  -821,  -821,  -821,  -821,  -821,    22,  -821,  -450,  -821,
-    -821,  -821,   -74,  -821,  -821,  -821,   328,  -821,  -821,  -821,
-    -821,   236,   432,   -70,   -58,   -55,   -38,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,   232,   439,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,   158,  -821,     0,  -821,  -573,
-       7,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,   -46,  -821,  -603,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,   -15,
-    -821,  -821,  -821,  -821,  -821,    -8,  -596,  -821,  -821,  -821,
-    -821,    -9,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-     -21,  -821,  -821,  -821,   -14,   397,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,   -22,  -821,  -821,  -821,  -821,  -821,  -821,
-    -820,  -821,  -821,  -821,    13,  -821,  -821,  -821,    17,   445,
-    -821,  -821,  -817,  -821,  -813,  -821,   -34,  -821,   -32,  -821,
-    -811,  -821,  -821,  -821,  -803,  -821,  -821,  -821,  -821,     5,
-    -821,  -821,  -159,   785,  -821,  -821,  -821,  -821,  -821,    20,
-    -821,  -821,  -821,    23,  -821,   424,  -821,   -42,  -821,  -821,
-    -821,  -821,  -821,   -40,  -821,  -821,  -821,  -821,  -821,   -12,
-    -821,  -821,  -821,    19,  -821,  -821,  -821,    24,  -821,   425,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,   -25,  -821,  -821,  -821,   -20,   467,  -821,  -821,   -62,
-    -821,   -50,  -821,  -821,  -821,  -821,  -821,   -26,  -821,  -821,
-    -821,   -19,   457,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-     -35,  -821,  -821,  -821,     8,  -821,  -821,  -821,    12,  -821,
-     443,   249,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -802,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,    18,  -821,  -821,  -821,  -145,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,     3,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,     1,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,   273,   416,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,  -821,
-    -821,  -821,  -821,  -821,  -821,  -821,  -821,  -344,   415,  -821,
-    -821,  -821,  -821,  -821,  -821,   302,   431,  -821,  -821,  -821,
-     -11,  -821,  -821,  -152,  -821,  -821,  -821,  -821,  -821,  -821,
-    -168,  -821,  -821,  -184,  -821,  -821,  -821,  -821,  -821
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,    34,  -795,   193,  -795,
+    -795,  -795,  -795,  -795,  -795,     8,  -795,  -402,  -795,  -795,
+    -795,   -70,  -795,  -795,  -795,   390,  -795,  -795,  -795,  -795,
+     179,   366,   -66,   -54,   -51,   -34,  -795,  -795,  -795,  -795,
+    -795,   178,   369,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,   -61,  -795,  -545,   -47,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,   -42,  -795,
+    -574,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,   -78,  -795,  -795,  -795,
+    -795,  -795,   -60,  -567,  -795,  -795,  -795,  -795,   -56,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,   -41,  -795,  -795,
+    -795,   -37,   367,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+     -40,  -795,  -795,  -795,  -795,  -795,  -795,  -794,  -795,  -795,
+    -795,     3,  -795,  -795,  -795,     7,   422,  -795,  -795,  -788,
+    -795,  -785,  -795,   -30,  -795,   -28,  -795,  -781,  -795,  -795,
+    -795,  -779,  -795,  -795,  -795,  -795,     0,  -795,  -795,  -172,
+     746,  -795,  -795,  -795,  -795,  -795,    11,  -795,  -795,  -795,
+      16,  -795,   399,  -795,   -38,  -795,  -795,  -795,  -795,  -795,
+     -36,  -795,  -795,  -795,  -795,  -795,    -8,  -795,  -795,  -795,
+      15,  -795,  -795,  -795,    20,  -795,   415,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,   -33,  -795,
+    -795,  -795,   -24,   439,  -795,  -795,   -58,  -795,   -46,  -795,
+    -795,  -795,  -795,  -795,   -26,  -795,  -795,  -795,   -23,   435,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,   -31,  -795,  -795,
+    -795,     9,  -795,  -795,  -795,    12,  -795,   428,   244,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -771,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+      18,  -795,  -795,  -795,  -146,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,    -1,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,     5,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,   265,   401,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,  -795,
+    -795,  -795,  -795,   289,   417,  -795,  -795,  -795,   -15,  -795,
+    -795,  -154,  -795,  -795,  -795,  -795,  -795,  -795,  -168,  -795,
+    -795,  -184,  -795,  -795,  -795,  -795,  -795
   };
 
   const short int
   Dhcp6Parser::yydefgoto_[] =
   {
-      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    88,    41,    42,
-      73,   604,    92,    93,    43,    72,    89,    90,   619,   799,
-     892,   893,   352,    45,    74,   101,   102,   103,   361,    47,
-      75,   139,   140,   141,   142,   143,   144,   145,   146,   380,
-     147,   371,    49,    76,   173,   174,   175,   401,   176,   148,
-     372,   149,   373,   150,   374,   711,   712,   713,   839,   690,
-     691,   692,   820,  1013,   693,   821,   694,   822,   695,   823,
-     696,   697,   439,   698,   699,   700,   701,   702,   703,   704,
-     705,   706,   829,   707,   708,   832,   151,   390,   745,   746,
-     747,   859,   152,   387,   732,   733,   734,   735,   153,   389,
-     740,   741,   742,   743,   154,   388,   155,   393,   756,   757,
-     758,   868,    65,    84,   306,   307,   308,   452,   309,   453,
-     156,   394,   765,   766,   767,   768,   769,   770,   771,   772,
-     157,   381,   715,   716,   717,   842,    51,    77,   195,   196,
-     197,   407,   198,   408,   199,   409,   200,   414,   201,   413,
-     202,   412,   628,   203,   204,   158,   386,   727,   728,   729,
-     851,   944,   945,   159,   382,    59,    81,   719,   720,   721,
-     845,    61,    82,   271,   272,   273,   274,   275,   276,   277,
-     438,   278,   442,   279,   441,   280,   281,   443,   282,   160,
-     383,   723,   724,   725,   848,    63,    83,   292,   293,   294,
-     295,   296,   447,   297,   298,   299,   300,   206,   405,   801,
-     802,   803,   894,    53,    78,   217,   218,   219,   418,   161,
-     384,   162,   385,   209,   406,   805,   806,   807,   897,    55,
-      79,   233,   234,   235,   421,   236,   237,   423,   238,   239,
-     163,   392,   752,   753,   754,   865,    57,    80,   251,   252,
-     253,   254,   429,   255,   430,   256,   431,   257,   432,   258,
-     433,   259,   434,   260,   428,   211,   415,   810,   811,   900,
-     164,   391,   749,   750,   862,   962,   963,   964,   965,   966,
-    1026,   967,   165,   395,   782,   783,   784,   879,  1035,   785,
-     786,   880,   787,   788,   166,   167,   397,   794,   795,   796,
-     886,   797,   887,   168,   398,    67,    85,   329,   330,   331,
-     332,   457,   333,   458,   334,   335,   460,   336,   337,   338,
-     463,   655,   339,   464,   340,   341,   342,   343,   468,   662,
-     344,   469,   345,   470,   346,   471,   104,   363,   105,   364,
-     106,   365,   169,   369,   370,    71,    87,   353,   354,   355,
-     477,   107,   362,    69,    86,   348,   349,   350,   474,   813,
-     814,   902,  1003,  1004,  1005,  1006,  1045,  1007,  1043,  1060,
-    1061,  1062,  1069,  1070,  1071,  1076,  1072,  1073,  1074
+      -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
+     575,    87,    88,    41,    68,    84,    85,   590,   769,   860,
+     861,   659,    43,    70,    96,    97,    98,   346,    45,    71,
+     131,   132,   133,   134,   135,   136,   137,   138,   354,    47,
+      72,   163,   164,   165,   383,   166,   139,   355,   140,   356,
+     141,   357,   681,   682,   683,   807,   660,   661,   662,   788,
+     980,   663,   789,   664,   790,   665,   791,   666,   667,   421,
+     668,   669,   670,   671,   672,   673,   674,   675,   676,   797,
+     677,   678,   800,   142,   372,   715,   716,   717,   827,   143,
+     369,   702,   703,   704,   705,   144,   371,   710,   711,   712,
+     713,   145,   370,   146,   375,   726,   727,   728,   836,    63,
+      80,   296,   297,   298,   434,   299,   435,   147,   376,   735,
+     736,   737,   738,   739,   740,   741,   742,   148,   363,   685,
+     686,   687,   810,    49,    73,   185,   186,   187,   389,   188,
+     390,   189,   391,   190,   396,   191,   395,   192,   394,   600,
+     193,   194,   149,   368,   697,   698,   699,   819,   911,   912,
+     150,   364,    57,    77,   689,   690,   691,   813,    59,    78,
+     261,   262,   263,   264,   265,   266,   267,   420,   268,   424,
+     269,   423,   270,   271,   425,   272,   151,   365,   693,   694,
+     695,   816,    61,    79,   282,   283,   284,   285,   286,   429,
+     287,   288,   289,   290,   196,   387,   771,   772,   773,   862,
+      51,    74,   207,   208,   209,   400,   152,   366,   153,   367,
+     199,   388,   775,   776,   777,   865,    53,    75,   223,   224,
+     225,   403,   226,   227,   405,   228,   229,   154,   374,   722,
+     723,   724,   833,    55,    76,   241,   242,   243,   244,   411,
+     245,   412,   246,   413,   247,   414,   248,   415,   249,   416,
+     250,   410,   201,   397,   780,   781,   868,   155,   373,   719,
+     720,   830,   929,   930,   931,   932,   933,   993,   934,   156,
+     377,   752,   753,   754,   847,  1002,   755,   756,   848,   757,
+     758,   157,   158,   379,   764,   765,   766,   854,   767,   855,
+     159,   380,    65,    81,   319,   320,   321,   322,   439,   323,
+     440,   324,   325,   442,   326,   327,   328,   445,   627,   329,
+     446,   330,   331,   332,   333,   450,   634,   334,   451,   335,
+     452,   336,   453,    99,   348,   100,   349,   101,   350,   102,
+     347,    67,    82,   338,   339,   340,   456,   783,   784,   870,
+     970,   971,   972,   973,  1012,   974,  1010,  1027,  1028,  1029,
+    1036,  1037,  1038,  1043,  1039,  1040,  1041
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-     100,   138,   172,   190,   213,   227,   247,   191,   269,   288,
-     305,   326,   779,   739,   177,   207,   220,   231,   249,   192,
-     283,   301,   193,   327,   709,   489,   178,   208,   221,   232,
-     250,   937,   284,   302,   938,   328,   270,   289,   939,   194,
-     942,   290,   210,   291,   214,   228,   215,   229,   943,   949,
-      40,    33,   108,    34,    94,    35,   109,   854,   110,   730,
-     855,   111,   112,   113,    32,   205,   216,   230,   248,   351,
-     303,   304,   262,   730,   737,   241,   738,   170,   171,   122,
-     263,   629,   808,    44,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   635,   636,   637,   857,   123,   124,   858,
-     367,   263,    46,   264,   265,   368,    48,   266,   267,   268,
-     123,   124,   122,   303,   304,   399,   955,   956,   123,   124,
-     400,   125,   126,   127,   128,   129,    50,   130,   123,   124,
-     123,   124,   131,    52,   403,   416,   773,    54,   731,   404,
-     417,   132,    99,   863,   133,   678,   864,   240,   123,   124,
-      56,   134,    58,   241,   242,   243,   244,   245,   246,   135,
-     136,   673,   903,   137,    60,   904,   674,   675,   676,   677,
-     678,   679,   680,   681,   682,   683,   684,   685,   686,   687,
-     688,    62,   123,   124,  1065,    64,    95,  1066,  1067,  1068,
-     263,  1009,  1010,  1011,  1012,    96,    97,    98,    66,   789,
-     790,    99,   419,   937,   426,  1063,   938,   420,  1064,   427,
-     939,    68,   942,    99,    99,    36,    37,    38,    39,   454,
-     943,   949,    99,   263,   455,    70,    99,   774,   775,   776,
-     777,   472,    99,   121,    99,    91,   473,   122,   653,   654,
-     123,   124,   263,   285,   264,   265,   286,   287,   212,   475,
-     671,   347,    99,   478,   476,   123,   124,   478,   479,   123,
-     124,   739,   593,   399,   356,   357,   923,   358,   816,   114,
-     115,   116,   117,   187,   475,   478,   188,   122,   359,   817,
-     818,   779,   657,   658,   659,   660,    99,   179,   360,   180,
-     366,   122,   375,   100,   376,   123,   124,   181,   182,   183,
-     184,   185,   186,   377,   222,   223,   224,   225,   226,   123,
-     124,    99,   378,   187,   379,   403,   188,   131,   661,   996,
-     819,   997,   998,   836,   189,   138,   396,   187,   837,   172,
-     188,   759,   760,   761,   762,   763,   764,   402,   836,   482,
-     410,   177,   190,   838,    99,   213,   191,   625,   626,   627,
-     860,   877,   227,   178,   207,   861,   878,   220,   192,    99,
-     884,   193,   247,    99,   231,   885,   208,   411,   888,   221,
-     472,   436,   269,   889,   249,   890,   232,   288,   194,   422,
-     424,   210,   435,   836,   283,   214,   250,   215,  1019,   301,
-     480,   481,   228,   425,   229,   437,   284,   416,   326,    99,
-     270,   302,  1020,  1023,   205,   289,   440,   216,  1024,   290,
-     327,   291,   444,    99,   230,   445,   454,   114,   115,   116,
-     117,  1031,   328,   120,   248,   122,   263,   123,   124,   419,
-     426,  1046,  1080,   446,  1040,  1041,  1047,  1081,  1032,  1033,
-    1034,   448,   449,   123,   124,   451,   182,   183,   450,   185,
-     186,   456,   459,   461,   462,   465,   466,   467,   483,   484,
-     485,   187,   486,   487,   188,   490,   491,   492,   493,   494,
-     495,   496,   189,   497,   498,   499,   500,   501,   502,   503,
-     504,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   505,   506,   507,   508,   509,
-     510,   511,   324,   325,   512,   513,   514,   515,   516,   517,
-     518,   520,   521,   523,   138,   524,   525,   526,   590,   591,
-     592,   172,   689,   689,   527,   528,   529,   530,   531,   532,
-     533,    99,   535,   177,   537,   539,   538,   543,   544,   540,
-     541,   778,   791,   326,   545,   178,   546,    99,   547,   548,
-     549,   551,   552,   780,   792,   327,   553,   554,   555,   556,
-     557,   559,   560,   561,   563,   781,   793,   328,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,   564,   566,   567,   568,   569,   570,   571,
-     572,   573,   574,   575,   576,   577,   578,   649,   579,   580,
-     581,   583,   585,   587,   599,   605,   911,   588,   589,   594,
-     595,   596,   597,   598,   600,   601,   602,   744,   606,    34,
-     668,   607,   608,   609,   841,   611,   610,   612,   613,   622,
-     736,   614,   615,   616,   617,   618,   620,   621,   623,   624,
-     630,   631,   666,   656,   667,   710,   632,   633,   634,   638,
-     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
-     714,   718,   722,   726,   748,   751,   755,   650,   651,   800,
-     804,   812,   824,   652,   825,   826,   827,   828,   830,   663,
-     831,   833,   834,   664,   665,   835,   840,   844,   843,   846,
-     847,   849,   850,   853,   852,   488,   867,   856,   866,   870,
-     869,   871,   872,   873,   874,   875,   876,   881,   882,   883,
-     891,   896,   895,   898,   899,   913,   905,   901,   906,   907,
-     908,   909,   910,   915,   918,   953,   912,   980,   914,   916,
-     981,   917,   919,   920,   986,   973,   921,   974,   975,   976,
-     977,   978,   982,   983,   984,   987,   989,   990,  1050,   995,
-    1021,  1022,  1014,  1027,  1015,  1016,  1028,  1029,  1017,  1018,
-    1025,  1030,   689,  1044,  1049,   689,  1052,  1054,   190,  1057,
-     603,   269,   191,  1059,   288,  1036,  1037,   931,  1077,  1078,
-     207,   932,  1079,   283,   192,  1053,   301,   193,   957,   947,
-    1082,   247,   208,   933,   305,   284,   934,  1038,   302,   270,
-     960,   948,   289,   249,   194,   936,   290,   210,   291,  1039,
-     778,  1042,   961,   935,   791,   250,   958,   940,  1056,   941,
-     213,  1058,   780,   227,   669,   815,   792,   672,   999,  1087,
-     205,   519,   220,  1083,   781,   231,  1084,  1085,   793,   946,
-    1001,   924,   522,   922,   221,   954,   951,   232,   952,   972,
-     959,   565,  1002,   248,   971,   979,  1000,   926,   950,   925,
-     214,   534,   215,   228,  1048,   229,   261,   928,   927,   930,
-     558,   992,   929,   994,   991,   970,   562,   969,   993,   550,
-     809,   968,   216,   542,  1051,   230,   536,   985,   582,   988,
-     798,   670,  1008,   586,  1055,  1075,  1086,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   584,     0,     0,     0,
+      95,   130,   162,   180,   203,   217,   237,   181,   259,   278,
+     295,   316,   749,   709,   167,   197,   210,   221,   239,   182,
+     273,   291,   183,   317,   679,   904,   168,   198,   211,   222,
+     240,   905,   274,   292,   906,   318,   260,   279,   909,   184,
+     910,   280,   200,   281,   204,   218,   205,   219,   916,    30,
+      38,    31,    89,    32,    42,    33,   160,   161,   252,   253,
+     275,   254,   255,   276,   277,   195,   206,   220,   238,   103,
+     293,   294,   104,   105,   106,    44,   115,   116,   700,   629,
+     630,   631,   632,   231,   700,   707,   253,   708,   254,   255,
+     778,    46,   256,   257,   258,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   601,   115,   116,   293,   294,
+     352,   381,   115,   116,   633,   353,   382,   607,   608,   609,
+     115,   116,   107,   108,   109,   110,   385,   112,    48,   114,
+     253,   386,   117,   118,   119,   120,   121,    50,   122,   398,
+     401,    94,   114,   123,   399,   402,    52,   115,   116,   743,
+     172,   173,   124,   175,   176,   125,   701,    54,   648,    56,
+     115,   116,   126,   408,   759,   760,   177,   436,   409,   178,
+     127,   128,   437,    58,   129,    60,   454,   179,   230,    62,
+      94,   455,    90,    64,   231,   232,   233,   234,   235,   236,
+      66,    91,    92,    93,   115,   116,   904,   822,   457,   381,
+     823,   457,   905,   458,   785,   906,   786,    94,    94,   909,
+      94,   910,    34,    35,    36,    37,    94,    86,  1032,   916,
+     643,  1033,  1034,  1035,    94,   644,   645,   646,   647,   648,
+     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
+     744,   745,   746,   747,   385,   804,   625,   626,   253,   787,
+     805,    94,   114,   113,   337,   804,   828,   342,   709,   343,
+     806,   829,   890,   341,    94,   212,   213,   214,   215,   216,
+     115,   116,   344,   345,   107,   108,   109,   110,   749,   351,
+     358,   114,    95,   729,   730,   731,   732,   733,   734,   177,
+     359,   169,   178,   170,   825,   114,   253,   826,    94,   115,
+     116,   171,   172,   173,   174,   175,   176,   253,   360,   361,
+     362,   130,   845,   115,   116,   162,   831,   846,   177,   832,
+     871,   178,   123,   872,   115,   116,   378,   167,   180,   179,
+     852,   203,   181,   922,   923,   853,   856,   454,   217,   168,
+     197,   857,   858,   210,   182,   384,   804,   183,   237,   398,
+     221,   986,   198,   392,   987,   211,   990,   418,   259,   393,
+     239,   991,   222,   278,   184,  1030,   417,   200,  1031,    94,
+     273,   204,   240,   205,    94,   291,   459,   460,   218,   404,
+     219,   406,   274,   114,   316,   407,   260,   292,   419,   422,
+     195,   279,   426,   206,   202,   280,   317,   281,   115,   116,
+     220,   115,   116,    94,   963,   427,   964,   965,   318,   436,
+     238,   401,   428,   408,   998,   430,  1007,    94,  1008,  1013,
+     177,  1047,   432,   178,  1014,   431,  1048,   433,    94,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,   596,   597,   598,   599,   976,   977,   978,
+     979,   438,   441,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   443,   999,  1000,
+    1001,   444,   447,   448,   314,   315,   449,   461,   462,   463,
+     464,   465,   466,   468,   469,   470,   471,   472,   473,   477,
+     474,   475,   130,   476,   478,   479,   480,   162,   564,   565,
+     566,   481,    94,   482,   483,    94,   484,   485,   486,   167,
+     487,   488,   489,   490,   491,   492,   748,   761,   316,   493,
+     494,   168,   496,   499,   500,   497,   501,   502,   750,   762,
+     317,   503,   504,   505,   506,   507,   508,   509,   511,   513,
+     751,   763,   318,   514,   515,   516,   517,   519,   520,   521,
+     522,   523,   524,   525,   527,   528,   529,   530,   531,   532,
+     533,   535,   536,   537,   539,   540,   543,   542,   544,   545,
+     546,   547,   548,   549,   621,   550,   551,   554,   555,   556,
+     557,   552,   553,   559,   561,   562,   576,   706,   563,   567,
+     568,   569,   570,   571,   572,   639,   573,    32,   577,   578,
+     579,   580,   593,   582,   581,   583,   584,   594,   595,   585,
+     586,   587,   588,   589,   591,   592,   602,   604,   603,   605,
+     606,   610,   611,   612,   613,   614,   615,   616,   617,   628,
+     618,   619,   620,   638,   680,   714,   622,   623,   684,   624,
+     688,   692,   696,   718,   721,   725,   770,   774,   782,   635,
+     636,   792,   637,   793,   794,   795,   796,   798,   799,   801,
+     802,   803,   809,   878,   808,   812,   811,   814,   815,   817,
+     818,   821,   820,   574,   835,   824,   834,   838,   837,   839,
+     840,   841,   842,   843,   844,   849,   850,   851,   873,   864,
+     859,   863,   867,   866,   874,   875,   869,   876,   880,   882,
+     885,   920,   947,   877,   879,   881,   883,   948,   884,   886,
+     953,   954,   957,   988,   956,   962,   994,   996,   989,   887,
+    1011,   995,  1016,   997,  1019,  1021,   940,   888,  1024,  1026,
+     941,  1044,   942,  1045,   943,   944,  1046,   945,  1049,   949,
+     180,   640,   467,   259,   181,   642,   278,   495,   891,   898,
+     921,   981,   197,   899,   498,   273,   182,   889,   291,   183,
+     924,   914,   918,   237,   198,   900,   295,   274,   901,   919,
+     292,   260,   927,   915,   279,   239,   184,   903,   280,   200,
+     281,   950,   748,   951,   928,   902,   761,   240,   925,   907,
+     982,   908,   203,  1020,   750,   217,   983,   939,   762,   938,
+     966,  1017,   195,   541,   210,   946,   751,   221,   984,   985,
+     763,   913,   968,  1050,   992,   893,   211,   892,  1015,   222,
+     510,   917,   926,   251,   969,   238,   895,   534,   967,   894,
+    1003,   959,   204,   897,   205,   218,   896,   219,   958,  1004,
+     512,   961,   960,   518,   937,   936,   526,   779,   538,   935,
+    1018,   952,   641,   768,   206,   558,   975,   220,  1005,  1022,
+    1006,   955,  1042,  1053,     0,  1009,  1023,  1025,     0,  1051,
+       0,  1052,     0,     0,   560,     0,     0,     0,     0,     0,
+       0,     0,     0,  1054,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   931,
-       0,     0,     0,   932,     0,   957,     0,     0,     0,     0,
-       0,   947,     0,     0,     0,   933,     0,   960,   934,     0,
-       0,     0,   999,   948,     0,     0,     0,   936,     0,   961,
-       0,     0,     0,   958,  1001,   935,     0,     0,     0,   940,
-       0,   941,     0,     0,     0,     0,  1002,     0,     0,     0,
-    1000,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   946,     0,     0,     0,     0,     0,   959
+     898,     0,     0,     0,   899,     0,   924,     0,     0,     0,
+       0,     0,   914,     0,     0,     0,   900,     0,   927,   901,
+       0,     0,     0,   966,   915,     0,     0,     0,   903,     0,
+     928,     0,     0,     0,   925,   968,   902,     0,     0,     0,
+     907,     0,   908,     0,     0,     0,     0,   969,     0,     0,
+       0,   967,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   913,     0,     0,     0,     0,     0,   926
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
-      74,    75,    76,    77,    78,    79,    80,    77,    82,    83,
-      84,    85,   615,   609,    76,    77,    78,    79,    80,    77,
-      82,    83,    77,    85,   597,   369,    76,    77,    78,    79,
-      80,   851,    82,    83,   851,    85,    82,    83,   851,    77,
-     851,    83,    77,    83,    78,    79,    78,    79,   851,   851,
-      17,     5,     7,     7,    10,     9,    11,     3,    13,    90,
-       6,    16,    17,    18,     0,    77,    78,    79,    80,    12,
-      97,    98,    19,    90,    91,    88,    93,    14,    15,    47,
-      48,   531,    95,     7,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,   543,   544,   545,     3,    65,    66,     6,
-       3,    48,     7,    50,    51,     8,     7,    54,    55,    56,
-      65,    66,    47,    97,    98,     3,    84,    85,    65,    66,
-       8,    76,    77,    78,    79,    80,     7,    82,    65,    66,
-      65,    66,    87,     7,     3,     3,    19,     7,   169,     8,
-       8,    96,   169,     3,    99,    28,     6,    82,    65,    66,
-       7,   106,     7,    88,    89,    90,    91,    92,    93,   114,
-     115,    19,     3,   118,     7,     6,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,     7,    65,    66,   145,     7,   142,   148,   149,   150,
-      48,    20,    21,    22,    23,   151,   152,   153,     7,   116,
-     117,   169,     3,  1023,     3,     3,  1023,     8,     6,     8,
-    1023,     7,  1023,   169,   169,   169,   170,   171,   172,     3,
-    1023,  1023,   169,    48,     8,     7,   169,   110,   111,   112,
-     113,     3,   169,    46,   169,   169,     8,    47,   133,   134,
-      65,    66,    48,    49,    50,    51,    52,    53,    58,     3,
-     594,   143,   169,     3,     8,    65,    66,     3,     8,    65,
-      66,   857,     8,     3,     6,     3,   839,     4,     8,    39,
-      40,    41,    42,    83,     3,     3,    86,    47,     8,     8,
-       8,   884,   136,   137,   138,   139,   169,    57,     3,    59,
-       4,    47,     4,   367,     4,    65,    66,    67,    68,    69,
-      70,    71,    72,     4,    60,    61,    62,    63,    64,    65,
-      66,   169,     4,    83,     4,     3,    86,    87,   172,   144,
-       8,   146,   147,     3,    94,   399,     4,    83,     8,   403,
-      86,   100,   101,   102,   103,   104,   105,     4,     3,   169,
-       4,   403,   416,     8,   169,   419,   416,    73,    74,    75,
-       3,     3,   426,   403,   416,     8,     8,   419,   416,   169,
-       3,   416,   436,   169,   426,     8,   416,     4,     3,   419,
-       3,     3,   446,     8,   436,     8,   426,   451,   416,     4,
-       4,   416,     8,     3,   446,   419,   436,   419,     8,   451,
-     357,   358,   426,     4,   426,     8,   446,     3,   472,   169,
-     446,   451,     8,     3,   416,   451,     4,   419,     8,   451,
-     472,   451,     4,   169,   426,     8,     3,    39,    40,    41,
-      42,     8,   472,    45,   436,    47,    48,    65,    66,     3,
-       3,     3,     3,     3,     8,     8,     8,     8,   107,   108,
-     109,     4,     4,    65,    66,     3,    68,    69,     8,    71,
-      72,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,    83,     4,     4,    86,     4,     4,     4,     4,     4,
-     170,   170,    94,   170,   170,   170,     4,     4,     4,     4,
-       4,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,     4,     4,     4,     4,     4,
-       4,     4,   140,   141,     4,     4,     4,     4,   170,     4,
-       4,     4,   172,     4,   588,     4,     4,     4,   485,   486,
-     487,   595,   596,   597,     4,   170,   172,     4,     4,     4,
-       4,   169,     4,   595,     4,     4,   170,     4,     4,   170,
-     170,   615,   616,   617,     4,   595,     4,   169,     4,     4,
-       4,     4,     4,   615,   616,   617,   170,     4,     4,     4,
-     172,     4,   172,   172,     4,   615,   616,   617,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,     4,   172,     4,     4,   170,     4,   170,
-     170,     4,     4,   172,   172,   172,     4,   564,     4,     4,
-       4,     4,     4,     4,   169,   169,   172,     7,     7,     7,
-       7,     7,     7,     5,     5,     5,     5,    81,     5,     7,
-     587,     5,     5,     5,     3,     5,     7,     5,     5,   169,
-     608,     7,     7,     7,     7,     5,     5,     5,   169,   169,
-     169,     7,     5,   135,     5,     7,   169,   169,   169,   169,
-     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
-       7,     7,     7,     7,     7,     7,     7,   169,   169,     7,
-       7,     7,     4,   169,     4,     4,     4,     4,     4,   169,
-       4,     4,     4,   169,   169,     4,     6,     3,     6,     6,
-       3,     6,     3,     3,     6,   367,     3,     6,     6,     3,
-       6,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     169,     3,     6,     6,     3,   172,     6,     8,     4,     4,
-       4,     4,   170,     4,     4,     4,   170,     4,   170,   170,
-       4,   170,   170,   170,     4,   170,   172,   170,   170,   170,
-     170,   170,   170,   170,   170,     4,     6,     3,   172,     4,
-       8,     8,   169,     4,   169,   169,     8,     3,   169,   169,
-     169,     8,   836,     4,     4,   839,     4,     4,   842,     5,
-     504,   845,   842,     7,   848,   169,   169,   851,     4,     4,
-     842,   851,     4,   845,   842,   170,   848,   842,   862,   851,
-       4,   865,   842,   851,   868,   845,   851,   169,   848,   845,
-     862,   851,   848,   865,   842,   851,   848,   842,   848,   169,
-     884,   169,   862,   851,   888,   865,   862,   851,   169,   851,
-     894,   169,   884,   897,   588,   667,   888,   595,   902,   169,
-     842,   399,   894,   172,   884,   897,   170,   170,   888,   851,
-     902,   841,   403,   836,   894,   860,   854,   897,   857,   870,
-     862,   454,   902,   865,   868,   877,   902,   844,   853,   842,
-     894,   416,   894,   897,  1023,   897,    81,   847,   845,   850,
-     446,   896,   848,   899,   894,   867,   451,   865,   897,   436,
-     631,   863,   894,   426,  1029,   897,   419,   884,   472,   888,
-     617,   589,   903,   478,  1046,  1063,  1080,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   475,    -1,    -1,    -1,
+      70,    71,    72,    73,    74,    75,    76,    73,    78,    79,
+      80,    81,   586,   580,    72,    73,    74,    75,    76,    73,
+      78,    79,    73,    81,   569,   819,    72,    73,    74,    75,
+      76,   819,    78,    79,   819,    81,    78,    79,   819,    73,
+     819,    79,    73,    79,    74,    75,    74,    75,   819,     0,
+      16,     5,    10,     7,     7,     9,    12,    13,    17,    45,
+      46,    47,    48,    49,    50,    73,    74,    75,    76,    11,
+      95,    96,    14,    15,    16,     7,    62,    63,    88,   134,
+     135,   136,   137,    86,    88,    89,    45,    91,    47,    48,
+      93,     7,    51,    52,    53,    37,    38,    39,    40,    41,
+      42,    43,    44,    62,    63,   507,    62,    63,    95,    96,
+       3,     3,    62,    63,   169,     8,     8,   519,   520,   521,
+      62,    63,    37,    38,    39,    40,     3,    42,     7,    44,
+      45,     8,    74,    75,    76,    77,    78,     7,    80,     3,
+       3,   166,    44,    85,     8,     8,     7,    62,    63,    17,
+      65,    66,    94,    68,    69,    97,   166,     7,    26,     7,
+      62,    63,   104,     3,   114,   115,    81,     3,     8,    84,
+     112,   113,     8,     7,   116,     7,     3,    92,    80,     7,
+     166,     8,   140,     7,    86,    87,    88,    89,    90,    91,
+       7,   149,   150,   151,    62,    63,   990,     3,     3,     3,
+       6,     3,   990,     8,     8,   990,     8,   166,   166,   990,
+     166,   990,   166,   167,   168,   169,   166,   166,   143,   990,
+      17,   146,   147,   148,   166,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+     108,   109,   110,   111,     3,     3,   131,   132,    45,     8,
+       8,   166,    44,    43,   141,     3,     3,     3,   825,     4,
+       8,     8,   807,     6,   166,    57,    58,    59,    60,    61,
+      62,    63,     8,     3,    37,    38,    39,    40,   852,     4,
+       4,    44,   352,    98,    99,   100,   101,   102,   103,    81,
+       4,    54,    84,    56,     3,    44,    45,     6,   166,    62,
+      63,    64,    65,    66,    67,    68,    69,    45,     4,     4,
+       4,   381,     3,    62,    63,   385,     3,     8,    81,     6,
+       3,    84,    85,     6,    62,    63,     4,   385,   398,    92,
+       3,   401,   398,    82,    83,     8,     3,     3,   408,   385,
+     398,     8,     8,   401,   398,     4,     3,   398,   418,     3,
+     408,     8,   398,     4,     8,   401,     3,     3,   428,     4,
+     418,     8,   408,   433,   398,     3,     8,   398,     6,   166,
+     428,   401,   418,   401,   166,   433,   342,   343,   408,     4,
+     408,     4,   428,    44,   454,     4,   428,   433,     8,     4,
+     398,   433,     4,   401,    55,   433,   454,   433,    62,    63,
+     408,    62,    63,   166,   142,     8,   144,   145,   454,     3,
+     418,     3,     3,     3,     8,     4,     8,   166,     8,     3,
+      81,     3,     8,    84,     8,     4,     8,     3,   166,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,    70,    71,    72,    73,    18,    19,    20,
+      21,     4,     4,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,     4,   105,   106,
+     107,     4,     4,     4,   138,   139,     4,   166,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   167,   167,     4,
+     167,   167,   562,   167,     4,     4,     4,   567,   464,   465,
+     466,     4,   166,     4,     4,   166,     4,     4,     4,   567,
+       4,     4,     4,     4,     4,   167,   586,   587,   588,     4,
+       4,   567,     4,     4,     4,   169,     4,     4,   586,   587,
+     588,     4,   167,   169,     4,     4,     4,     4,     4,     4,
+     586,   587,   588,   167,     4,   167,   167,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   167,     4,     4,     4,
+     169,     4,   169,   169,     4,     4,     4,   169,     4,   167,
+       4,   167,   167,     4,   540,     4,   169,     4,     4,     4,
+       4,   169,   169,     4,     4,     7,   166,   579,     7,     7,
+       7,     7,     5,     5,     5,   561,     5,     7,     5,     5,
+       5,     5,   166,     5,     7,     5,     5,   166,   166,     7,
+       7,     7,     7,     5,     5,     5,   166,   166,     7,   166,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   133,
+     166,   166,   166,     5,     7,    79,   166,   166,     7,   166,
+       7,     7,     7,     7,     7,     7,     7,     7,     7,   166,
+     166,     4,   166,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     3,   169,     6,     3,     6,     6,     3,     6,
+       3,     3,     6,   480,     3,     6,     6,     3,     6,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
+     166,     6,     3,     6,     4,     4,     8,     4,   169,     4,
+       4,     4,     4,   167,   167,   167,   167,     4,   167,   167,
+       4,     4,     3,     8,     6,     4,     4,     3,     8,   167,
+       4,     8,     4,     8,     4,     4,   167,   169,     5,     7,
+     167,     4,   167,     4,   167,   167,     4,   167,     4,   167,
+     810,   562,   352,   813,   810,   567,   816,   381,   809,   819,
+     828,   166,   810,   819,   385,   813,   810,   804,   816,   810,
+     830,   819,   822,   833,   810,   819,   836,   813,   819,   825,
+     816,   813,   830,   819,   816,   833,   810,   819,   816,   810,
+     816,   167,   852,   167,   830,   819,   856,   833,   830,   819,
+     166,   819,   862,   167,   852,   865,   166,   838,   856,   836,
+     870,   169,   810,   436,   862,   845,   852,   865,   166,   166,
+     856,   819,   870,   169,   166,   812,   862,   810,   990,   865,
+     398,   821,   830,    77,   870,   833,   815,   428,   870,   813,
+     166,   864,   862,   818,   862,   865,   816,   865,   862,   166,
+     401,   867,   865,   408,   835,   833,   418,   603,   433,   831,
+     996,   852,   563,   588,   862,   454,   871,   865,   166,  1013,
+     166,   856,  1030,  1047,    -1,   166,   166,   166,    -1,   167,
+      -1,   167,    -1,    -1,   457,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   166,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,
-      -1,    -1,    -1,  1023,    -1,  1029,    -1,    -1,    -1,    -1,
-      -1,  1023,    -1,    -1,    -1,  1023,    -1,  1029,  1023,    -1,
-      -1,    -1,  1046,  1023,    -1,    -1,    -1,  1023,    -1,  1029,
-      -1,    -1,    -1,  1029,  1046,  1023,    -1,    -1,    -1,  1023,
-      -1,  1023,    -1,    -1,    -1,    -1,  1046,    -1,    -1,    -1,
-    1046,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1023,    -1,    -1,    -1,    -1,    -1,  1029
+     990,    -1,    -1,    -1,   990,    -1,   996,    -1,    -1,    -1,
+      -1,    -1,   990,    -1,    -1,    -1,   990,    -1,   996,   990,
+      -1,    -1,    -1,  1013,   990,    -1,    -1,    -1,   990,    -1,
+     996,    -1,    -1,    -1,   996,  1013,   990,    -1,    -1,    -1,
+     990,    -1,   990,    -1,    -1,    -1,    -1,  1013,    -1,    -1,
+      -1,  1013,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   990,    -1,    -1,    -1,    -1,    -1,   996
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,     0,     5,     7,     9,   169,   170,   171,   172,
-     190,   191,   192,   197,     7,   206,     7,   212,     7,   225,
-       7,   319,     7,   396,     7,   412,     7,   429,     7,   348,
-       7,   354,     7,   378,     7,   295,     7,   488,     7,   536,
-       7,   528,   198,   193,   207,   213,   226,   320,   397,   413,
-     430,   349,   355,   379,   296,   489,   537,   529,   190,   199,
-     200,   169,   195,   196,    10,   142,   151,   152,   153,   169,
-     205,   208,   209,   210,   519,   521,   523,   534,     7,    11,
-      13,    16,    17,    18,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    65,    66,    76,    77,    78,    79,    80,
-      82,    87,    96,    99,   106,   114,   115,   118,   205,   214,
-     215,   216,   217,   218,   219,   220,   221,   223,   232,   234,
-     236,   269,   275,   281,   287,   289,   303,   313,   338,   346,
-     372,   402,   404,   423,   453,   465,   477,   478,   486,   525,
-      14,    15,   205,   227,   228,   229,   231,   402,   404,    57,
-      59,    67,    68,    69,    70,    71,    72,    83,    86,    94,
-     205,   216,   217,   218,   219,   321,   322,   323,   325,   327,
-     329,   331,   333,   336,   337,   372,   390,   402,   404,   406,
-     423,   448,    58,   205,   329,   331,   372,   398,   399,   400,
-     402,   404,    60,    61,    62,    63,    64,   205,   329,   331,
-     372,   402,   404,   414,   415,   416,   418,   419,   421,   422,
-      82,    88,    89,    90,    91,    92,    93,   205,   372,   402,
-     404,   431,   432,   433,   434,   436,   438,   440,   442,   444,
-     446,   346,    19,    48,    50,    51,    54,    55,    56,   205,
-     254,   356,   357,   358,   359,   360,   361,   362,   364,   366,
-     368,   369,   371,   402,   404,    49,    52,    53,   205,   254,
-     360,   366,   380,   381,   382,   383,   384,   386,   387,   388,
-     389,   402,   404,    97,    98,   205,   297,   298,   299,   301,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   140,   141,   205,   402,   404,   490,
-     491,   492,   493,   495,   497,   498,   500,   501,   502,   505,
-     507,   508,   509,   510,   513,   515,   517,   143,   538,   539,
-     540,    12,   205,   530,   531,   532,     6,     3,     4,     8,
-       3,   211,   535,   520,   522,   524,     4,     3,     8,   526,
-     527,   224,   233,   235,   237,     4,     4,     4,     4,     4,
-     222,   314,   347,   373,   403,   405,   339,   276,   288,   282,
-     270,   454,   424,   290,   304,   466,     4,   479,   487,     3,
-       8,   230,     4,     3,     8,   391,   407,   324,   326,   328,
-       4,     4,   334,   332,   330,   449,     3,     8,   401,     3,
-       8,   417,     4,   420,     4,     4,     3,     8,   447,   435,
-     437,   439,   441,   443,   445,     8,     3,     8,   363,   255,
-       4,   367,   365,   370,     4,     8,     3,   385,     4,     4,
-       8,     3,   300,   302,     3,     8,     4,   494,   496,     4,
-     499,     4,     4,   503,   506,     4,     4,     4,   511,   514,
-     516,   518,     3,     8,   541,     3,     8,   533,     3,     8,
-     190,   190,   169,     4,     4,     4,     4,     4,   209,   530,
-       4,     4,     4,     4,     4,   170,   170,   170,   170,   170,
+       0,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+       0,     5,     7,     9,   166,   167,   168,   169,   186,   187,
+     188,   193,     7,   202,     7,   208,     7,   219,     7,   313,
+       7,   390,     7,   406,     7,   423,     7,   342,     7,   348,
+       7,   372,     7,   289,     7,   482,     7,   521,   194,   189,
+     203,   209,   220,   314,   391,   407,   424,   343,   349,   373,
+     290,   483,   522,   186,   195,   196,   166,   191,   192,    10,
+     140,   149,   150,   151,   166,   201,   204,   205,   206,   513,
+     515,   517,   519,    11,    14,    15,    16,    37,    38,    39,
+      40,    41,    42,    43,    44,    62,    63,    74,    75,    76,
+      77,    78,    80,    85,    94,    97,   104,   112,   113,   116,
+     201,   210,   211,   212,   213,   214,   215,   216,   217,   226,
+     228,   230,   263,   269,   275,   281,   283,   297,   307,   332,
+     340,   366,   396,   398,   417,   447,   459,   471,   472,   480,
+      12,    13,   201,   221,   222,   223,   225,   396,   398,    54,
+      56,    64,    65,    66,    67,    68,    69,    81,    84,    92,
+     201,   212,   213,   214,   215,   315,   316,   317,   319,   321,
+     323,   325,   327,   330,   331,   366,   384,   396,   398,   400,
+     417,   442,    55,   201,   323,   325,   366,   392,   393,   394,
+     396,   398,    57,    58,    59,    60,    61,   201,   323,   325,
+     366,   396,   398,   408,   409,   410,   412,   413,   415,   416,
+      80,    86,    87,    88,    89,    90,    91,   201,   366,   396,
+     398,   425,   426,   427,   428,   430,   432,   434,   436,   438,
+     440,   340,    17,    45,    47,    48,    51,    52,    53,   201,
+     248,   350,   351,   352,   353,   354,   355,   356,   358,   360,
+     362,   363,   365,   396,   398,    46,    49,    50,   201,   248,
+     354,   360,   374,   375,   376,   377,   378,   380,   381,   382,
+     383,   396,   398,    95,    96,   201,   291,   292,   293,   295,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   138,   139,   201,   396,   398,   484,
+     485,   486,   487,   489,   491,   492,   494,   495,   496,   499,
+     501,   502,   503,   504,   507,   509,   511,   141,   523,   524,
+     525,     6,     3,     4,     8,     3,   207,   520,   514,   516,
+     518,     4,     3,     8,   218,   227,   229,   231,     4,     4,
+       4,     4,     4,   308,   341,   367,   397,   399,   333,   270,
+     282,   276,   264,   448,   418,   284,   298,   460,     4,   473,
+     481,     3,     8,   224,     4,     3,     8,   385,   401,   318,
+     320,   322,     4,     4,   328,   326,   324,   443,     3,     8,
+     395,     3,     8,   411,     4,   414,     4,     4,     3,     8,
+     441,   429,   431,   433,   435,   437,   439,     8,     3,     8,
+     357,   249,     4,   361,   359,   364,     4,     8,     3,   379,
+       4,     4,     8,     3,   294,   296,     3,     8,     4,   488,
+     490,     4,   493,     4,     4,   497,   500,     4,     4,     4,
+     505,   508,   510,   512,     3,     8,   526,     3,     8,   186,
+     186,   166,     4,     4,     4,     4,     4,   205,     4,     4,
+       4,     4,   167,   167,   167,   167,   167,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   170,     4,     4,   215,
-       4,   172,   228,     4,     4,     4,     4,     4,   170,   172,
-       4,     4,     4,     4,   322,     4,   399,     4,   170,     4,
-     170,   170,   415,     4,     4,     4,     4,     4,     4,     4,
-     433,     4,     4,   170,     4,     4,     4,   172,   358,     4,
-     172,   172,   382,     4,     4,   298,   172,     4,     4,   170,
-       4,   170,   170,     4,     4,   172,   172,   172,     4,     4,
-       4,     4,   491,     4,   539,     4,   531,     4,     7,     7,
-     190,   190,   190,     8,     7,     7,     7,     7,     5,   169,
-       5,     5,     5,   192,   194,   169,     5,     5,     5,     5,
-       7,     5,     5,     5,     7,     7,     7,     7,     5,   201,
-       5,     5,   169,   169,   169,    73,    74,    75,   335,   201,
-     169,     7,   169,   169,   169,   201,   201,   201,   169,   169,
-     169,   169,   169,   169,   169,   169,   169,   169,   169,   190,
-     169,   169,   169,   133,   134,   504,   135,   136,   137,   138,
-     139,   172,   512,   169,   169,   169,     5,     5,   190,   214,
-     538,   530,   227,    19,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,   205,
-     242,   243,   244,   247,   249,   251,   253,   254,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   266,   267,   242,
-       7,   238,   239,   240,     7,   315,   316,   317,     7,   350,
-     351,   352,     7,   374,   375,   376,     7,   340,   341,   342,
-      90,   169,   277,   278,   279,   280,   199,    91,    93,   279,
-     283,   284,   285,   286,    81,   271,   272,   273,     7,   455,
-     456,     7,   425,   426,   427,     7,   291,   292,   293,   100,
-     101,   102,   103,   104,   105,   305,   306,   307,   308,   309,
-     310,   311,   312,    19,   110,   111,   112,   113,   205,   256,
-     402,   404,   467,   468,   469,   472,   473,   475,   476,   116,
-     117,   205,   402,   404,   480,   481,   482,   484,   490,   202,
-       7,   392,   393,   394,     7,   408,   409,   410,    95,   434,
-     450,   451,     7,   542,   543,   238,     8,     8,     8,     8,
-     245,   248,   250,   252,     4,     4,     4,     4,     4,   265,
-       4,     4,   268,     4,     4,     4,     3,     8,     8,   241,
-       6,     3,   318,     6,     3,   353,     6,     3,   377,     6,
-       3,   343,     6,     3,     3,     6,     6,     3,     6,   274,
-       3,     8,   457,     3,     6,   428,     6,     3,   294,     6,
-       3,     4,     4,     4,     4,     4,     4,     3,     8,   470,
-     474,     4,     4,     4,     3,     8,   483,   485,     3,     8,
-       8,   169,   203,   204,   395,     6,     3,   411,     6,     3,
-     452,     8,   544,     3,     6,     6,     4,     4,     4,     4,
-     170,   172,   170,   172,   170,     4,   170,   170,     4,   170,
-     170,   172,   243,   242,   240,   321,   317,   356,   352,   380,
-     376,   205,   216,   217,   218,   219,   254,   313,   325,   327,
-     329,   331,   333,   337,   344,   345,   372,   402,   404,   448,
-     342,   278,   284,     4,   272,    84,    85,   205,   254,   372,
-     402,   404,   458,   459,   460,   461,   462,   464,   456,   431,
-     427,   297,   293,   170,   170,   170,   170,   170,   170,   306,
-       4,     4,   170,   170,   170,   468,     4,     4,   481,     6,
-       3,   398,   394,   414,   410,     4,   144,   146,   147,   205,
-     254,   402,   404,   545,   546,   547,   548,   550,   543,    20,
-      21,    22,    23,   246,   169,   169,   169,   169,   169,     8,
-       8,     8,     8,     3,     8,   169,   463,     4,     8,     3,
-       8,     8,   107,   108,   109,   471,   169,   169,   169,   169,
-       8,     8,   169,   551,     4,   549,     3,     8,   345,     4,
-     172,   460,     4,   170,     4,   546,   169,     5,   169,     7,
-     552,   553,   554,     3,     6,   145,   148,   149,   150,   555,
-     556,   557,   559,   560,   561,   553,   558,     4,     4,     4,
-       3,     8,     4,   172,   170,   170,   556,   169
+       4,     4,   167,     4,     4,   211,     4,   169,   222,     4,
+       4,     4,     4,     4,   167,   169,     4,     4,     4,     4,
+     316,     4,   393,     4,   167,     4,   167,   167,   409,     4,
+       4,     4,     4,     4,     4,     4,   427,     4,     4,   167,
+       4,     4,     4,   169,   352,     4,   169,   169,   376,     4,
+       4,   292,   169,     4,     4,   167,     4,   167,   167,     4,
+       4,   169,   169,   169,     4,     4,     4,     4,   485,     4,
+     524,     4,     7,     7,   186,   186,   186,     7,     7,     7,
+       5,     5,     5,     5,   188,   190,   166,     5,     5,     5,
+       5,     7,     5,     5,     5,     7,     7,     7,     7,     5,
+     197,     5,     5,   166,   166,   166,    70,    71,    72,    73,
+     329,   197,   166,     7,   166,   166,   166,   197,   197,   197,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
+     166,   186,   166,   166,   166,   131,   132,   498,   133,   134,
+     135,   136,   137,   169,   506,   166,   166,   166,     5,   186,
+     210,   523,   221,    17,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,   201,
+     236,   237,   238,   241,   243,   245,   247,   248,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   260,   261,   236,
+       7,   232,   233,   234,     7,   309,   310,   311,     7,   344,
+     345,   346,     7,   368,   369,   370,     7,   334,   335,   336,
+      88,   166,   271,   272,   273,   274,   195,    89,    91,   273,
+     277,   278,   279,   280,    79,   265,   266,   267,     7,   449,
+     450,     7,   419,   420,   421,     7,   285,   286,   287,    98,
+      99,   100,   101,   102,   103,   299,   300,   301,   302,   303,
+     304,   305,   306,    17,   108,   109,   110,   111,   201,   250,
+     396,   398,   461,   462,   463,   466,   467,   469,   470,   114,
+     115,   201,   396,   398,   474,   475,   476,   478,   484,   198,
+       7,   386,   387,   388,     7,   402,   403,   404,    93,   428,
+     444,   445,     7,   527,   528,     8,     8,     8,   239,   242,
+     244,   246,     4,     4,     4,     4,     4,   259,     4,     4,
+     262,     4,     4,     4,     3,     8,     8,   235,     6,     3,
+     312,     6,     3,   347,     6,     3,   371,     6,     3,   337,
+       6,     3,     3,     6,     6,     3,     6,   268,     3,     8,
+     451,     3,     6,   422,     6,     3,   288,     6,     3,     4,
+       4,     4,     4,     4,     4,     3,     8,   464,   468,     4,
+       4,     4,     3,     8,   477,   479,     3,     8,     8,   166,
+     199,   200,   389,     6,     3,   405,     6,     3,   446,     8,
+     529,     3,     6,     4,     4,     4,     4,   167,   169,   167,
+     169,   167,     4,   167,   167,     4,   167,   167,   169,   237,
+     236,   234,   315,   311,   350,   346,   374,   370,   201,   212,
+     213,   214,   215,   248,   307,   319,   321,   323,   325,   327,
+     331,   338,   339,   366,   396,   398,   442,   336,   272,   278,
+       4,   266,    82,    83,   201,   248,   366,   396,   398,   452,
+     453,   454,   455,   456,   458,   450,   425,   421,   291,   287,
+     167,   167,   167,   167,   167,   167,   300,     4,     4,   167,
+     167,   167,   462,     4,     4,   475,     6,     3,   392,   388,
+     408,   404,     4,   142,   144,   145,   201,   248,   396,   398,
+     530,   531,   532,   533,   535,   528,    18,    19,    20,    21,
+     240,   166,   166,   166,   166,   166,     8,     8,     8,     8,
+       3,     8,   166,   457,     4,     8,     3,     8,     8,   105,
+     106,   107,   465,   166,   166,   166,   166,     8,     8,   166,
+     536,     4,   534,     3,     8,   339,     4,   169,   454,     4,
+     167,     4,   531,   166,     5,   166,     7,   537,   538,   539,
+       3,     6,   143,   146,   147,   148,   540,   541,   542,   544,
+     545,   546,   538,   543,     4,     4,     4,     3,     8,     4,
+     169,   167,   167,   541,   166
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   173,   175,   174,   176,   174,   177,   174,   178,   174,
-     179,   174,   180,   174,   181,   174,   182,   174,   183,   174,
-     184,   174,   185,   174,   186,   174,   187,   174,   188,   174,
-     189,   174,   190,   190,   190,   190,   190,   190,   190,   191,
-     193,   192,   194,   195,   195,   196,   196,   198,   197,   199,
-     199,   200,   200,   202,   201,   203,   203,   204,   204,   205,
-     207,   206,   208,   208,   209,   209,   209,   209,   209,   209,
-     211,   210,   213,   212,   214,   214,   215,   215,   215,   215,
-     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
-     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
-     215,   215,   215,   215,   215,   215,   216,   217,   218,   219,
-     220,   222,   221,   224,   223,   226,   225,   227,   227,   228,
-     228,   228,   228,   228,   230,   229,   231,   233,   232,   235,
-     234,   237,   236,   238,   238,   239,   239,   241,   240,   242,
-     242,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-     243,   243,   243,   243,   243,   243,   243,   243,   243,   245,
-     244,   246,   246,   246,   246,   248,   247,   250,   249,   252,
-     251,   253,   255,   254,   256,   257,   258,   259,   260,   261,
-     262,   263,   265,   264,   266,   268,   267,   270,   269,   271,
-     271,   272,   274,   273,   276,   275,   277,   277,   278,   278,
-     279,   280,   282,   281,   283,   283,   284,   284,   284,   285,
-     286,   288,   287,   290,   289,   291,   291,   292,   292,   294,
-     293,   296,   295,   297,   297,   297,   298,   298,   300,   299,
-     302,   301,   304,   303,   305,   305,   306,   306,   306,   306,
-     306,   306,   307,   308,   309,   310,   311,   312,   314,   313,
-     315,   315,   316,   316,   318,   317,   320,   319,   321,   321,
-     322,   322,   322,   322,   322,   322,   322,   322,   322,   322,
-     322,   322,   322,   322,   322,   322,   322,   322,   322,   322,
-     324,   323,   326,   325,   328,   327,   330,   329,   332,   331,
-     334,   333,   335,   335,   335,   336,   337,   339,   338,   340,
-     340,   341,   341,   343,   342,   344,   344,   345,   345,   345,
-     345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-     345,   345,   345,   345,   347,   346,   349,   348,   350,   350,
-     351,   351,   353,   352,   355,   354,   356,   356,   357,   357,
-     358,   358,   358,   358,   358,   358,   358,   358,   358,   358,
-     359,   360,   361,   363,   362,   365,   364,   367,   366,   368,
-     370,   369,   371,   373,   372,   374,   374,   375,   375,   377,
-     376,   379,   378,   380,   380,   381,   381,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   383,   385,   384,   386,
-     387,   388,   389,   391,   390,   392,   392,   393,   393,   395,
-     394,   397,   396,   398,   398,   399,   399,   399,   399,   399,
-     399,   399,   401,   400,   403,   402,   405,   404,   407,   406,
-     408,   408,   409,   409,   411,   410,   413,   412,   414,   414,
-     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
-     415,   417,   416,   418,   420,   419,   421,   422,   424,   423,
-     425,   425,   426,   426,   428,   427,   430,   429,   431,   431,
-     432,   432,   433,   433,   433,   433,   433,   433,   433,   433,
-     433,   433,   433,   435,   434,   437,   436,   439,   438,   441,
-     440,   443,   442,   445,   444,   447,   446,   449,   448,   450,
-     450,   452,   451,   454,   453,   455,   455,   457,   456,   458,
-     458,   459,   459,   460,   460,   460,   460,   460,   460,   460,
-     461,   463,   462,   464,   466,   465,   467,   467,   468,   468,
-     468,   468,   468,   468,   468,   468,   468,   470,   469,   471,
-     471,   471,   472,   474,   473,   475,   476,   477,   479,   478,
-     480,   480,   481,   481,   481,   481,   481,   483,   482,   485,
-     484,   487,   486,   489,   488,   490,   490,   491,   491,   491,
-     491,   491,   491,   491,   491,   491,   491,   491,   491,   491,
-     491,   491,   491,   491,   491,   491,   492,   494,   493,   496,
-     495,   497,   499,   498,   500,   501,   503,   502,   504,   504,
-     506,   505,   507,   508,   509,   511,   510,   512,   512,   512,
-     512,   512,   514,   513,   516,   515,   518,   517,   520,   519,
-     522,   521,   524,   523,   526,   525,   527,   525,   529,   528,
-     530,   530,   531,   531,   533,   532,   535,   534,   537,   536,
-     538,   538,   539,   541,   540,   542,   542,   544,   543,   545,
-     545,   546,   546,   546,   546,   546,   546,   546,   547,   549,
-     548,   551,   550,   552,   552,   554,   553,   555,   555,   556,
-     556,   556,   556,   558,   557,   559,   560,   561
+       0,   170,   172,   171,   173,   171,   174,   171,   175,   171,
+     176,   171,   177,   171,   178,   171,   179,   171,   180,   171,
+     181,   171,   182,   171,   183,   171,   184,   171,   185,   171,
+     186,   186,   186,   186,   186,   186,   186,   187,   189,   188,
+     190,   191,   191,   192,   192,   194,   193,   195,   195,   196,
+     196,   198,   197,   199,   199,   200,   200,   201,   203,   202,
+     204,   204,   205,   205,   205,   205,   205,   205,   207,   206,
+     209,   208,   210,   210,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
+     211,   211,   212,   213,   214,   215,   216,   218,   217,   220,
+     219,   221,   221,   222,   222,   222,   222,   222,   224,   223,
+     225,   227,   226,   229,   228,   231,   230,   232,   232,   233,
+     233,   235,   234,   236,   236,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   237,   239,   238,   240,   240,   240,   240,   242,
+     241,   244,   243,   246,   245,   247,   249,   248,   250,   251,
+     252,   253,   254,   255,   256,   257,   259,   258,   260,   262,
+     261,   264,   263,   265,   265,   266,   268,   267,   270,   269,
+     271,   271,   272,   272,   273,   274,   276,   275,   277,   277,
+     278,   278,   278,   279,   280,   282,   281,   284,   283,   285,
+     285,   286,   286,   288,   287,   290,   289,   291,   291,   291,
+     292,   292,   294,   293,   296,   295,   298,   297,   299,   299,
+     300,   300,   300,   300,   300,   300,   301,   302,   303,   304,
+     305,   306,   308,   307,   309,   309,   310,   310,   312,   311,
+     314,   313,   315,   315,   316,   316,   316,   316,   316,   316,
+     316,   316,   316,   316,   316,   316,   316,   316,   316,   316,
+     316,   316,   316,   316,   318,   317,   320,   319,   322,   321,
+     324,   323,   326,   325,   328,   327,   329,   329,   329,   329,
+     330,   331,   333,   332,   334,   334,   335,   335,   337,   336,
+     338,   338,   339,   339,   339,   339,   339,   339,   339,   339,
+     339,   339,   339,   339,   339,   339,   339,   339,   339,   341,
+     340,   343,   342,   344,   344,   345,   345,   347,   346,   349,
+     348,   350,   350,   351,   351,   352,   352,   352,   352,   352,
+     352,   352,   352,   352,   352,   353,   354,   355,   357,   356,
+     359,   358,   361,   360,   362,   364,   363,   365,   367,   366,
+     368,   368,   369,   369,   371,   370,   373,   372,   374,   374,
+     375,   375,   376,   376,   376,   376,   376,   376,   376,   376,
+     376,   377,   379,   378,   380,   381,   382,   383,   385,   384,
+     386,   386,   387,   387,   389,   388,   391,   390,   392,   392,
+     393,   393,   393,   393,   393,   393,   393,   395,   394,   397,
+     396,   399,   398,   401,   400,   402,   402,   403,   403,   405,
+     404,   407,   406,   408,   408,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   409,   409,   411,   410,   412,   414,
+     413,   415,   416,   418,   417,   419,   419,   420,   420,   422,
+     421,   424,   423,   425,   425,   426,   426,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   429,   428,
+     431,   430,   433,   432,   435,   434,   437,   436,   439,   438,
+     441,   440,   443,   442,   444,   444,   446,   445,   448,   447,
+     449,   449,   451,   450,   452,   452,   453,   453,   454,   454,
+     454,   454,   454,   454,   454,   455,   457,   456,   458,   460,
+     459,   461,   461,   462,   462,   462,   462,   462,   462,   462,
+     462,   462,   464,   463,   465,   465,   465,   466,   468,   467,
+     469,   470,   471,   473,   472,   474,   474,   475,   475,   475,
+     475,   475,   477,   476,   479,   478,   481,   480,   483,   482,
+     484,   484,   485,   485,   485,   485,   485,   485,   485,   485,
+     485,   485,   485,   485,   485,   485,   485,   485,   485,   485,
+     485,   486,   488,   487,   490,   489,   491,   493,   492,   494,
+     495,   497,   496,   498,   498,   500,   499,   501,   502,   503,
+     505,   504,   506,   506,   506,   506,   506,   508,   507,   510,
+     509,   512,   511,   514,   513,   516,   515,   518,   517,   520,
+     519,   522,   521,   523,   523,   524,   526,   525,   527,   527,
+     529,   528,   530,   530,   531,   531,   531,   531,   531,   531,
+     531,   532,   534,   533,   536,   535,   537,   537,   539,   538,
+     540,   540,   541,   541,   541,   541,   543,   542,   544,   545,
+     546
   };
 
   const unsigned char
@@ -4653,70 +4539,69 @@ namespace isc { namespace dhcp {
        0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
        0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
        0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
-       0,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     1,     0,     1,     3,     5,     0,     4,     0,
-       1,     1,     3,     0,     4,     0,     1,     1,     3,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       1,     0,     1,     3,     5,     0,     4,     0,     1,     1,
+       3,     0,     4,     0,     1,     1,     3,     2,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     1,     0,     6,
        0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
-       0,     6,     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,     3,     3,     3,     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,     0,     4,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     4,     3,     0,     4,     3,     3,
+       3,     3,     3,     3,     3,     3,     0,     4,     3,     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,     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,     0,     4,     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,
+       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,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     1,     1,     1,     1,
+       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     3,     0,     4,     3,     3,     3,     3,     3,     3,
-       3,     3,     0,     4,     3,     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,     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,
+       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,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     1,     1,     1,     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,     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,
+       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,     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,     1,     1,     1,     1,     1,     0,     4,     3,     0,
+       4,     3,     3,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     6,     1,     1,     0,     4,     0,     6,
+       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     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,     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,     0,     4,     0,     4,     0,     6,     1,
-       1,     0,     4,     0,     6,     1,     3,     0,     4,     0,
-       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     3,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
-       1,     1,     3,     0,     4,     3,     3,     3,     0,     6,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     6,     0,     4,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
-       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
-       0,     4,     3,     3,     3,     0,     4,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
-       1,     3,     1,     1,     0,     6,     0,     6,     0,     4,
-       1,     3,     1,     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,     0,     4,     3,     3,     3
+       1,     3,     0,     4,     0,     4,     3,     0,     4,     3,
+       3,     0,     4,     1,     1,     0,     4,     3,     3,     3,
+       0,     4,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       6,     0,     4,     1,     3,     1,     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,     0,     4,     3,     3,
+       3
   };
 
 
@@ -4727,219 +4612,216 @@ namespace isc { namespace dhcp {
   const Dhcp6Parser::yytname_[] =
   {
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
-  "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"config-control\"",
-  "\"config-databases\"", "\"interfaces-config\"", "\"interfaces\"",
-  "\"re-detect\"", "\"lease-database\"", "\"hosts-database\"",
-  "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"",
-  "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"",
-  "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"",
-  "\"connect-timeout\"", "\"contact-points\"", "\"max-reconnect-tries\"",
+  "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
+  "\"interfaces-config\"", "\"interfaces\"", "\"re-detect\"",
+  "\"lease-database\"", "\"hosts-database\"", "\"hosts-databases\"",
+  "\"type\"", "\"memfile\"", "\"mysql\"", "\"postgresql\"", "\"cql\"",
+  "\"user\"", "\"password\"", "\"host\"", "\"port\"", "\"persist\"",
+  "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
+  "\"contact-points\"", "\"max-reconnect-tries\"",
   "\"reconnect-wait-time\"", "\"keyspace\"", "\"request-timeout\"",
   "\"tcp-keepalive\"", "\"tcp-nodelay\"", "\"preferred-lifetime\"",
   "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
-  "\"decline-probation-period\"", "\"server-tag\"", "\"subnet6\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"decline-probation-period\"", "\"subnet6\"", "\"option-def\"",
+  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
+  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
   "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"",
   "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"",
   "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"",
   "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
   "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
-  "\"out-of-pool\"", "\"all\"", "\"shared-networks\"", "\"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\"", "\"control-socket\"",
-  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"",
-  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
-  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
-  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
-  "\"always-include-fqdn\"", "\"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\"", "\"Logging\"",
-  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp4\"",
-  "\"DhcpDdns\"", "\"Control-agent\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6",
-  "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6",
-  "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
+  "\"out-of-pool\"", "\"global\"", "\"all\"", "\"shared-networks\"",
+  "\"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\"", "\"control-socket\"", "\"socket-type\"",
+  "\"socket-name\"", "\"dhcp-ddns\"", "\"enable-updates\"",
+  "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"",
+  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
+  "\"ncr-protocol\"", "\"ncr-format\"", "\"always-include-fqdn\"",
+  "\"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\"", "\"Logging\"", "\"loggers\"",
+  "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
+  "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp4\"", "\"DhcpDdns\"",
+  "\"Control-agent\"", "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_LOGGING",
-  "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", "$@15", "value", "sub_json", "map2", "$@16", "map_value",
-  "map_content", "not_empty_map", "list_generic", "$@17", "list_content",
-  "not_empty_list", "list_strings", "$@18", "list_strings_content",
-  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@19",
-  "global_objects", "global_object", "dhcp6_object", "$@20", "sub_dhcp6",
-  "$@21", "global_params", "global_param", "preferred_lifetime",
+  "\"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_objects", "global_object", "dhcp6_object", "$@19", "sub_dhcp6",
+  "$@20", "global_params", "global_param", "preferred_lifetime",
   "valid_lifetime", "renew_timer", "rebind_timer",
-  "decline_probation_period", "server_tag", "$@22", "interfaces_config",
-  "$@23", "sub_interfaces6", "$@24", "interfaces_config_params",
-  "interfaces_config_param", "interfaces_list", "$@25", "re_detect",
-  "lease_database", "$@26", "hosts_database", "$@27", "hosts_databases",
-  "$@28", "database_list", "not_empty_database_list", "database", "$@29",
-  "database_map_params", "database_map_param", "database_type", "$@30",
-  "db_type", "user", "$@31", "password", "$@32", "host", "$@33", "port",
-  "name", "$@34", "persist", "lfc_interval", "readonly", "connect_timeout",
+  "decline_probation_period", "interfaces_config", "$@21",
+  "sub_interfaces6", "$@22", "interfaces_config_params",
+  "interfaces_config_param", "interfaces_list", "$@23", "re_detect",
+  "lease_database", "$@24", "hosts_database", "$@25", "hosts_databases",
+  "$@26", "database_list", "not_empty_database_list", "database", "$@27",
+  "database_map_params", "database_map_param", "database_type", "$@28",
+  "db_type", "user", "$@29", "password", "$@30", "host", "$@31", "port",
+  "name", "$@32", "persist", "lfc_interval", "readonly", "connect_timeout",
   "reconnect_wait_time", "request_timeout", "tcp_keepalive", "tcp_nodelay",
-  "contact_points", "$@35", "max_reconnect_tries", "keyspace", "$@36",
-  "sanity_checks", "$@37", "sanity_checks_params", "sanity_checks_param",
-  "lease_checks", "$@38", "mac_sources", "$@39", "mac_sources_list",
+  "contact_points", "$@33", "max_reconnect_tries", "keyspace", "$@34",
+  "sanity_checks", "$@35", "sanity_checks_params", "sanity_checks_param",
+  "lease_checks", "$@36", "mac_sources", "$@37", "mac_sources_list",
   "mac_sources_value", "duid_id", "string_id",
-  "host_reservation_identifiers", "$@40",
+  "host_reservation_identifiers", "$@38",
   "host_reservation_identifiers_list", "host_reservation_identifier",
-  "hw_address_id", "flex_id", "relay_supplied_options", "$@41",
-  "hooks_libraries", "$@42", "hooks_libraries_list",
-  "not_empty_hooks_libraries_list", "hooks_library", "$@43",
-  "sub_hooks_library", "$@44", "hooks_params", "hooks_param", "library",
-  "$@45", "parameters", "$@46", "expired_leases_processing", "$@47",
+  "hw_address_id", "flex_id", "relay_supplied_options", "$@39",
+  "hooks_libraries", "$@40", "hooks_libraries_list",
+  "not_empty_hooks_libraries_list", "hooks_library", "$@41",
+  "sub_hooks_library", "$@42", "hooks_params", "hooks_param", "library",
+  "$@43", "parameters", "$@44", "expired_leases_processing", "$@45",
   "expired_leases_params", "expired_leases_param",
   "reclaim_timer_wait_time", "flush_reclaimed_timer_wait_time",
   "hold_reclaimed_time", "max_reclaim_leases", "max_reclaim_time",
-  "unwarned_reclaim_cycles", "subnet6_list", "$@48",
-  "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@49",
-  "sub_subnet6", "$@50", "subnet6_params", "subnet6_param", "subnet",
-  "$@51", "interface", "$@52", "interface_id", "$@53", "client_class",
-  "$@54", "require_client_classes", "$@55", "reservation_mode", "$@56",
-  "hr_mode", "id", "rapid_commit", "shared_networks", "$@57",
+  "unwarned_reclaim_cycles", "subnet6_list", "$@46",
+  "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@47",
+  "sub_subnet6", "$@48", "subnet6_params", "subnet6_param", "subnet",
+  "$@49", "interface", "$@50", "interface_id", "$@51", "client_class",
+  "$@52", "require_client_classes", "$@53", "reservation_mode", "$@54",
+  "hr_mode", "id", "rapid_commit", "shared_networks", "$@55",
   "shared_networks_content", "shared_networks_list", "shared_network",
-  "$@58", "shared_network_params", "shared_network_param",
-  "option_def_list", "$@59", "sub_option_def_list", "$@60",
+  "$@56", "shared_network_params", "shared_network_param",
+  "option_def_list", "$@57", "sub_option_def_list", "$@58",
   "option_def_list_content", "not_empty_option_def_list",
-  "option_def_entry", "$@61", "sub_option_def", "$@62",
+  "option_def_entry", "$@59", "sub_option_def", "$@60",
   "option_def_params", "not_empty_option_def_params", "option_def_param",
-  "option_def_name", "code", "option_def_code", "option_def_type", "$@63",
-  "option_def_record_types", "$@64", "space", "$@65", "option_def_space",
-  "option_def_encapsulate", "$@66", "option_def_array", "option_data_list",
-  "$@67", "option_data_list_content", "not_empty_option_data_list",
-  "option_data_entry", "$@68", "sub_option_data", "$@69",
+  "option_def_name", "code", "option_def_code", "option_def_type", "$@61",
+  "option_def_record_types", "$@62", "space", "$@63", "option_def_space",
+  "option_def_encapsulate", "$@64", "option_def_array", "option_data_list",
+  "$@65", "option_data_list_content", "not_empty_option_data_list",
+  "option_data_entry", "$@66", "sub_option_data", "$@67",
   "option_data_params", "not_empty_option_data_params",
-  "option_data_param", "option_data_name", "option_data_data", "$@70",
+  "option_data_param", "option_data_name", "option_data_data", "$@68",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "option_data_always_send", "pools_list", "$@71", "pools_list_content",
-  "not_empty_pools_list", "pool_list_entry", "$@72", "sub_pool6", "$@73",
-  "pool_params", "pool_param", "pool_entry", "$@74", "user_context",
-  "$@75", "comment", "$@76", "pd_pools_list", "$@77",
+  "option_data_always_send", "pools_list", "$@69", "pools_list_content",
+  "not_empty_pools_list", "pool_list_entry", "$@70", "sub_pool6", "$@71",
+  "pool_params", "pool_param", "pool_entry", "$@72", "user_context",
+  "$@73", "comment", "$@74", "pd_pools_list", "$@75",
   "pd_pools_list_content", "not_empty_pd_pools_list", "pd_pool_entry",
-  "$@78", "sub_pd_pool", "$@79", "pd_pool_params", "pd_pool_param",
-  "pd_prefix", "$@80", "pd_prefix_len", "excluded_prefix", "$@81",
-  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@82",
+  "$@76", "sub_pd_pool", "$@77", "pd_pool_params", "pd_pool_param",
+  "pd_prefix", "$@78", "pd_prefix_len", "excluded_prefix", "$@79",
+  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@80",
   "reservations_list", "not_empty_reservations_list", "reservation",
-  "$@83", "sub_reservation", "$@84", "reservation_params",
+  "$@81", "sub_reservation", "$@82", "reservation_params",
   "not_empty_reservation_params", "reservation_param", "ip_addresses",
-  "$@85", "prefixes", "$@86", "duid", "$@87", "hw_address", "$@88",
-  "hostname", "$@89", "flex_id_value", "$@90",
-  "reservation_client_classes", "$@91", "relay", "$@92", "relay_map",
-  "ip_address", "$@93", "client_classes", "$@94", "client_classes_list",
-  "client_class_entry", "$@95", "client_class_params",
+  "$@83", "prefixes", "$@84", "duid", "$@85", "hw_address", "$@86",
+  "hostname", "$@87", "flex_id_value", "$@88",
+  "reservation_client_classes", "$@89", "relay", "$@90", "relay_map",
+  "ip_address", "$@91", "client_classes", "$@92", "client_classes_list",
+  "client_class_entry", "$@93", "client_class_params",
   "not_empty_client_class_params", "client_class_param",
-  "client_class_name", "client_class_test", "$@96", "only_if_required",
-  "server_id", "$@97", "server_id_params", "server_id_param",
-  "server_id_type", "$@98", "duid_type", "htype", "identifier", "$@99",
-  "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@100",
-  "control_socket_params", "control_socket_param", "socket_type", "$@101",
-  "socket_name", "$@102", "dhcp_ddns", "$@103", "sub_dhcp_ddns", "$@104",
+  "client_class_name", "client_class_test", "$@94", "only_if_required",
+  "server_id", "$@95", "server_id_params", "server_id_param",
+  "server_id_type", "$@96", "duid_type", "htype", "identifier", "$@97",
+  "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@98",
+  "control_socket_params", "control_socket_param", "socket_type", "$@99",
+  "socket_name", "$@100", "dhcp_ddns", "$@101", "sub_dhcp_ddns", "$@102",
   "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates",
-  "qualifying_suffix", "$@105", "server_ip", "$@106", "server_port",
-  "sender_ip", "$@107", "sender_port", "max_queue_size", "ncr_protocol",
-  "$@108", "ncr_protocol_value", "ncr_format", "$@109",
+  "qualifying_suffix", "$@103", "server_ip", "$@104", "server_port",
+  "sender_ip", "$@105", "sender_port", "max_queue_size", "ncr_protocol",
+  "$@106", "ncr_protocol_value", "ncr_format", "$@107",
   "always_include_fqdn", "override_no_update", "override_client_update",
-  "replace_client_name", "$@110", "replace_client_name_value",
-  "generated_prefix", "$@111", "hostname_char_set", "$@112",
-  "hostname_char_replacement", "$@113", "dhcp4_json_object", "$@114",
-  "dhcpddns_json_object", "$@115", "control_agent_json_object", "$@116",
-  "config_control", "$@117", "$@118", "sub_config_control", "$@119",
-  "config_control_params", "config_control_param", "config_databases",
-  "$@120", "logging_object", "$@121", "sub_logging", "$@122",
-  "logging_params", "logging_param", "loggers", "$@123", "loggers_entries",
-  "logger_entry", "$@124", "logger_params", "logger_param", "debuglevel",
-  "severity", "$@125", "output_options_list", "$@126",
-  "output_options_list_content", "output_entry", "$@127",
-  "output_params_list", "output_params", "output", "$@128", "flush",
-  "maxsize", "maxver", YY_NULLPTR
+  "replace_client_name", "$@108", "replace_client_name_value",
+  "generated_prefix", "$@109", "hostname_char_set", "$@110",
+  "hostname_char_replacement", "$@111", "dhcp4_json_object", "$@112",
+  "dhcpddns_json_object", "$@113", "control_agent_json_object", "$@114",
+  "logging_object", "$@115", "sub_logging", "$@116", "logging_params",
+  "logging_param", "loggers", "$@117", "loggers_entries", "logger_entry",
+  "$@118", "logger_params", "logger_param", "debuglevel", "severity",
+  "$@119", "output_options_list", "$@120", "output_options_list_content",
+  "output_entry", "$@121", "output_params_list", "output_params", "output",
+  "$@122", "flush", "maxsize", "maxver", YY_NULLPTR
   };
 
 #if PARSER6_DEBUG
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   255,   255,   255,   256,   256,   257,   257,   258,   258,
-     259,   259,   260,   260,   261,   261,   262,   262,   263,   263,
-     264,   264,   265,   265,   266,   266,   267,   267,   268,   268,
-     269,   269,   277,   278,   279,   280,   281,   282,   283,   286,
-     291,   291,   302,   305,   306,   309,   313,   320,   320,   327,
-     328,   331,   335,   342,   342,   349,   350,   353,   357,   368,
-     378,   378,   393,   394,   398,   399,   400,   401,   402,   403,
-     406,   406,   421,   421,   430,   431,   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,   468,   473,   478,   483,
-     488,   493,   493,   501,   501,   512,   512,   521,   522,   525,
-     526,   527,   528,   529,   532,   532,   542,   548,   548,   560,
-     560,   572,   572,   582,   583,   586,   587,   590,   590,   600,
-     601,   604,   605,   606,   607,   608,   609,   610,   611,   612,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   624,
-     624,   631,   632,   633,   634,   637,   637,   645,   645,   653,
-     653,   661,   666,   666,   674,   679,   684,   689,   694,   699,
-     704,   709,   714,   714,   722,   727,   727,   735,   735,   745,
-     746,   748,   750,   750,   768,   768,   778,   779,   782,   783,
-     786,   791,   796,   796,   806,   807,   810,   811,   812,   815,
-     820,   827,   827,   837,   837,   847,   848,   851,   852,   855,
-     855,   865,   865,   875,   876,   877,   880,   881,   884,   884,
-     892,   892,   900,   900,   911,   912,   915,   916,   917,   918,
-     919,   920,   923,   928,   933,   938,   943,   948,   956,   956,
-     969,   970,   973,   974,   981,   981,  1007,  1007,  1018,  1019,
-    1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
-    1033,  1034,  1035,  1036,  1037,  1038,  1039,  1040,  1041,  1042,
-    1045,  1045,  1053,  1053,  1061,  1061,  1069,  1069,  1077,  1077,
-    1087,  1087,  1094,  1095,  1096,  1099,  1104,  1112,  1112,  1123,
-    1124,  1128,  1129,  1132,  1132,  1140,  1141,  1144,  1145,  1146,
-    1147,  1148,  1149,  1150,  1151,  1152,  1153,  1154,  1155,  1156,
-    1157,  1158,  1159,  1160,  1167,  1167,  1180,  1180,  1189,  1190,
-    1193,  1194,  1199,  1199,  1214,  1214,  1228,  1229,  1232,  1233,
-    1236,  1237,  1238,  1239,  1240,  1241,  1242,  1243,  1244,  1245,
-    1248,  1250,  1255,  1257,  1257,  1265,  1265,  1273,  1273,  1281,
-    1283,  1283,  1291,  1300,  1300,  1312,  1313,  1318,  1319,  1324,
-    1324,  1336,  1336,  1348,  1349,  1354,  1355,  1360,  1361,  1362,
-    1363,  1364,  1365,  1366,  1367,  1368,  1371,  1373,  1373,  1381,
-    1383,  1385,  1390,  1398,  1398,  1410,  1411,  1414,  1415,  1418,
-    1418,  1428,  1428,  1437,  1438,  1441,  1442,  1443,  1444,  1445,
-    1446,  1447,  1450,  1450,  1458,  1458,  1483,  1483,  1513,  1513,
-    1525,  1526,  1529,  1530,  1533,  1533,  1545,  1545,  1557,  1558,
-    1561,  1562,  1563,  1564,  1565,  1566,  1567,  1568,  1569,  1570,
-    1571,  1574,  1574,  1582,  1587,  1587,  1595,  1600,  1608,  1608,
-    1618,  1619,  1622,  1623,  1626,  1626,  1635,  1635,  1644,  1645,
-    1648,  1649,  1653,  1654,  1655,  1656,  1657,  1658,  1659,  1660,
-    1661,  1662,  1663,  1666,  1666,  1676,  1676,  1686,  1686,  1694,
-    1694,  1702,  1702,  1710,  1710,  1718,  1718,  1731,  1731,  1741,
-    1742,  1745,  1745,  1756,  1756,  1766,  1767,  1770,  1770,  1780,
-    1781,  1784,  1785,  1788,  1789,  1790,  1791,  1792,  1793,  1794,
-    1797,  1799,  1799,  1807,  1815,  1815,  1827,  1828,  1831,  1832,
-    1833,  1834,  1835,  1836,  1837,  1838,  1839,  1842,  1842,  1849,
-    1850,  1851,  1854,  1859,  1859,  1867,  1872,  1879,  1886,  1886,
-    1896,  1897,  1900,  1901,  1902,  1903,  1904,  1907,  1907,  1915,
-    1915,  1925,  1925,  1937,  1937,  1947,  1948,  1951,  1952,  1953,
-    1954,  1955,  1956,  1957,  1958,  1959,  1960,  1961,  1962,  1963,
-    1964,  1965,  1966,  1967,  1968,  1969,  1972,  1977,  1977,  1985,
-    1985,  1993,  1998,  1998,  2006,  2011,  2016,  2016,  2024,  2025,
-    2028,  2028,  2036,  2041,  2046,  2051,  2051,  2059,  2062,  2065,
-    2068,  2071,  2077,  2077,  2085,  2085,  2093,  2093,  2103,  2103,
-    2110,  2110,  2117,  2117,  2126,  2126,  2135,  2135,  2146,  2146,
-    2156,  2157,  2161,  2162,  2165,  2165,  2180,  2180,  2190,  2190,
-    2201,  2202,  2206,  2210,  2210,  2222,  2223,  2227,  2227,  2235,
-    2236,  2239,  2240,  2241,  2242,  2243,  2244,  2245,  2248,  2253,
-    2253,  2261,  2261,  2271,  2272,  2275,  2275,  2283,  2284,  2287,
-    2288,  2289,  2290,  2293,  2293,  2301,  2306,  2311
+       0,   252,   252,   252,   253,   253,   254,   254,   255,   255,
+     256,   256,   257,   257,   258,   258,   259,   259,   260,   260,
+     261,   261,   262,   262,   263,   263,   264,   264,   265,   265,
+     273,   274,   275,   276,   277,   278,   279,   282,   287,   287,
+     298,   301,   302,   305,   309,   316,   316,   323,   324,   327,
+     331,   338,   338,   345,   346,   349,   353,   364,   374,   374,
+     389,   390,   394,   395,   396,   397,   398,   399,   402,   402,
+     417,   417,   426,   427,   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,   462,   467,   472,   477,   482,   487,   487,   498,
+     498,   507,   508,   511,   512,   513,   514,   515,   518,   518,
+     528,   534,   534,   546,   546,   558,   558,   568,   569,   572,
+     573,   576,   576,   586,   587,   590,   591,   592,   593,   594,
+     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
+     605,   606,   607,   610,   610,   617,   618,   619,   620,   623,
+     623,   631,   631,   639,   639,   647,   652,   652,   660,   665,
+     670,   675,   680,   685,   690,   695,   700,   700,   708,   713,
+     713,   721,   721,   731,   732,   734,   736,   736,   754,   754,
+     764,   765,   768,   769,   772,   777,   782,   782,   792,   793,
+     796,   797,   798,   801,   806,   813,   813,   823,   823,   833,
+     834,   837,   838,   841,   841,   851,   851,   861,   862,   863,
+     866,   867,   870,   870,   878,   878,   886,   886,   897,   898,
+     901,   902,   903,   904,   905,   906,   909,   914,   919,   924,
+     929,   934,   942,   942,   955,   956,   959,   960,   967,   967,
+     993,   993,  1004,  1005,  1009,  1010,  1011,  1012,  1013,  1014,
+    1015,  1016,  1017,  1018,  1019,  1020,  1021,  1022,  1023,  1024,
+    1025,  1026,  1027,  1028,  1031,  1031,  1039,  1039,  1047,  1047,
+    1055,  1055,  1063,  1063,  1073,  1073,  1080,  1081,  1082,  1083,
+    1086,  1091,  1099,  1099,  1110,  1111,  1115,  1116,  1119,  1119,
+    1127,  1128,  1131,  1132,  1133,  1134,  1135,  1136,  1137,  1138,
+    1139,  1140,  1141,  1142,  1143,  1144,  1145,  1146,  1147,  1154,
+    1154,  1167,  1167,  1176,  1177,  1180,  1181,  1186,  1186,  1201,
+    1201,  1215,  1216,  1219,  1220,  1223,  1224,  1225,  1226,  1227,
+    1228,  1229,  1230,  1231,  1232,  1235,  1237,  1242,  1244,  1244,
+    1252,  1252,  1260,  1260,  1268,  1270,  1270,  1278,  1287,  1287,
+    1299,  1300,  1305,  1306,  1311,  1311,  1323,  1323,  1335,  1336,
+    1341,  1342,  1347,  1348,  1349,  1350,  1351,  1352,  1353,  1354,
+    1355,  1358,  1360,  1360,  1368,  1370,  1372,  1377,  1385,  1385,
+    1397,  1398,  1401,  1402,  1405,  1405,  1415,  1415,  1424,  1425,
+    1428,  1429,  1430,  1431,  1432,  1433,  1434,  1437,  1437,  1445,
+    1445,  1470,  1470,  1500,  1500,  1512,  1513,  1516,  1517,  1520,
+    1520,  1532,  1532,  1544,  1545,  1548,  1549,  1550,  1551,  1552,
+    1553,  1554,  1555,  1556,  1557,  1558,  1561,  1561,  1569,  1574,
+    1574,  1582,  1587,  1595,  1595,  1605,  1606,  1609,  1610,  1613,
+    1613,  1622,  1622,  1631,  1632,  1635,  1636,  1640,  1641,  1642,
+    1643,  1644,  1645,  1646,  1647,  1648,  1649,  1650,  1653,  1653,
+    1663,  1663,  1673,  1673,  1681,  1681,  1689,  1689,  1697,  1697,
+    1705,  1705,  1718,  1718,  1728,  1729,  1732,  1732,  1743,  1743,
+    1753,  1754,  1757,  1757,  1767,  1768,  1771,  1772,  1775,  1776,
+    1777,  1778,  1779,  1780,  1781,  1784,  1786,  1786,  1794,  1802,
+    1802,  1814,  1815,  1818,  1819,  1820,  1821,  1822,  1823,  1824,
+    1825,  1826,  1829,  1829,  1836,  1837,  1838,  1841,  1846,  1846,
+    1854,  1859,  1866,  1873,  1873,  1883,  1884,  1887,  1888,  1889,
+    1890,  1891,  1894,  1894,  1902,  1902,  1912,  1912,  1924,  1924,
+    1934,  1935,  1938,  1939,  1940,  1941,  1942,  1943,  1944,  1945,
+    1946,  1947,  1948,  1949,  1950,  1951,  1952,  1953,  1954,  1955,
+    1956,  1959,  1964,  1964,  1972,  1972,  1980,  1985,  1985,  1993,
+    1998,  2003,  2003,  2011,  2012,  2015,  2015,  2023,  2028,  2033,
+    2038,  2038,  2046,  2049,  2052,  2055,  2058,  2064,  2064,  2072,
+    2072,  2080,  2080,  2090,  2090,  2097,  2097,  2104,  2104,  2117,
+    2117,  2127,  2127,  2138,  2139,  2143,  2147,  2147,  2159,  2160,
+    2164,  2164,  2172,  2173,  2176,  2177,  2178,  2179,  2180,  2181,
+    2182,  2185,  2190,  2190,  2198,  2198,  2208,  2209,  2212,  2212,
+    2220,  2221,  2224,  2225,  2226,  2227,  2230,  2230,  2238,  2243,
+    2248
   };
 
   // Print the state stack on the debug stream.
@@ -4974,8 +4856,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4978 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 2316 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4860 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 2253 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index e8bd2b99c3ddcb2ba0220182decb027701e5aa5e..f653c272549187c89dc5d0621bb28461529041b9 100644 (file)
@@ -355,168 +355,165 @@ namespace isc { namespace dhcp {
         TOKEN_RCURLY_BRACKET = 263,
         TOKEN_NULL_TYPE = 264,
         TOKEN_DHCP6 = 265,
-        TOKEN_CONFIG_CONTROL = 266,
-        TOKEN_CONFIG_DATABASES = 267,
-        TOKEN_INTERFACES_CONFIG = 268,
-        TOKEN_INTERFACES = 269,
-        TOKEN_RE_DETECT = 270,
-        TOKEN_LEASE_DATABASE = 271,
-        TOKEN_HOSTS_DATABASE = 272,
-        TOKEN_HOSTS_DATABASES = 273,
-        TOKEN_TYPE = 274,
-        TOKEN_MEMFILE = 275,
-        TOKEN_MYSQL = 276,
-        TOKEN_POSTGRESQL = 277,
-        TOKEN_CQL = 278,
-        TOKEN_USER = 279,
-        TOKEN_PASSWORD = 280,
-        TOKEN_HOST = 281,
-        TOKEN_PORT = 282,
-        TOKEN_PERSIST = 283,
-        TOKEN_LFC_INTERVAL = 284,
-        TOKEN_READONLY = 285,
-        TOKEN_CONNECT_TIMEOUT = 286,
-        TOKEN_CONTACT_POINTS = 287,
-        TOKEN_MAX_RECONNECT_TRIES = 288,
-        TOKEN_RECONNECT_WAIT_TIME = 289,
-        TOKEN_KEYSPACE = 290,
-        TOKEN_REQUEST_TIMEOUT = 291,
-        TOKEN_TCP_KEEPALIVE = 292,
-        TOKEN_TCP_NODELAY = 293,
-        TOKEN_PREFERRED_LIFETIME = 294,
-        TOKEN_VALID_LIFETIME = 295,
-        TOKEN_RENEW_TIMER = 296,
-        TOKEN_REBIND_TIMER = 297,
-        TOKEN_DECLINE_PROBATION_PERIOD = 298,
-        TOKEN_SERVER_TAG = 299,
-        TOKEN_SUBNET6 = 300,
-        TOKEN_OPTION_DEF = 301,
-        TOKEN_OPTION_DATA = 302,
-        TOKEN_NAME = 303,
-        TOKEN_DATA = 304,
-        TOKEN_CODE = 305,
-        TOKEN_SPACE = 306,
-        TOKEN_CSV_FORMAT = 307,
-        TOKEN_ALWAYS_SEND = 308,
-        TOKEN_RECORD_TYPES = 309,
-        TOKEN_ENCAPSULATE = 310,
-        TOKEN_ARRAY = 311,
-        TOKEN_POOLS = 312,
-        TOKEN_POOL = 313,
-        TOKEN_PD_POOLS = 314,
-        TOKEN_PREFIX = 315,
-        TOKEN_PREFIX_LEN = 316,
-        TOKEN_EXCLUDED_PREFIX = 317,
-        TOKEN_EXCLUDED_PREFIX_LEN = 318,
-        TOKEN_DELEGATED_LEN = 319,
-        TOKEN_USER_CONTEXT = 320,
-        TOKEN_COMMENT = 321,
-        TOKEN_SUBNET = 322,
-        TOKEN_INTERFACE = 323,
-        TOKEN_INTERFACE_ID = 324,
-        TOKEN_ID = 325,
-        TOKEN_RAPID_COMMIT = 326,
-        TOKEN_RESERVATION_MODE = 327,
-        TOKEN_DISABLED = 328,
-        TOKEN_OUT_OF_POOL = 329,
-        TOKEN_ALL = 330,
-        TOKEN_SHARED_NETWORKS = 331,
-        TOKEN_MAC_SOURCES = 332,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 333,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 334,
-        TOKEN_SANITY_CHECKS = 335,
-        TOKEN_LEASE_CHECKS = 336,
-        TOKEN_CLIENT_CLASSES = 337,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 338,
-        TOKEN_TEST = 339,
-        TOKEN_ONLY_IF_REQUIRED = 340,
-        TOKEN_CLIENT_CLASS = 341,
-        TOKEN_RESERVATIONS = 342,
-        TOKEN_IP_ADDRESSES = 343,
-        TOKEN_PREFIXES = 344,
-        TOKEN_DUID = 345,
-        TOKEN_HW_ADDRESS = 346,
-        TOKEN_HOSTNAME = 347,
-        TOKEN_FLEX_ID = 348,
-        TOKEN_RELAY = 349,
-        TOKEN_IP_ADDRESS = 350,
-        TOKEN_HOOKS_LIBRARIES = 351,
-        TOKEN_LIBRARY = 352,
-        TOKEN_PARAMETERS = 353,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 354,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 355,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 356,
-        TOKEN_HOLD_RECLAIMED_TIME = 357,
-        TOKEN_MAX_RECLAIM_LEASES = 358,
-        TOKEN_MAX_RECLAIM_TIME = 359,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 360,
-        TOKEN_SERVER_ID = 361,
-        TOKEN_LLT = 362,
-        TOKEN_EN = 363,
-        TOKEN_LL = 364,
-        TOKEN_IDENTIFIER = 365,
-        TOKEN_HTYPE = 366,
-        TOKEN_TIME = 367,
-        TOKEN_ENTERPRISE_ID = 368,
-        TOKEN_DHCP4O6_PORT = 369,
-        TOKEN_CONTROL_SOCKET = 370,
-        TOKEN_SOCKET_TYPE = 371,
-        TOKEN_SOCKET_NAME = 372,
-        TOKEN_DHCP_DDNS = 373,
-        TOKEN_ENABLE_UPDATES = 374,
-        TOKEN_QUALIFYING_SUFFIX = 375,
-        TOKEN_SERVER_IP = 376,
-        TOKEN_SERVER_PORT = 377,
-        TOKEN_SENDER_IP = 378,
-        TOKEN_SENDER_PORT = 379,
-        TOKEN_MAX_QUEUE_SIZE = 380,
-        TOKEN_NCR_PROTOCOL = 381,
-        TOKEN_NCR_FORMAT = 382,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 383,
-        TOKEN_OVERRIDE_NO_UPDATE = 384,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 385,
-        TOKEN_REPLACE_CLIENT_NAME = 386,
-        TOKEN_GENERATED_PREFIX = 387,
-        TOKEN_UDP = 388,
-        TOKEN_TCP = 389,
-        TOKEN_JSON = 390,
-        TOKEN_WHEN_PRESENT = 391,
-        TOKEN_NEVER = 392,
-        TOKEN_ALWAYS = 393,
-        TOKEN_WHEN_NOT_PRESENT = 394,
-        TOKEN_HOSTNAME_CHAR_SET = 395,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 396,
-        TOKEN_LOGGING = 397,
-        TOKEN_LOGGERS = 398,
-        TOKEN_OUTPUT_OPTIONS = 399,
-        TOKEN_OUTPUT = 400,
-        TOKEN_DEBUGLEVEL = 401,
-        TOKEN_SEVERITY = 402,
-        TOKEN_FLUSH = 403,
-        TOKEN_MAXSIZE = 404,
-        TOKEN_MAXVER = 405,
-        TOKEN_DHCP4 = 406,
-        TOKEN_DHCPDDNS = 407,
-        TOKEN_CONTROL_AGENT = 408,
-        TOKEN_TOPLEVEL_JSON = 409,
-        TOKEN_TOPLEVEL_DHCP6 = 410,
-        TOKEN_SUB_DHCP6 = 411,
-        TOKEN_SUB_INTERFACES6 = 412,
-        TOKEN_SUB_SUBNET6 = 413,
-        TOKEN_SUB_POOL6 = 414,
-        TOKEN_SUB_PD_POOL = 415,
-        TOKEN_SUB_RESERVATION = 416,
-        TOKEN_SUB_OPTION_DEFS = 417,
-        TOKEN_SUB_OPTION_DEF = 418,
-        TOKEN_SUB_OPTION_DATA = 419,
-        TOKEN_SUB_HOOKS_LIBRARY = 420,
-        TOKEN_SUB_DHCP_DDNS = 421,
-        TOKEN_SUB_LOGGING = 422,
-        TOKEN_SUB_CONFIG_CONTROL = 423,
-        TOKEN_STRING = 424,
-        TOKEN_INTEGER = 425,
-        TOKEN_FLOAT = 426,
-        TOKEN_BOOLEAN = 427
+        TOKEN_INTERFACES_CONFIG = 266,
+        TOKEN_INTERFACES = 267,
+        TOKEN_RE_DETECT = 268,
+        TOKEN_LEASE_DATABASE = 269,
+        TOKEN_HOSTS_DATABASE = 270,
+        TOKEN_HOSTS_DATABASES = 271,
+        TOKEN_TYPE = 272,
+        TOKEN_MEMFILE = 273,
+        TOKEN_MYSQL = 274,
+        TOKEN_POSTGRESQL = 275,
+        TOKEN_CQL = 276,
+        TOKEN_USER = 277,
+        TOKEN_PASSWORD = 278,
+        TOKEN_HOST = 279,
+        TOKEN_PORT = 280,
+        TOKEN_PERSIST = 281,
+        TOKEN_LFC_INTERVAL = 282,
+        TOKEN_READONLY = 283,
+        TOKEN_CONNECT_TIMEOUT = 284,
+        TOKEN_CONTACT_POINTS = 285,
+        TOKEN_MAX_RECONNECT_TRIES = 286,
+        TOKEN_RECONNECT_WAIT_TIME = 287,
+        TOKEN_KEYSPACE = 288,
+        TOKEN_REQUEST_TIMEOUT = 289,
+        TOKEN_TCP_KEEPALIVE = 290,
+        TOKEN_TCP_NODELAY = 291,
+        TOKEN_PREFERRED_LIFETIME = 292,
+        TOKEN_VALID_LIFETIME = 293,
+        TOKEN_RENEW_TIMER = 294,
+        TOKEN_REBIND_TIMER = 295,
+        TOKEN_DECLINE_PROBATION_PERIOD = 296,
+        TOKEN_SUBNET6 = 297,
+        TOKEN_OPTION_DEF = 298,
+        TOKEN_OPTION_DATA = 299,
+        TOKEN_NAME = 300,
+        TOKEN_DATA = 301,
+        TOKEN_CODE = 302,
+        TOKEN_SPACE = 303,
+        TOKEN_CSV_FORMAT = 304,
+        TOKEN_ALWAYS_SEND = 305,
+        TOKEN_RECORD_TYPES = 306,
+        TOKEN_ENCAPSULATE = 307,
+        TOKEN_ARRAY = 308,
+        TOKEN_POOLS = 309,
+        TOKEN_POOL = 310,
+        TOKEN_PD_POOLS = 311,
+        TOKEN_PREFIX = 312,
+        TOKEN_PREFIX_LEN = 313,
+        TOKEN_EXCLUDED_PREFIX = 314,
+        TOKEN_EXCLUDED_PREFIX_LEN = 315,
+        TOKEN_DELEGATED_LEN = 316,
+        TOKEN_USER_CONTEXT = 317,
+        TOKEN_COMMENT = 318,
+        TOKEN_SUBNET = 319,
+        TOKEN_INTERFACE = 320,
+        TOKEN_INTERFACE_ID = 321,
+        TOKEN_ID = 322,
+        TOKEN_RAPID_COMMIT = 323,
+        TOKEN_RESERVATION_MODE = 324,
+        TOKEN_DISABLED = 325,
+        TOKEN_OUT_OF_POOL = 326,
+        TOKEN_GLOBAL = 327,
+        TOKEN_ALL = 328,
+        TOKEN_SHARED_NETWORKS = 329,
+        TOKEN_MAC_SOURCES = 330,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 331,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 332,
+        TOKEN_SANITY_CHECKS = 333,
+        TOKEN_LEASE_CHECKS = 334,
+        TOKEN_CLIENT_CLASSES = 335,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 336,
+        TOKEN_TEST = 337,
+        TOKEN_ONLY_IF_REQUIRED = 338,
+        TOKEN_CLIENT_CLASS = 339,
+        TOKEN_RESERVATIONS = 340,
+        TOKEN_IP_ADDRESSES = 341,
+        TOKEN_PREFIXES = 342,
+        TOKEN_DUID = 343,
+        TOKEN_HW_ADDRESS = 344,
+        TOKEN_HOSTNAME = 345,
+        TOKEN_FLEX_ID = 346,
+        TOKEN_RELAY = 347,
+        TOKEN_IP_ADDRESS = 348,
+        TOKEN_HOOKS_LIBRARIES = 349,
+        TOKEN_LIBRARY = 350,
+        TOKEN_PARAMETERS = 351,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 352,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 353,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 354,
+        TOKEN_HOLD_RECLAIMED_TIME = 355,
+        TOKEN_MAX_RECLAIM_LEASES = 356,
+        TOKEN_MAX_RECLAIM_TIME = 357,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 358,
+        TOKEN_SERVER_ID = 359,
+        TOKEN_LLT = 360,
+        TOKEN_EN = 361,
+        TOKEN_LL = 362,
+        TOKEN_IDENTIFIER = 363,
+        TOKEN_HTYPE = 364,
+        TOKEN_TIME = 365,
+        TOKEN_ENTERPRISE_ID = 366,
+        TOKEN_DHCP4O6_PORT = 367,
+        TOKEN_CONTROL_SOCKET = 368,
+        TOKEN_SOCKET_TYPE = 369,
+        TOKEN_SOCKET_NAME = 370,
+        TOKEN_DHCP_DDNS = 371,
+        TOKEN_ENABLE_UPDATES = 372,
+        TOKEN_QUALIFYING_SUFFIX = 373,
+        TOKEN_SERVER_IP = 374,
+        TOKEN_SERVER_PORT = 375,
+        TOKEN_SENDER_IP = 376,
+        TOKEN_SENDER_PORT = 377,
+        TOKEN_MAX_QUEUE_SIZE = 378,
+        TOKEN_NCR_PROTOCOL = 379,
+        TOKEN_NCR_FORMAT = 380,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 381,
+        TOKEN_OVERRIDE_NO_UPDATE = 382,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 383,
+        TOKEN_REPLACE_CLIENT_NAME = 384,
+        TOKEN_GENERATED_PREFIX = 385,
+        TOKEN_UDP = 386,
+        TOKEN_TCP = 387,
+        TOKEN_JSON = 388,
+        TOKEN_WHEN_PRESENT = 389,
+        TOKEN_NEVER = 390,
+        TOKEN_ALWAYS = 391,
+        TOKEN_WHEN_NOT_PRESENT = 392,
+        TOKEN_HOSTNAME_CHAR_SET = 393,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 394,
+        TOKEN_LOGGING = 395,
+        TOKEN_LOGGERS = 396,
+        TOKEN_OUTPUT_OPTIONS = 397,
+        TOKEN_OUTPUT = 398,
+        TOKEN_DEBUGLEVEL = 399,
+        TOKEN_SEVERITY = 400,
+        TOKEN_FLUSH = 401,
+        TOKEN_MAXSIZE = 402,
+        TOKEN_MAXVER = 403,
+        TOKEN_DHCP4 = 404,
+        TOKEN_DHCPDDNS = 405,
+        TOKEN_CONTROL_AGENT = 406,
+        TOKEN_TOPLEVEL_JSON = 407,
+        TOKEN_TOPLEVEL_DHCP6 = 408,
+        TOKEN_SUB_DHCP6 = 409,
+        TOKEN_SUB_INTERFACES6 = 410,
+        TOKEN_SUB_SUBNET6 = 411,
+        TOKEN_SUB_POOL6 = 412,
+        TOKEN_SUB_PD_POOL = 413,
+        TOKEN_SUB_RESERVATION = 414,
+        TOKEN_SUB_OPTION_DEFS = 415,
+        TOKEN_SUB_OPTION_DEF = 416,
+        TOKEN_SUB_OPTION_DATA = 417,
+        TOKEN_SUB_HOOKS_LIBRARY = 418,
+        TOKEN_SUB_DHCP_DDNS = 419,
+        TOKEN_SUB_LOGGING = 420,
+        TOKEN_STRING = 421,
+        TOKEN_INTEGER = 422,
+        TOKEN_FLOAT = 423,
+        TOKEN_BOOLEAN = 424
       };
     };
 
@@ -667,14 +664,6 @@ namespace isc { namespace dhcp {
     symbol_type
     make_DHCP6 (const location_type& l);
 
-    static inline
-    symbol_type
-    make_CONFIG_CONTROL (const location_type& l);
-
-    static inline
-    symbol_type
-    make_CONFIG_DATABASES (const location_type& l);
-
     static inline
     symbol_type
     make_INTERFACES_CONFIG (const location_type& l);
@@ -799,10 +788,6 @@ namespace isc { namespace dhcp {
     symbol_type
     make_DECLINE_PROBATION_PERIOD (const location_type& l);
 
-    static inline
-    symbol_type
-    make_SERVER_TAG (const location_type& l);
-
     static inline
     symbol_type
     make_SUBNET6 (const location_type& l);
@@ -923,6 +908,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_OUT_OF_POOL (const location_type& l);
 
+    static inline
+    symbol_type
+    make_GLOBAL (const location_type& l);
+
     static inline
     symbol_type
     make_ALL (const location_type& l);
@@ -1295,10 +1284,6 @@ namespace isc { namespace dhcp {
     symbol_type
     make_SUB_LOGGING (const location_type& l);
 
-    static inline
-    symbol_type
-    make_SUB_CONFIG_CONTROL (const location_type& l);
-
     static inline
     symbol_type
     make_STRING (const std::string& v, const location_type& l);
@@ -1520,12 +1505,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 1017,     ///< Last index in yytable_.
-      yynnts_ = 389,  ///< Number of nonterminal symbols.
-      yyfinal_ = 32, ///< Termination state number.
+      yylast_ = 988,     ///< Last index in yytable_.
+      yynnts_ = 377,  ///< Number of nonterminal symbols.
+      yyfinal_ = 30, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 173  ///< Number of tokens.
+      yyntokens_ = 170  ///< Number of tokens.
     };
 
 
@@ -1584,9 +1569,9 @@ namespace isc { namespace dhcp {
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172
+     165,   166,   167,   168,   169
     };
-    const unsigned int user_token_number_max_ = 427;
+    const unsigned int user_token_number_max_ = 424;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1619,29 +1604,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1662,29 +1647,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1764,29 +1749,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1813,29 +1798,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 190: // value
-      case 194: // map_value
-      case 246: // db_type
-      case 335: // hr_mode
-      case 471: // duid_type
-      case 504: // ncr_protocol_value
-      case 512: // replace_client_name_value
+      case 186: // value
+      case 190: // map_value
+      case 240: // db_type
+      case 329: // hr_mode
+      case 465: // duid_type
+      case 498: // ncr_protocol_value
+      case 506: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 172: // "boolean"
+      case 169: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 171: // "floating point"
+      case 168: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 170: // "integer"
+      case 167: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 169: // "constant string"
+      case 166: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1910,8 +1895,7 @@ namespace isc { namespace dhcp {
      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
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1970,18 +1954,6 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_DHCP6, l);
   }
 
-  Dhcp6Parser::symbol_type
-  Dhcp6Parser::make_CONFIG_CONTROL (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
-  }
-
-  Dhcp6Parser::symbol_type
-  Dhcp6Parser::make_CONFIG_DATABASES (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
-  }
-
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_INTERFACES_CONFIG (const location_type& l)
   {
@@ -2168,12 +2140,6 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
   }
 
-  Dhcp6Parser::symbol_type
-  Dhcp6Parser::make_SERVER_TAG (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_SERVER_TAG, l);
-  }
-
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_SUBNET6 (const location_type& l)
   {
@@ -2354,6 +2320,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_OUT_OF_POOL, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_GLOBAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GLOBAL, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_ALL (const location_type& l)
   {
@@ -2912,12 +2884,6 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_SUB_LOGGING, l);
   }
 
-  Dhcp6Parser::symbol_type
-  Dhcp6Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
-  }
-
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_STRING (const std::string& v, const location_type& l)
   {
@@ -2945,7 +2911,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2949 "dhcp6_parser.h" // lalr1.cc:377
+#line 2915 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index 6c4330b77347bbe8bb7196bebf96c7152e7085bf..4db61959f7089e155b848cbef992dd28c873ce96 100644 (file)
@@ -118,6 +118,7 @@ using namespace std;
   RESERVATION_MODE "reservation-mode"
   DISABLED "disabled"
   OUT_OF_POOL "out-of-pool"
+  GLOBAL "global"
   ALL "all"
   SHARED_NETWORKS "shared-networks"
 
@@ -1093,6 +1094,7 @@ reservation_mode: RESERVATION_MODE {
 
 hr_mode: DISABLED { $$ = ElementPtr(new StringElement("disabled", ctx.loc2pos(@1))); }
        | OUT_OF_POOL { $$ = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(@1))); }
+       | GLOBAL { $$ = ElementPtr(new StringElement("global", ctx.loc2pos(@1))); }
        | ALL { $$ = ElementPtr(new StringElement("all", ctx.loc2pos(@1))); }
        ;
 
index 38f8a70161bb5b92f8f7703b011e94b7d5119bdb..eab081dcf22a6eaab837ca828ba8e4db926eecb4 100644 (file)
@@ -5214,7 +5214,12 @@ TEST_F(Dhcp6ParserTest, hostReservationPerSubnet) {
         " },"
         " {"
         "    \"pools\": [ { \"pool\": \"2001:db8:4::/64\" } ],"
-        "    \"subnet\": \"2001:db8:4::/48\" "
+        "    \"subnet\": \"2001:db8:4::/48\", "
+        "    \"reservation-mode\": \"global\""
+        " },"
+        " {"
+        "    \"pools\": [ { \"pool\": \"2001:db8:5::/64\" } ],"
+        "    \"subnet\": \"2001:db8:5::/48\" "
         " } ],"
         "\"valid-lifetime\": 4000 }";
 
@@ -5233,7 +5238,7 @@ TEST_F(Dhcp6ParserTest, hostReservationPerSubnet) {
     ConstCfgSubnets6Ptr subnets = CfgMgr::instance().getCurrentCfg()->getCfgSubnets6();
     ASSERT_TRUE(subnets);
     const Subnet6Collection* subnet_col = subnets->getAll();
-    ASSERT_EQ(4, subnet_col->size()); // We expect 4 subnets
+    ASSERT_EQ(5, subnet_col->size()); // We expect 4 subnets
 
     // Let's check if the parsed subnets have correct HR modes.
 
@@ -5256,6 +5261,11 @@ TEST_F(Dhcp6ParserTest, hostReservationPerSubnet) {
     // Subnet 4
     subnet = subnets->selectSubnet(IOAddress("2001:db8:4::1"));
     ASSERT_TRUE(subnet);
+    EXPECT_EQ(Network::HR_GLOBAL, subnet->getHostReservationMode());
+
+    // Subnet 5
+    subnet = subnets->selectSubnet(IOAddress("2001:db8:5::1"));
+    ASSERT_TRUE(subnet);
     EXPECT_EQ(Network::HR_ALL, subnet->getHostReservationMode());
 }
 
index 7dde2d6d3a8827b530248f8a06a3bb58630d0403..28dc3d28fb031c4fdb5955b7911bc74c2a07bf82 100644 (file)
@@ -1344,7 +1344,16 @@ const char* EXTRACTED_CONFIGS[] = {
 "                        \"pool\": \"2001:db8:4::/64\"\n"
 "                    }\n"
 "                ],\n"
+"                \"reservation-mode\": \"global\",\n"
 "                \"subnet\": \"2001:db8:4::/48\"\n"
+"            },\n"
+"            {\n"
+"                \"pools\": [\n"
+"                    {\n"
+"                        \"pool\": \"2001:db8:5::/64\"\n"
+"                    }\n"
+"                ],\n"
+"                \"subnet\": \"2001:db8:5::/48\"\n"
 "            }\n"
 "        ],\n"
 "        \"valid-lifetime\": 4000\n"
@@ -5892,10 +5901,32 @@ const char* UNPARSED_CONFIGS[] = {
 "                    \"ip-addresses\": [ ]\n"
 "                },\n"
 "                \"renew-timer\": 1000,\n"
-"                \"reservation-mode\": \"all\",\n"
+"                \"reservation-mode\": \"global\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:4::/48\",\n"
 "                \"valid-lifetime\": 4000\n"
+"            },\n"
+"            {\n"
+"                \"id\": 5,\n"
+"                \"option-data\": [ ],\n"
+"                \"pd-pools\": [ ],\n"
+"                \"pools\": [\n"
+"                    {\n"
+"                        \"option-data\": [ ],\n"
+"                        \"pool\": \"2001:db8:5::/64\"\n"
+"                    }\n"
+"                ],\n"
+"                \"preferred-lifetime\": 3000,\n"
+"                \"rapid-commit\": false,\n"
+"                \"rebind-timer\": 2000,\n"
+"                \"relay\": {\n"
+"                    \"ip-addresses\": [ ]\n"
+"                },\n"
+"                \"renew-timer\": 1000,\n"
+"                \"reservation-mode\": \"all\",\n"
+"                \"reservations\": [ ],\n"
+"                \"subnet\": \"2001:db8:5::/48\",\n"
+"                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
 "        \"valid-lifetime\": 4000\n"
index b20a76b1a849de6f7956281086931f150140fb29..291696d580d06209a4adb937b87134f60c30c91d 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 201809161042
-// A Bison parser, made by GNU Bison 3.0.5.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -41,9 +40,9 @@
 
 # include "position.hh"
 
-#line 14 "parser.yy" // location.cc:292
+#line 14 "parser.yy" // location.cc:296
 namespace isc { namespace eval {
-#line 46 "location.hh" // location.cc:292
+#line 46 "location.hh" // location.cc:296
   /// Abstract a location.
   class location
   {
@@ -53,27 +52,30 @@ namespace isc { namespace eval {
     location (const position& b, const position& e)
       : begin (b)
       , end (e)
-    {}
+    {
+    }
 
     /// Construct a 0-width location in \a p.
     explicit location (const position& p = position ())
       : begin (p)
       , end (p)
-    {}
+    {
+    }
 
     /// Construct a 0-width location in \a f, \a l, \a c.
     explicit location (std::string* f,
-                       unsigned l = 1u,
-                       unsigned c = 1u)
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
       : begin (f, l, c)
       , end (f, l, c)
-    {}
+    {
+    }
 
 
     /// Initialization.
     void initialize (std::string* f = YY_NULLPTR,
-                     unsigned l = 1u,
-                     unsigned c = 1u)
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
     {
       begin.initialize (f, l, c);
       end = begin;
@@ -171,7 +173,7 @@ namespace isc { namespace eval {
   inline std::basic_ostream<YYChar>&
   operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
   {
-    unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+    unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
     ostr << loc.begin;
     if (loc.end.filename
         && (!loc.begin.filename
@@ -184,7 +186,7 @@ namespace isc { namespace eval {
     return ostr;
   }
 
-#line 14 "parser.yy" // location.cc:292
+#line 14 "parser.yy" // location.cc:296
 } } // isc::eval
-#line 189 "location.hh" // location.cc:292
+#line 192 "location.hh" // location.cc:296
 #endif // !YY_EVAL_LOCATION_HH_INCLUDED
index 86a9b2345fce1c77567f0a397b2f90ce7de40c44..9313dbfbe684a054e0f4fbd2f9d8def7faf41e53 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.0.5.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -35,7 +35,7 @@
 
 // First part of user declarations.
 
-#line 39 "parser.cc" // lalr1.cc:406
+#line 39 "parser.cc" // lalr1.cc:404
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
 
 // User implementation prologue.
 
-#line 53 "parser.cc" // lalr1.cc:414
+#line 53 "parser.cc" // lalr1.cc:412
 // Unqualified %code blocks.
-#line 33 "parser.yy" // lalr1.cc:415
+#line 33 "parser.yy" // lalr1.cc:413
 
 # include "eval_context.h"
 
-#line 59 "parser.cc" // lalr1.cc:415
+#line 59 "parser.cc" // lalr1.cc:413
 
 
 #ifndef YY_
     {                                           \
       *yycdebug_ << Title << ' ';               \
       yy_print_ (*yycdebug_, Symbol);           \
-      *yycdebug_ << '\n';                       \
+      *yycdebug_ << std::endl;                  \
     }                                           \
   } while (false)
 
 #else // !EVALDEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# 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 YY_SYMBOL_PRINT(Title, Symbol)  YYUSE(Symbol)
+# define YY_REDUCE_PRINT(Rule)           static_cast<void>(0)
+# define YY_STACK_PRINT()                static_cast<void>(0)
 
 #endif // !EVALDEBUG
 
 #define YYERROR         goto yyerrorlab
 #define YYRECOVERING()  (!!yyerrstatus_)
 
-#line 14 "parser.yy" // lalr1.cc:481
+#line 14 "parser.yy" // lalr1.cc:479
 namespace isc { namespace eval {
-#line 145 "parser.cc" // lalr1.cc:481
+#line 145 "parser.cc" // lalr1.cc:479
 
   /* Return YYSTR after stripping away unnecessary quotes and
      backslashes, so that it's suitable for yyerror.  The heuristic is
@@ -202,20 +202,24 @@ namespace isc { namespace eval {
 
 
   // by_state.
+  inline
   EvalParser::by_state::by_state ()
     : state (empty_state)
   {}
 
+  inline
   EvalParser::by_state::by_state (const by_state& other)
     : state (other.state)
   {}
 
+  inline
   void
   EvalParser::by_state::clear ()
   {
     state = empty_state;
   }
 
+  inline
   void
   EvalParser::by_state::move (by_state& that)
   {
@@ -223,10 +227,12 @@ namespace isc { namespace eval {
     that.clear ();
   }
 
+  inline
   EvalParser::by_state::by_state (state_type s)
     : state (s)
   {}
 
+  inline
   EvalParser::symbol_number_type
   EvalParser::by_state::type_get () const
   {
@@ -236,65 +242,16 @@ namespace isc { namespace eval {
       return yystos_[state];
   }
 
+  inline
   EvalParser::stack_symbol_type::stack_symbol_type ()
   {}
 
-  EvalParser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that)
-    : super_type (that.state, that.location)
-  {
-    switch (that.type_get ())
-    {
-      case 62: // option_repr_type
-        value.copy< TokenOption::RepresentationType > (that.value);
-        break;
-
-      case 66: // pkt4_field
-        value.copy< TokenPkt4::FieldType > (that.value);
-        break;
-
-      case 67: // pkt6_field
-        value.copy< TokenPkt6::FieldType > (that.value);
-        break;
-
-      case 64: // pkt_metadata
-        value.copy< TokenPkt::MetadataType > (that.value);
-        break;
-
-      case 68: // relay6_field
-        value.copy< TokenRelay6Field::FieldType > (that.value);
-        break;
-
-      case 63: // nest_level
-        value.copy< int8_t > (that.value);
-        break;
-
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
-        value.copy< std::string > (that.value);
-        break;
-
-      case 61: // option_code
-        value.copy< uint16_t > (that.value);
-        break;
-
-      case 60: // integer_expr
-      case 65: // enterprise_id
-        value.copy< uint32_t > (that.value);
-        break;
-
-      default:
-        break;
-    }
-
-  }
 
+  inline
   EvalParser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
     : super_type (s, that.location)
   {
-    switch (that.type_get ())
+      switch (that.type_get ())
     {
       case 62: // option_repr_type
         value.move< TokenOption::RepresentationType > (that.value);
@@ -345,11 +302,12 @@ namespace isc { namespace eval {
     that.type = empty_symbol;
   }
 
+  inline
   EvalParser::stack_symbol_type&
   EvalParser::stack_symbol_type::operator= (const stack_symbol_type& that)
   {
     state = that.state;
-    switch (that.type_get ())
+      switch (that.type_get ())
     {
       case 62: // option_repr_type
         value.copy< TokenOption::RepresentationType > (that.value);
@@ -402,6 +360,7 @@ namespace isc { namespace eval {
 
 
   template <typename Base>
+  inline
   void
   EvalParser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
   {
@@ -429,100 +388,100 @@ namespace isc { namespace eval {
     {
             case 50: // "constant string"
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 435 "parser.cc" // lalr1.cc:635
+#line 394 "parser.cc" // lalr1.cc:636
         break;
 
       case 51: // "integer"
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 442 "parser.cc" // lalr1.cc:635
+#line 401 "parser.cc" // lalr1.cc:636
         break;
 
       case 52: // "constant hexstring"
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 449 "parser.cc" // lalr1.cc:635
+#line 408 "parser.cc" // lalr1.cc:636
         break;
 
       case 53: // "option name"
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 456 "parser.cc" // lalr1.cc:635
+#line 415 "parser.cc" // lalr1.cc:636
         break;
 
       case 54: // "ip address"
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 463 "parser.cc" // lalr1.cc:635
+#line 422 "parser.cc" // lalr1.cc:636
         break;
 
       case 60: // integer_expr
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< uint32_t > (); }
-#line 470 "parser.cc" // lalr1.cc:635
+#line 429 "parser.cc" // lalr1.cc:636
         break;
 
       case 61: // option_code
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< uint16_t > (); }
-#line 477 "parser.cc" // lalr1.cc:635
+#line 436 "parser.cc" // lalr1.cc:636
         break;
 
       case 62: // option_repr_type
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< TokenOption::RepresentationType > (); }
-#line 484 "parser.cc" // lalr1.cc:635
+#line 443 "parser.cc" // lalr1.cc:636
         break;
 
       case 63: // nest_level
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int8_t > (); }
-#line 491 "parser.cc" // lalr1.cc:635
+#line 450 "parser.cc" // lalr1.cc:636
         break;
 
       case 64: // pkt_metadata
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< TokenPkt::MetadataType > (); }
-#line 498 "parser.cc" // lalr1.cc:635
+#line 457 "parser.cc" // lalr1.cc:636
         break;
 
       case 65: // enterprise_id
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< uint32_t > (); }
-#line 505 "parser.cc" // lalr1.cc:635
+#line 464 "parser.cc" // lalr1.cc:636
         break;
 
       case 66: // pkt4_field
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< TokenPkt4::FieldType > (); }
-#line 512 "parser.cc" // lalr1.cc:635
+#line 471 "parser.cc" // lalr1.cc:636
         break;
 
       case 67: // pkt6_field
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< TokenPkt6::FieldType > (); }
-#line 519 "parser.cc" // lalr1.cc:635
+#line 478 "parser.cc" // lalr1.cc:636
         break;
 
       case 68: // relay6_field
 
-#line 111 "parser.yy" // lalr1.cc:635
+#line 111 "parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< TokenRelay6Field::FieldType > (); }
-#line 526 "parser.cc" // lalr1.cc:635
+#line 485 "parser.cc" // lalr1.cc:636
         break;
 
 
@@ -533,6 +492,7 @@ namespace isc { namespace eval {
   }
 #endif
 
+  inline
   void
   EvalParser::yypush_ (const char* m, state_type s, symbol_type& sym)
   {
@@ -540,6 +500,7 @@ namespace isc { namespace eval {
     yypush_ (m, t);
   }
 
+  inline
   void
   EvalParser::yypush_ (const char* m, stack_symbol_type& s)
   {
@@ -548,8 +509,9 @@ namespace isc { namespace eval {
     yystack_.push (s);
   }
 
+  inline
   void
-  EvalParser::yypop_ (unsigned n)
+  EvalParser::yypop_ (unsigned int n)
   {
     yystack_.pop (n);
   }
@@ -581,7 +543,7 @@ namespace isc { namespace eval {
   }
 #endif // EVALDEBUG
 
-  EvalParser::state_type
+  inline EvalParser::state_type
   EvalParser::yy_lr_goto_state_ (state_type yystate, int yysym)
   {
     int yyr = yypgoto_[yysym - yyntokens_] + yystate;
@@ -591,13 +553,13 @@ namespace isc { namespace eval {
       return yydefgoto_[yysym - yyntokens_];
   }
 
-  bool
+  inline bool
   EvalParser::yy_pact_value_is_default_ (int yyvalue)
   {
     return yyvalue == yypact_ninf_;
   }
 
-  bool
+  inline bool
   EvalParser::yy_table_value_is_error_ (int yyvalue)
   {
     return yyvalue == yytable_ninf_;
@@ -628,7 +590,7 @@ namespace isc { namespace eval {
     // avoid gratuitous conflicts when merging into the master branch.
     try
       {
-    YYCDEBUG << "Starting parse\n";
+    YYCDEBUG << "Starting parse" << std::endl;
 
 
     /* Initialize the stack.  The initial state will be set in
@@ -640,7 +602,7 @@ namespace isc { namespace eval {
 
     // A new symbol was pushed on the stack.
   yynewstate:
-    YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
+    YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
 
     // Accept?
     if (yystack_[0].state == yyfinal_)
@@ -713,11 +675,11 @@ namespace isc { namespace eval {
     yylen = yyr2_[yyn];
     {
       stack_symbol_type yylhs;
-      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
+      yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
       /* Variants are always initialized to an empty instance of the
          correct type. The default '$$ = $1' action is NOT applied
          when using variants.  */
-      switch (yyr1_[yyn])
+        switch (yyr1_[yyn])
     {
       case 62: // option_repr_type
         yylhs.value.build< TokenOption::RepresentationType > ();
@@ -765,11 +727,10 @@ namespace isc { namespace eval {
     }
 
 
-      // Default location.
+      // Compute the default @$.
       {
         slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
         YYLLOC_DEFAULT (yylhs.location, slice, yylen);
-        yyerror_range[1].location = yylhs.location;
       }
 
       // Perform the reduction.
@@ -779,52 +740,52 @@ namespace isc { namespace eval {
           switch (yyn)
             {
   case 6:
-#line 131 "parser.yy" // lalr1.cc:856
+#line 131 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr neg(new TokenNot());
                     ctx.expression.push_back(neg);
                 }
-#line 788 "parser.cc" // lalr1.cc:856
+#line 749 "parser.cc" // lalr1.cc:859
     break;
 
   case 7:
-#line 136 "parser.yy" // lalr1.cc:856
+#line 136 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr neg(new TokenAnd());
                     ctx.expression.push_back(neg);
                 }
-#line 797 "parser.cc" // lalr1.cc:856
+#line 758 "parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 141 "parser.yy" // lalr1.cc:856
+#line 141 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr neg(new TokenOr());
                     ctx.expression.push_back(neg);
                 }
-#line 806 "parser.cc" // lalr1.cc:856
+#line 767 "parser.cc" // lalr1.cc:859
     break;
 
   case 9:
-#line 146 "parser.yy" // lalr1.cc:856
+#line 146 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr eq(new TokenEqual());
                     ctx.expression.push_back(eq);
                 }
-#line 815 "parser.cc" // lalr1.cc:856
+#line 776 "parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 151 "parser.yy" // lalr1.cc:856
+#line 151 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr opt(new TokenOption(yystack_[3].value.as< uint16_t > (), TokenOption::EXISTS));
                     ctx.expression.push_back(opt);
                 }
-#line 824 "parser.cc" // lalr1.cc:856
+#line 785 "parser.cc" // lalr1.cc:859
     break;
 
   case 11:
-#line 156 "parser.yy" // lalr1.cc:856
+#line 156 "parser.yy" // lalr1.cc:859
     {
                    switch (ctx.getUniverse()) {
                    case Option::V4:
@@ -844,11 +805,11 @@ namespace isc { namespace eval {
                        error(yystack_[5].location, "relay4 can only be used in DHCPv4.");
                    }
                 }
-#line 848 "parser.cc" // lalr1.cc:856
+#line 809 "parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 176 "parser.yy" // lalr1.cc:856
+#line 176 "parser.yy" // lalr1.cc:859
     {
                     switch (ctx.getUniverse()) {
                     case Option::V6:
@@ -862,11 +823,11 @@ namespace isc { namespace eval {
                         error(yystack_[10].location, "relay6 can only be used in DHCPv6.");
                     }
                 }
-#line 866 "parser.cc" // lalr1.cc:856
+#line 827 "parser.cc" // lalr1.cc:859
     break;
 
   case 13:
-#line 190 "parser.yy" // lalr1.cc:856
+#line 190 "parser.yy" // lalr1.cc:859
     {
                   // Expression: vendor-class[1234].exists
                   //
@@ -875,11 +836,11 @@ namespace isc { namespace eval {
                   TokenPtr exist(new TokenVendorClass(ctx.getUniverse(), yystack_[3].value.as< uint32_t > (), TokenOption::EXISTS));
                   ctx.expression.push_back(exist);
               }
-#line 879 "parser.cc" // lalr1.cc:856
+#line 840 "parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 199 "parser.yy" // lalr1.cc:856
+#line 199 "parser.yy" // lalr1.cc:859
     {
                   // Expression: vendor[1234].exists
                   //
@@ -888,11 +849,11 @@ namespace isc { namespace eval {
                   TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[3].value.as< uint32_t > (), TokenOption::EXISTS));
                   ctx.expression.push_back(exist);
               }
-#line 892 "parser.cc" // lalr1.cc:856
+#line 853 "parser.cc" // lalr1.cc:859
     break;
 
   case 15:
-#line 208 "parser.yy" // lalr1.cc:856
+#line 208 "parser.yy" // lalr1.cc:859
     {
                   // Expression vendor[1234].option[123].exists
                   //
@@ -902,11 +863,11 @@ namespace isc { namespace eval {
                   TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as< uint32_t > (), TokenOption::EXISTS, yystack_[3].value.as< uint16_t > ()));
                   ctx.expression.push_back(exist);
                }
-#line 906 "parser.cc" // lalr1.cc:856
+#line 867 "parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 218 "parser.yy" // lalr1.cc:856
+#line 218 "parser.yy" // lalr1.cc:859
     {
                   // Expression member('foo')
                   //
@@ -921,47 +882,47 @@ namespace isc { namespace eval {
                   TokenPtr member(new TokenMember(cc));
                   ctx.expression.push_back(member);
               }
-#line 925 "parser.cc" // lalr1.cc:856
+#line 886 "parser.cc" // lalr1.cc:859
     break;
 
   case 17:
-#line 235 "parser.yy" // lalr1.cc:856
+#line 235 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
                       ctx.expression.push_back(str);
                   }
-#line 934 "parser.cc" // lalr1.cc:856
+#line 895 "parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 240 "parser.yy" // lalr1.cc:856
+#line 240 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr hex(new TokenHexString(yystack_[0].value.as< std::string > ()));
                       ctx.expression.push_back(hex);
                   }
-#line 943 "parser.cc" // lalr1.cc:856
+#line 904 "parser.cc" // lalr1.cc:859
     break;
 
   case 19:
-#line 245 "parser.yy" // lalr1.cc:856
+#line 245 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr ip(new TokenIpAddress(yystack_[0].value.as< std::string > ()));
                       ctx.expression.push_back(ip);
                   }
-#line 952 "parser.cc" // lalr1.cc:856
+#line 913 "parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 250 "parser.yy" // lalr1.cc:856
+#line 250 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr opt(new TokenOption(yystack_[3].value.as< uint16_t > (), yystack_[0].value.as< TokenOption::RepresentationType > ()));
                       ctx.expression.push_back(opt);
                   }
-#line 961 "parser.cc" // lalr1.cc:856
+#line 922 "parser.cc" // lalr1.cc:859
     break;
 
   case 21:
-#line 255 "parser.yy" // lalr1.cc:856
+#line 255 "parser.yy" // lalr1.cc:859
     {
                      switch (ctx.getUniverse()) {
                      case Option::V4:
@@ -981,11 +942,11 @@ namespace isc { namespace eval {
                          error(yystack_[5].location, "relay4 can only be used in DHCPv4.");
                      }
                   }
-#line 985 "parser.cc" // lalr1.cc:856
+#line 946 "parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 276 "parser.yy" // lalr1.cc:856
+#line 276 "parser.yy" // lalr1.cc:859
     {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
@@ -999,20 +960,20 @@ namespace isc { namespace eval {
                          error(yystack_[10].location, "relay6 can only be used in DHCPv6.");
                      }
                   }
-#line 1003 "parser.cc" // lalr1.cc:856
+#line 964 "parser.cc" // lalr1.cc:859
     break;
 
   case 23:
-#line 291 "parser.yy" // lalr1.cc:856
+#line 291 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as< TokenPkt::MetadataType > ()));
                       ctx.expression.push_back(pkt_metadata);
                   }
-#line 1012 "parser.cc" // lalr1.cc:856
+#line 973 "parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 296 "parser.yy" // lalr1.cc:856
+#line 296 "parser.yy" // lalr1.cc:859
     {
                      switch (ctx.getUniverse()) {
                      case Option::V4:
@@ -1026,11 +987,11 @@ namespace isc { namespace eval {
                          error(yystack_[2].location, "pkt4 can only be used in DHCPv4.");
                      }
                   }
-#line 1030 "parser.cc" // lalr1.cc:856
+#line 991 "parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 310 "parser.yy" // lalr1.cc:856
+#line 310 "parser.yy" // lalr1.cc:859
     {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
@@ -1044,11 +1005,11 @@ namespace isc { namespace eval {
                          error(yystack_[2].location, "pkt6 can only be used in DHCPv6.");
                      }
                   }
-#line 1048 "parser.cc" // lalr1.cc:856
+#line 1009 "parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 324 "parser.yy" // lalr1.cc:856
+#line 324 "parser.yy" // lalr1.cc:859
     {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
@@ -1062,47 +1023,47 @@ namespace isc { namespace eval {
                          error(yystack_[5].location, "relay6 can only be used in DHCPv6.");
                      }
                   }
-#line 1066 "parser.cc" // lalr1.cc:856
+#line 1027 "parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 339 "parser.yy" // lalr1.cc:856
+#line 339 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr sub(new TokenSubstring());
                       ctx.expression.push_back(sub);
                   }
-#line 1075 "parser.cc" // lalr1.cc:856
+#line 1036 "parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 344 "parser.yy" // lalr1.cc:856
+#line 344 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr conc(new TokenConcat());
                       ctx.expression.push_back(conc);
                   }
-#line 1084 "parser.cc" // lalr1.cc:856
+#line 1045 "parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 349 "parser.yy" // lalr1.cc:856
+#line 349 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr cond(new TokenIfElse());
                       ctx.expression.push_back(cond);
                   }
-#line 1093 "parser.cc" // lalr1.cc:856
+#line 1054 "parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 354 "parser.yy" // lalr1.cc:856
+#line 354 "parser.yy" // lalr1.cc:859
     {
                       TokenPtr tohex(new TokenToHexString());
                       ctx.expression.push_back(tohex);
                   }
-#line 1102 "parser.cc" // lalr1.cc:856
+#line 1063 "parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 359 "parser.yy" // lalr1.cc:856
+#line 359 "parser.yy" // lalr1.cc:859
     {
                     // expression: vendor.enterprise
                     //
@@ -1111,11 +1072,11 @@ namespace isc { namespace eval {
                     TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID));
                     ctx.expression.push_back(vendor);
                 }
-#line 1115 "parser.cc" // lalr1.cc:856
+#line 1076 "parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 368 "parser.yy" // lalr1.cc:856
+#line 368 "parser.yy" // lalr1.cc:859
     {
                     // expression: vendor-class.enterprise
                     //
@@ -1125,11 +1086,11 @@ namespace isc { namespace eval {
                                                          TokenVendor::ENTERPRISE_ID));
                     ctx.expression.push_back(vendor);
                 }
-#line 1129 "parser.cc" // lalr1.cc:856
+#line 1090 "parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 378 "parser.yy" // lalr1.cc:856
+#line 378 "parser.yy" // lalr1.cc:859
     {
                     // This token will search for vendor option with
                     // specified enterprise-id.  If found, will search
@@ -1138,11 +1099,11 @@ namespace isc { namespace eval {
                     TokenPtr opt(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as< uint32_t > (), yystack_[0].value.as< TokenOption::RepresentationType > (), yystack_[3].value.as< uint16_t > ()));
                     ctx.expression.push_back(opt);
                 }
-#line 1142 "parser.cc" // lalr1.cc:856
+#line 1103 "parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 387 "parser.yy" // lalr1.cc:856
+#line 387 "parser.yy" // lalr1.cc:859
     {
                     // expression: vendor-class[1234].data
                     //
@@ -1155,11 +1116,11 @@ namespace isc { namespace eval {
                                                                TokenVendor::DATA, 0));
                     ctx.expression.push_back(vendor_class);
                 }
-#line 1159 "parser.cc" // lalr1.cc:856
+#line 1120 "parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 400 "parser.yy" // lalr1.cc:856
+#line 400 "parser.yy" // lalr1.cc:859
     {
                     // expression: vendor-class[1234].data[5]
                     //
@@ -1172,247 +1133,247 @@ namespace isc { namespace eval {
                                                                TokenVendor::DATA, index));
                     ctx.expression.push_back(vendor_class);
                 }
-#line 1176 "parser.cc" // lalr1.cc:856
+#line 1137 "parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 413 "parser.yy" // lalr1.cc:856
+#line 413 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr integer(new TokenInteger(yystack_[0].value.as< uint32_t > ()));
                     ctx.expression.push_back(integer);
                 }
-#line 1185 "parser.cc" // lalr1.cc:856
+#line 1146 "parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 420 "parser.yy" // lalr1.cc:856
+#line 420 "parser.yy" // lalr1.cc:859
     {
                      yylhs.value.as< uint32_t > () = ctx.convertUint32(yystack_[0].value.as< std::string > (), yystack_[0].location);
                  }
-#line 1193 "parser.cc" // lalr1.cc:856
+#line 1154 "parser.cc" // lalr1.cc:859
     break;
 
   case 38:
-#line 426 "parser.yy" // lalr1.cc:856
+#line 426 "parser.yy" // lalr1.cc:859
     {
                      yylhs.value.as< uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as< std::string > (), yystack_[0].location);
                  }
-#line 1201 "parser.cc" // lalr1.cc:856
+#line 1162 "parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 430 "parser.yy" // lalr1.cc:856
+#line 430 "parser.yy" // lalr1.cc:859
     {
                      yylhs.value.as< uint16_t > () = ctx.convertOptionName(yystack_[0].value.as< std::string > (), yystack_[0].location);
                  }
-#line 1209 "parser.cc" // lalr1.cc:856
+#line 1170 "parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 436 "parser.yy" // lalr1.cc:856
+#line 436 "parser.yy" // lalr1.cc:859
     {
                           yylhs.value.as< TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
                       }
-#line 1217 "parser.cc" // lalr1.cc:856
+#line 1178 "parser.cc" // lalr1.cc:859
     break;
 
   case 41:
-#line 440 "parser.yy" // lalr1.cc:856
+#line 440 "parser.yy" // lalr1.cc:859
     {
                           yylhs.value.as< TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
                       }
-#line 1225 "parser.cc" // lalr1.cc:856
+#line 1186 "parser.cc" // lalr1.cc:859
     break;
 
   case 42:
-#line 446 "parser.yy" // lalr1.cc:856
+#line 446 "parser.yy" // lalr1.cc:859
     {
                      yylhs.value.as< int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as< std::string > (), yystack_[0].location);
                  }
-#line 1233 "parser.cc" // lalr1.cc:856
+#line 1194 "parser.cc" // lalr1.cc:859
     break;
 
   case 43:
-#line 455 "parser.yy" // lalr1.cc:856
+#line 455 "parser.yy" // lalr1.cc:859
     {
                       yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::IFACE;
                   }
-#line 1241 "parser.cc" // lalr1.cc:856
+#line 1202 "parser.cc" // lalr1.cc:859
     break;
 
   case 44:
-#line 459 "parser.yy" // lalr1.cc:856
+#line 459 "parser.yy" // lalr1.cc:859
     {
                       yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::SRC;
                   }
-#line 1249 "parser.cc" // lalr1.cc:856
+#line 1210 "parser.cc" // lalr1.cc:859
     break;
 
   case 45:
-#line 463 "parser.yy" // lalr1.cc:856
+#line 463 "parser.yy" // lalr1.cc:859
     {
                       yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::DST;
                   }
-#line 1257 "parser.cc" // lalr1.cc:856
+#line 1218 "parser.cc" // lalr1.cc:859
     break;
 
   case 46:
-#line 467 "parser.yy" // lalr1.cc:856
+#line 467 "parser.yy" // lalr1.cc:859
     {
                       yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::LEN;
                   }
-#line 1265 "parser.cc" // lalr1.cc:856
+#line 1226 "parser.cc" // lalr1.cc:859
     break;
 
   case 47:
-#line 473 "parser.yy" // lalr1.cc:856
+#line 473 "parser.yy" // lalr1.cc:859
     {
                        yylhs.value.as< uint32_t > () = ctx.convertUint32(yystack_[0].value.as< std::string > (), yystack_[0].location);
                    }
-#line 1273 "parser.cc" // lalr1.cc:856
+#line 1234 "parser.cc" // lalr1.cc:859
     break;
 
   case 48:
-#line 477 "parser.yy" // lalr1.cc:856
+#line 477 "parser.yy" // lalr1.cc:859
     {
                        yylhs.value.as< uint32_t > () = 0;
                    }
-#line 1281 "parser.cc" // lalr1.cc:856
+#line 1242 "parser.cc" // lalr1.cc:859
     break;
 
   case 49:
-#line 483 "parser.yy" // lalr1.cc:856
+#line 483 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
                 }
-#line 1289 "parser.cc" // lalr1.cc:856
+#line 1250 "parser.cc" // lalr1.cc:859
     break;
 
   case 50:
-#line 487 "parser.yy" // lalr1.cc:856
+#line 487 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HLEN;
                 }
-#line 1297 "parser.cc" // lalr1.cc:856
+#line 1258 "parser.cc" // lalr1.cc:859
     break;
 
   case 51:
-#line 491 "parser.yy" // lalr1.cc:856
+#line 491 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
                 }
-#line 1305 "parser.cc" // lalr1.cc:856
+#line 1266 "parser.cc" // lalr1.cc:859
     break;
 
   case 52:
-#line 495 "parser.yy" // lalr1.cc:856
+#line 495 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
                 }
-#line 1313 "parser.cc" // lalr1.cc:856
+#line 1274 "parser.cc" // lalr1.cc:859
     break;
 
   case 53:
-#line 499 "parser.yy" // lalr1.cc:856
+#line 499 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
                 }
-#line 1321 "parser.cc" // lalr1.cc:856
+#line 1282 "parser.cc" // lalr1.cc:859
     break;
 
   case 54:
-#line 503 "parser.yy" // lalr1.cc:856
+#line 503 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
                 }
-#line 1329 "parser.cc" // lalr1.cc:856
+#line 1290 "parser.cc" // lalr1.cc:859
     break;
 
   case 55:
-#line 507 "parser.yy" // lalr1.cc:856
+#line 507 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
                 }
-#line 1337 "parser.cc" // lalr1.cc:856
+#line 1298 "parser.cc" // lalr1.cc:859
     break;
 
   case 56:
-#line 511 "parser.yy" // lalr1.cc:856
+#line 511 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
                  }
-#line 1345 "parser.cc" // lalr1.cc:856
+#line 1306 "parser.cc" // lalr1.cc:859
     break;
 
   case 57:
-#line 515 "parser.yy" // lalr1.cc:856
+#line 515 "parser.yy" // lalr1.cc:859
     {
                     yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
                  }
-#line 1353 "parser.cc" // lalr1.cc:856
+#line 1314 "parser.cc" // lalr1.cc:859
     break;
 
   case 58:
-#line 521 "parser.yy" // lalr1.cc:856
+#line 521 "parser.yy" // lalr1.cc:859
     {
                      yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
                  }
-#line 1361 "parser.cc" // lalr1.cc:856
+#line 1322 "parser.cc" // lalr1.cc:859
     break;
 
   case 59:
-#line 525 "parser.yy" // lalr1.cc:856
+#line 525 "parser.yy" // lalr1.cc:859
     {
                      yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
                  }
-#line 1369 "parser.cc" // lalr1.cc:856
+#line 1330 "parser.cc" // lalr1.cc:859
     break;
 
   case 60:
-#line 531 "parser.yy" // lalr1.cc:856
+#line 531 "parser.yy" // lalr1.cc:859
     {
                        yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
                    }
-#line 1377 "parser.cc" // lalr1.cc:856
+#line 1338 "parser.cc" // lalr1.cc:859
     break;
 
   case 61:
-#line 535 "parser.yy" // lalr1.cc:856
+#line 535 "parser.yy" // lalr1.cc:859
     {
                        yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
                    }
-#line 1385 "parser.cc" // lalr1.cc:856
+#line 1346 "parser.cc" // lalr1.cc:859
     break;
 
   case 62:
-#line 541 "parser.yy" // lalr1.cc:856
+#line 541 "parser.yy" // lalr1.cc:859
     {
                     TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
                     ctx.expression.push_back(str);
                 }
-#line 1394 "parser.cc" // lalr1.cc:856
+#line 1355 "parser.cc" // lalr1.cc:859
     break;
 
   case 63:
-#line 548 "parser.yy" // lalr1.cc:856
+#line 548 "parser.yy" // lalr1.cc:859
     {
                      TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
                      ctx.expression.push_back(str);
                  }
-#line 1403 "parser.cc" // lalr1.cc:856
+#line 1364 "parser.cc" // lalr1.cc:859
     break;
 
   case 64:
-#line 553 "parser.yy" // lalr1.cc:856
+#line 553 "parser.yy" // lalr1.cc:859
     {
                      TokenPtr str(new TokenString("all"));
                      ctx.expression.push_back(str);
                  }
-#line 1412 "parser.cc" // lalr1.cc:856
+#line 1373 "parser.cc" // lalr1.cc:859
     break;
 
 
-#line 1416 "parser.cc" // lalr1.cc:856
+#line 1377 "parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -1474,6 +1435,7 @@ namespace isc { namespace eval {
        code.  */
     if (false)
       goto yyerrorlab;
+    yyerror_range[1].location = yystack_[yylen - 1].location;
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYERROR.  */
     yypop_ (yylen);
@@ -1547,7 +1509,8 @@ namespace isc { namespace eval {
   }
     catch (...)
       {
-        YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+                 << std::endl;
         // Do not try to display the values of the reclaimed symbols,
         // as their printer might throw an exception.
         if (!yyla.empty ())
@@ -1565,7 +1528,7 @@ namespace isc { namespace eval {
   void
   EvalParser::error (const syntax_error& yyexc)
   {
-    error (yyexc.location, yyexc.what ());
+    error (yyexc.location, yyexc.what());
   }
 
   // Generate an error message.
@@ -1641,13 +1604,12 @@ namespace isc { namespace eval {
         case N:                               \
           yyformat = S;                       \
         break
-      default: // Avoid compiler warnings.
-        YYCASE_ (0, YY_("syntax error"));
-        YYCASE_ (1, YY_("syntax error, unexpected %s"));
-        YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
-        YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-        YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-        YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+        YYCASE_(0, YY_("syntax error"));
+        YYCASE_(1, YY_("syntax error, unexpected %s"));
+        YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+        YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+        YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+        YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
 #undef YYCASE_
       }
 
@@ -1877,18 +1839,18 @@ namespace isc { namespace eval {
            i_end = yystack_.end ();
          i != i_end; ++i)
       *yycdebug_ << ' ' << i->state;
-    *yycdebug_ << '\n';
+    *yycdebug_ << std::endl;
   }
 
   // Report on the debug stream that the rule \a yyrule is going to be reduced.
   void
   EvalParser::yy_reduce_print_ (int yyrule)
   {
-    unsigned yylno = yyrline_[yyrule];
+    unsigned int yylno = yyrline_[yyrule];
     int yynrhs = yyr2_[yyrule];
     // Print the symbols being reduced, and their result.
     *yycdebug_ << "Reducing stack by rule " << yyrule - 1
-               << " (line " << yylno << "):\n";
+               << " (line " << yylno << "):" << std::endl;
     // The symbols being reduced.
     for (int yyi = 0; yyi < yynrhs; yyi++)
       YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
@@ -1897,10 +1859,10 @@ namespace isc { namespace eval {
 #endif // EVALDEBUG
 
 
-#line 14 "parser.yy" // lalr1.cc:1163
+#line 14 "parser.yy" // lalr1.cc:1167
 } } // isc::eval
-#line 1903 "parser.cc" // lalr1.cc:1163
-#line 559 "parser.yy" // lalr1.cc:1164
+#line 1865 "parser.cc" // lalr1.cc:1167
+#line 559 "parser.yy" // lalr1.cc:1168
 
 void
 isc::eval::EvalParser::error(const location_type& loc,
index c79f0fddbb9c6c0460851e52e5a430c0b5dcb985..8f19851c0d7c3e9d4ed1e76d1a713838c557679e 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.0.5.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@
 #ifndef YY_EVAL_PARSER_H_INCLUDED
 # define YY_EVAL_PARSER_H_INCLUDED
 // //                    "%code requires" blocks.
-#line 17 "parser.yy" // lalr1.cc:379
+#line 17 "parser.yy" // lalr1.cc:377
 
 #include <string>
 #include <eval/token.h>
@@ -51,7 +51,7 @@
 using namespace isc::dhcp;
 using namespace isc::eval;
 
-#line 55 "parser.h" // lalr1.cc:379
+#line 55 "parser.h" // lalr1.cc:377
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -134,9 +134,9 @@ using namespace isc::eval;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined EVALDEBUG */
 
-#line 14 "parser.yy" // lalr1.cc:379
+#line 14 "parser.yy" // lalr1.cc:377
 namespace isc { namespace eval {
-#line 140 "parser.h" // lalr1.cc:379
+#line 140 "parser.h" // lalr1.cc:377
 
 
 
@@ -914,8 +914,6 @@ namespace isc { namespace eval {
       typedef basic_symbol<by_state> super_type;
       /// Construct an empty symbol.
       stack_symbol_type ();
-      /// Copy construct.
-      stack_symbol_type (const stack_symbol_type& that);
       /// Steal the contents from \a sym to build this.
       stack_symbol_type (state_type s, symbol_type& sym);
       /// Assignment, needed by push_back.
@@ -944,7 +942,7 @@ namespace isc { namespace eval {
     void yypush_ (const char* m, state_type s, symbol_type& sym);
 
     /// Pop \a n symbols the three stacks.
-    void yypop_ (unsigned n = 1);
+    void yypop_ (unsigned int n = 1);
 
     /// Constants.
     enum
@@ -1004,12 +1002,12 @@ namespace isc { namespace eval {
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54
     };
-    const unsigned user_token_number_max_ = 309;
+    const unsigned int user_token_number_max_ = 309;
     const token_number_type undef_token_ = 2;
 
-    if (static_cast<int> (t) <= yyeof_)
+    if (static_cast<int>(t) <= yyeof_)
       return yyeof_;
-    else if (static_cast<unsigned> (t) <= user_token_number_max_)
+    else if (static_cast<unsigned int> (t) <= user_token_number_max_)
       return translate_table[t];
     else
       return undef_token_;
@@ -1023,17 +1021,19 @@ namespace isc { namespace eval {
 
   // basic_symbol.
   template <typename Base>
+  inline
   EvalParser::basic_symbol<Base>::basic_symbol ()
     : value ()
   {}
 
   template <typename Base>
+  inline
   EvalParser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
     : Base (other)
     , value ()
     , location (other.location)
   {
-    switch (other.type_get ())
+      switch (other.type_get ())
     {
       case 62: // option_repr_type
         value.copy< TokenOption::RepresentationType > (other.value);
@@ -1082,14 +1082,16 @@ namespace isc { namespace eval {
 
   }
 
+
   template <typename Base>
+  inline
   EvalParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
     : Base (t)
     , value ()
     , location (l)
   {
     (void) v;
-    switch (this->type_get ())
+      switch (this->type_get ())
     {
       case 62: // option_repr_type
         value.copy< TokenOption::RepresentationType > (v);
@@ -1212,12 +1214,14 @@ namespace isc { namespace eval {
 
 
   template <typename Base>
+  inline
   EvalParser::basic_symbol<Base>::~basic_symbol ()
   {
     clear ();
   }
 
   template <typename Base>
+  inline
   void
   EvalParser::basic_symbol<Base>::clear ()
   {
@@ -1232,7 +1236,7 @@ namespace isc { namespace eval {
     }
 
     // Type destructor.
-  switch (yytype)
+    switch (yytype)
     {
       case 62: // option_repr_type
         value.template destroy< TokenOption::RepresentationType > ();
@@ -1283,6 +1287,7 @@ namespace isc { namespace eval {
   }
 
   template <typename Base>
+  inline
   bool
   EvalParser::basic_symbol<Base>::empty () const
   {
@@ -1290,11 +1295,12 @@ namespace isc { namespace eval {
   }
 
   template <typename Base>
+  inline
   void
   EvalParser::basic_symbol<Base>::move (basic_symbol& s)
   {
-    super_type::move (s);
-    switch (this->type_get ())
+    super_type::move(s);
+      switch (this->type_get ())
     {
       case 62: // option_repr_type
         value.move< TokenOption::RepresentationType > (s.value);
@@ -1721,9 +1727,9 @@ namespace isc { namespace eval {
   }
 
 
-#line 14 "parser.yy" // lalr1.cc:379
+#line 14 "parser.yy" // lalr1.cc:377
 } } // isc::eval
-#line 1727 "parser.h" // lalr1.cc:379
+#line 1733 "parser.h" // lalr1.cc:377
 
 
 
index cb72c16895dd400d9c0e94b797a800f04e24024a..6d547f27460432a096949f45225629e231ab72c5 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 201809161042
-// A Bison parser, made by GNU Bison 3.0.5.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 #  endif
 # endif
 
-#line 14 "parser.yy" // location.cc:292
+#line 14 "parser.yy" // location.cc:296
 namespace isc { namespace eval {
-#line 56 "position.hh" // location.cc:292
+#line 56 "position.hh" // location.cc:296
   /// Abstract a position.
   class position
   {
   public:
     /// Construct a position.
     explicit position (std::string* f = YY_NULLPTR,
-                       unsigned l = 1u,
-                       unsigned c = 1u)
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
       : filename (f)
       , line (l)
       , column (c)
-    {}
+    {
+    }
 
 
     /// Initialization.
     void initialize (std::string* fn = YY_NULLPTR,
-                     unsigned l = 1u,
-                     unsigned c = 1u)
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
     {
       filename = fn;
       line = l;
@@ -100,15 +100,15 @@ namespace isc { namespace eval {
     /// File name to which this position refers.
     std::string* filename;
     /// Current line number.
-    unsigned line;
+    unsigned int line;
     /// Current column number.
-    unsigned column;
+    unsigned int column;
 
   private:
     /// Compute max(min, lhs+rhs) (provided min <= lhs).
-    static unsigned add_ (unsigned lhs, int rhs, unsigned min)
+    static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
     {
-      return (0 < rhs || -static_cast<unsigned>(rhs) < lhs
+      return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
               ? rhs + lhs
               : min);
     }
@@ -174,7 +174,7 @@ namespace isc { namespace eval {
     return ostr << pos.line << '.' << pos.column;
   }
 
-#line 14 "parser.yy" // location.cc:292
+#line 14 "parser.yy" // location.cc:296
 } } // isc::eval
-#line 179 "position.hh" // location.cc:292
+#line 180 "position.hh" // location.cc:296
 #endif // !YY_EVAL_POSITION_HH_INCLUDED
index 2d70e54f4b941f0b6aed0a3b028d92b09ea67776..e0d2dfe10ffb954546fe71bea6738fb72e7a5c77 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 201809161042
-// A Bison parser, made by GNU Bison 3.0.5.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 
 # include <vector>
 
-#line 14 "parser.yy" // stack.hh:131
+#line 14 "parser.yy" // stack.hh:132
 namespace isc { namespace eval {
-#line 46 "stack.hh" // stack.hh:131
-  /// A stack with random access from its top.
+#line 46 "stack.hh" // stack.hh:132
   template <class T, class S = std::vector<T> >
   class stack
   {
@@ -59,24 +57,20 @@ namespace isc { namespace eval {
       seq_.reserve (200);
     }
 
-    stack (unsigned n)
+    stack (unsigned int n)
       : seq_ (n)
     {}
 
-    /// Random access.
-    ///
-    /// Index 0 returns the topmost element.
+    inline
     T&
-    operator[] (unsigned i)
+    operator[] (unsigned int i)
     {
       return seq_[seq_.size () - 1 - i];
     }
 
-    /// Random access.
-    ///
-    /// Index 0 returns the topmost element.
+    inline
     const T&
-    operator[] (unsigned i) const
+    operator[] (unsigned int i) const
     {
       return seq_[seq_.size () - 1 - i];
     }
@@ -84,6 +78,7 @@ namespace isc { namespace eval {
     /// Steal the contents of \a t.
     ///
     /// Close to move-semantics.
+    inline
     void
     push (T& t)
     {
@@ -91,8 +86,9 @@ namespace isc { namespace eval {
       operator[](0).move (t);
     }
 
+    inline
     void
-    pop (unsigned n = 1)
+    pop (unsigned int n = 1)
     {
       for (; n; --n)
         seq_.pop_back ();
@@ -104,18 +100,21 @@ namespace isc { namespace eval {
       seq_.clear ();
     }
 
+    inline
     typename S::size_type
     size () const
     {
       return seq_.size ();
     }
 
+    inline
     const_iterator
     begin () const
     {
       return seq_.rbegin ();
     }
 
+    inline
     const_iterator
     end () const
     {
@@ -134,24 +133,25 @@ namespace isc { namespace eval {
   class slice
   {
   public:
-    slice (const S& stack, unsigned range)
+    slice (const S& stack, unsigned int range)
       : stack_ (stack)
       , range_ (range)
     {}
 
+    inline
     const T&
-    operator [] (unsigned i) const
+    operator [] (unsigned int i) const
     {
       return stack_[range_ - i];
     }
 
   private:
     const S& stack_;
-    unsigned range_;
+    unsigned int range_;
   };
 
-#line 14 "parser.yy" // stack.hh:131
+#line 14 "parser.yy" // stack.hh:132
 } } // isc::eval
-#line 155 "stack.hh" // stack.hh:131
+#line 156 "stack.hh" // stack.hh:132
 
 #endif // !YY_EVAL_STACK_HH_INCLUDED