]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#129,!55] Regenerated parser/lexer for dhcp6 129-global-reservation-mode-is-dhcpv4-only
authorTomek Mrugalski <tomasz@isc.org>
Tue, 30 Oct 2018 10:51:33 +0000 (11:51 +0100)
committerTomek Mrugalski <tomasz@isc.org>
Tue, 30 Oct 2018 10:51:33 +0000 (11:51 +0100)
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h

index 167e8dcdea75ec0040ce75670dbd478acd70a04f..52b35ee318eb0cd17bf10d8e6dd1a855bf4b1181 100644 (file)
@@ -1,6 +1,6 @@
-#line 1 "dhcp6_lexer.cc"
+#line 2 "dhcp6_lexer.cc"
 
-#line 3 "dhcp6_lexer.cc"
+#line 4 "dhcp6_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 176
-#define YY_END_OF_BUFFER 177
+#define YY_NUM_RULES 179
+#define YY_END_OF_BUFFER 180
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1426] =
+static const flex_int16_t yy_accept[1452] =
     {   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,
+      172,  172,    0,    0,    0,    0,    0,    0,    0,    0,
+      180,  178,   10,   11,  178,    1,  172,  169,  172,  172,
+      178,  171,  170,  178,  178,  178,  178,  178,  165,  166,
+      178,  178,  178,  167,  168,    5,    5,    5,  178,  178,
+      178,   10,   11,    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,    1,  169,
-      169,    0,  168,  169,    3,    2,    6,    0,  169,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  172,
+      172,    0,  171,  172,    3,    2,    6,    0,  172,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      159,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  161,    0,    0,    0,
+      162,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  164,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -722,143 +722,146 @@ static const flex_int16_t yy_accept[1426] =
         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,
-      137,    0,    0,  138,    0,    0,    0,    0,    0,    0,
+      140,    0,    0,  141,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  160,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  163,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   92,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   95,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    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,
+      177,  175,    0,  174,  173,    0,    0,    0,    0,    0,
 
-        0,    0,  136,    0,    0,   29,    0,   28,    0,    0,
-       99,    0,    0,    0,    0,    0,    0,    0,   52,    0,
+        0,    0,  139,    0,    0,   29,    0,   28,    0,    0,
+      102,    0,    0,    0,    0,    0,    0,    0,    0,   54,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  173,
-
-      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,    0,    0,   76,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   86,    0,   56,
+
+      176,  173,    0,    0,    0,    0,    0,    0,    0,    0,
+       30,    0,    0,   32,    0,    0,    0,    0,    0,  103,
+        0,    0,    0,    0,    0,    0,   80,    0,    0,    0,
+        0,    0,    0,  124,    0,    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,   79,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
+        0,   58,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  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,  119,
+      144,   50,    0,   55,    0,    0,    0,    0,    0,    0,
+      158,   38,    0,   35,    0,   34,    0,    0,    0,  132,
         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,  111,
+        0,    0,    0,    0,    0,    0,    0,    0,  143,    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,   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,  133,
 
-        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,  128,    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,   98,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  101,    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,  113,    0,
+        0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
+        0,    0,    0,    0,   84,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,   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,  124,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   92,    0,    0,
+        0,    0,    0,    0,    0,    0,  107,    0,    0,    0,
+        0,    0,   91,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      134,  105,    0,    0,    0,    0,  109,   49,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   57,    0,
+      127,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  137,  108,    0,    0,
+        0,    0,  112,   51,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   59,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   72,    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,    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,   75,    0,    0,    0,    0,    0,    0,
+      159,    0,    0,    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,  126,    0,
+        0,    0,    0,    0,    0,   62,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   56,   83,    0,    0,    0,  123,    0,    0,
+        0,   49,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  115,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  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,  157,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   93,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   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,    0,  126,  111,    0,
+        0,    0,    0,    0,    0,   41,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   16,    0,  138,
+       14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  122,  139,    0,   40,    0,  131,
+        0,    0,  129,  114,    0,    0,    0,    0,    0,    0,
 
-        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,  125,
+      142,    0,   40,    0,  134,    0,    0,    0,    0,    0,
+        0,    0,    0,   20,    0,    0,    0,   77,    0,    0,
+        0,    0,  136,   53,    0,   85,    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,   74,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   81,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  131,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  104,    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,  156,  155,    0,   66,    0,    0,    0,    0,    0,
+       31,    0,  118,    0,    0,    0,    0,    0,    0,    0,
+        0,  153,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   94,    0,  122,   43,    0,   60,    0,
+        0,    0,    0,   19,    0,    0,    0,    0,    0,    0,
+       96,   72,    0,    0,  130,    0,    0,    0,    0,    0,
+      121,    0,    0,    0,    0,   90,    0,  160,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   88,    0,  145,
 
-        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,
-       62,    0,    0,   73,    0,   37,    0,    0,    0,    0,
-        0,   25,    0,    0,    0,    0,    0,    0,  148,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   42,    0,
+       65,    0,    0,    0,    0,  116,   47,    0,    0,   67,
+      154,    0,   12,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   45,    0,    0,   44,   18,    0,    0,    0,
+        0,  109,    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,  135,    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,  151,    0,  120,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   97,    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,  150,    0,
+        0,   22,   69,    0,    0,    0,    0,    0,    0,   21,
+        0,   87,    0,    0,  149,    0,    0,   68,    0,    0,
+       63,    0,   24,    0,    0,    0,    0,    0,    0,    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,  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,  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
+       23,    0,  105,  117,    0,    0,    0,    0,    0,    0,
+      147,  152,   73,    0,    0,    0,    0,  146,    0,    0,
+       27,    0,    0,    0,    0,    0,  106,    0,    0,  148,
+        0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -905,347 +908,353 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1438] =
+static const flex_int16_t yy_base[1464] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     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,
+     1816, 1817,   32, 1812,  141,    0,  201, 1817,  206,   88,
+       11,  213, 1817, 1794,  114,   25,    2,    6, 1817, 1817,
+       73,   11,   17, 1817, 1817, 1817,  104, 1800, 1755,    0,
+     1792,  107, 1807,  217,  241, 1817,  185, 1751, 1757, 1777,
        93,   58,  190,   91,  211,  200,   14,  267,  213,  175,
-      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
+      269,   64,  231,  184,  187,   75, 1758,  274,  215,  290,
+      278,  297, 1741,  207,  302,  316,  316, 1760,    0,  355,
+      360,  372,  377,  380, 1817,    0, 1817,  295,  383,  227,
+      296,  283,  327,  361,  293, 1817, 1757, 1796, 1817,  237,
+
+     1817,  394,  363, 1744, 1754, 1793,  375,  321,  403, 1748,
+      369,  378,  376,  382,  388, 1791,    0,  445,  407, 1735,
+     1743,  364, 1739, 1728, 1729,  372, 1745, 1728, 1737,  387,
+      308,  378, 1731, 1729,  391, 1718, 1774,  416, 1721, 1772,
+     1714, 1737, 1734, 1734, 1728,  214, 1721, 1714, 1719, 1713,
+      382, 1724, 1717, 1708, 1707, 1721,  362, 1757, 1706,  414,
+     1718, 1721, 1705,  441, 1706,  417, 1718, 1715, 1716, 1714,
+      422, 1696, 1701, 1697, 1689, 1706, 1698,    0,  422,  450,
+      440,  446,  454,  470, 1697, 1817,    0,  476, 1688, 1691,
+     1817,  465,  447, 1817, 1743, 1698,  477, 1741,  481, 1740,
+
+      477, 1739, 1817,  521, 1738,  489, 1699, 1694, 1693, 1684,
+      465, 1733, 1727, 1693, 1672, 1680, 1686, 1674, 1688, 1684,
+     1685, 1685, 1680, 1672, 1674, 1658, 1662, 1675, 1677, 1674,
+     1666, 1656, 1659, 1673, 1817, 1659, 1667, 1670, 1651, 1650,
+     1700, 1649, 1659, 1697,  510, 1658, 1646, 1657, 1693,  490,
+     1697, 1634, 1649,    9, 1639, 1655, 1636, 1638, 1634, 1640,
+     1631, 1630, 1643, 1636, 1638, 1642, 1641, 1635,   80, 1642,
+     1637, 1629, 1619, 1634, 1629, 1633, 1614, 1630, 1616, 1622,
+     1629, 1617,  230, 1610, 1624, 1623, 1626, 1608, 1616,  491,
+     1817, 1817,  492, 1817, 1817, 1603,    0,  376, 1605,  508,
+
+      501, 1659, 1817, 1612,  480, 1817, 1657, 1817, 1651,  562,
+     1817,  480, 1593, 1603, 1653, 1610, 1605, 1608,  304, 1817,
+     1606, 1648, 1603, 1600, 1601,  303, 1605, 1643, 1593, 1588,
+     1585, 1581, 1583, 1632, 1591, 1580, 1596, 1628, 1576,  568,
+     1589, 1589, 1572, 1573, 1586, 1573, 1583, 1578, 1585, 1580,
+     1565,  451, 1574, 1577, 1572, 1568, 1616,  501,  497, 1817,
+     1610, 1562, 1561, 1554, 1556, 1560, 1549, 1556, 1561,  550,
+     1606, 1561,  503, 1558, 1562, 1560, 1549, 1549, 1561,  496,
+     1536, 1537, 1558,  511, 1540, 1537, 1551, 1550, 1536, 1548,
+     1547, 1546, 1545,  507, 1586, 1585, 1584, 1528,  583, 1541,
+
+     1817, 1817, 1540,    0,  518, 1528, 1579, 1578, 1536, 1576,
+     1817, 1524, 1574, 1817,  541,  617,  520, 1573, 1515, 1817,
+     1520, 1526, 1529, 1528, 1515, 1514, 1817, 1516, 1513, 1525,
+     1521, 1509, 1511, 1817, 1517, 1502, 1504, 1515, 1513, 1508,
+      584, 1515, 1503, 1496, 1545, 1817, 1494, 1510, 1542, 1546,
+     1504, 1498, 1500, 1501, 1503, 1535, 1488, 1483, 1482, 1484,
+     1477, 1492, 1470, 1477, 1482, 1530, 1817, 1477, 1473, 1527,
+     1480, 1474, 1481, 1466, 1476, 1479, 1468, 1467, 1462, 1817,
+     1517, 1817, 1461, 1460, 1453, 1470, 1507, 1454, 1459, 1468,
+     1462, 1456, 1465,  585, 1500, 1464, 1447, 1447, 1442, 1438,
+
+     1444, 1443, 1451, 1455, 1438, 1494, 1436, 1450, 1439, 1817,
+     1817, 1817, 1439, 1817, 1449, 1483, 1445,    0, 1486, 1436,
+     1817, 1817, 1433, 1817, 1439, 1817,  561,  560,  591, 1817,
+     1477, 1424, 1475, 1422, 1421, 1428, 1421, 1433, 1432, 1416,
+     1431, 1461, 1428, 1464, 1410, 1412, 1424, 1424, 1423, 1817,
+     1408, 1405, 1461, 1418, 1410, 1416, 1407, 1415, 1817, 1400,
+     1411, 1415, 1397, 1411,  557, 1393, 1387, 1392, 1389, 1404,
+     1405, 1402, 1443, 1400, 1817, 1386, 1388, 1817, 1396, 1433,
+     1432,  556, 1395, 1378, 1379, 1384, 1375, 1817, 1389, 1375,
+      607, 1367, 1388, 1385, 1377, 1420, 1374, 1381, 1417, 1817,
+
+     1365, 1363, 1377, 1361, 1375, 1378, 1410, 1409, 1408, 1355,
+     1406, 1405, 1817,  599, 1367, 1367, 1365, 1354, 1356, 1817,
+     1817, 1399, 1347, 1402,  566,  589,  564, 1361, 1400,  576,
+     1394, 1393, 1392, 1346, 1336, 1389, 1351, 1341, 1386, 1349,
+     1331, 1339, 1341, 1345, 1380, 1384, 1341, 1340, 1817, 1341,
+     1334, 1323, 1336, 1339, 1334, 1329, 1334, 1331, 1330, 1326,
+     1332, 1327, 1368, 1367, 1311, 1307,  562, 1364, 1817, 1363,
+     1312, 1304, 1355, 1318, 1305, 1817, 1305, 1314, 1313, 1313,
+     1297, 1352, 1295, 1308, 1817, 1300, 1292, 1301, 1294, 1305,
+     1282, 1286, 1337, 1301, 1283, 1281, 1292, 1332, 1331, 1330,
+
+     1277, 1293,  575,  593, 1270, 1280,  587, 1817, 1330, 1276,
+     1286, 1286, 1275, 1279, 1286, 1323, 1817, 1317,  612, 1270,
+     1278, 1270, 1817, 1266, 1279, 1259, 1262, 1258, 1275, 1270,
+        0,   77,   64,  187,  278,  300,  388,  386,  452,  476,
+     1817,  535,  577,  573,  590,  588,  642,  584,  587,  603,
+      606,  595,  652,  611,  597,  606, 1817, 1817,  622,  621,
+      626,  614, 1817, 1817,  628,  615,  614,  632,  619,  619,
+      668,  620,  676,  677, 1817,  624,  638,  638,  681,  631,
+      633,  627,  685,  640,  630,  631,  627,  637,  641,  652,
+      636,  654,  649,  651,  644,  646,  658,  648,  663,  702,
+
+      661,  666,  643, 1817,  668,  658,  703,  652,  667,  668,
+     1817,  687,  695,  675,  665,  679,  667,  662,  674,  669,
+      670,  666,  675,  670,  721,  727,  676, 1817,  688,  673,
+      689,  679,  691,  685,  730,  698,  683,  684, 1817,  701,
+      704,  687,  689,  745,  690, 1817,  707,  710,  690,  709,
+      747,  707,  703,  698,  716,  715,  701,  716,  708,  704,
+      722,  707, 1817, 1817,  715,  760,  715, 1817,  723,  718,
+      769, 1817,  720,  725,  767,  721,  722,  734,  728,  732,
+      730,  728,  739,  782,  728,  784,  785,  731,  743, 1817,
+      731,  739,  737,  742,  754,  738,  752,  753,  754,  770,
+
+      775,  749,  759,  746,  746,  766,  755,  760,  767,  808,
+      809,  758,  762, 1817,  757,  775,  772,  810,  761,  779,
+      780,  766,  774,  783,  763,  778,  785,  827,  828, 1817,
+      783,  830,  831,  784,  794,  796,  780,  781,  788,  797,
+      840,  789,  788,  805,  844,  796,  800,  798,  796,  849,
+      850,  802,  852,  848,  808, 1817,  813,  806,  797,  816,
+      810,  805,  815,  812,  817,  813,  825, 1817,  809, 1817,
+     1817,  810,  868,  809,  828,  829,  826,  812,  833,  815,
+      820,  827,  860,  851,  823,  882,  827,  829,  846,  844,
+      836,  840, 1817, 1817,  850,  848,  834,  835,  893,  848,
+
+      853,  840,  851,  843,  849,  845,  863,  865,  866, 1817,
+     1817,  864, 1817,  866, 1817,  851,  853,  872,  862,  912,
+      867,  909,  875, 1817,  867,  859,  918, 1817,  919,  868,
+      875,  917, 1817, 1817,  877, 1817,  868,  868,  871,  885,
+      890,  873,  884,  931,  890,  891,  892,  930,  888,  937,
+      938, 1817,  887,  940,  941,  883,  943,  904,  888,  900,
+      890,  920,  949,  909, 1817,  951,  900,  915,  902,  898,
+      914,  919,  907,  959,  918, 1817,  920,  919,  921,  914,
+      923,  924,  921,  911,  914,  914,  971,  920,  973,  974,
+      919,  977, 1817,  915,  930,  923,  981,  936, 1817, 1817,
+
+      932,  942,  927,  945,  931,  990,  991,  937,  948,  995,
+      954, 1817,  946,  946,  948,  950, 1001,  946, 1817, 1817,
+      948, 1817, 1817,  962, 1817,  956, 1006,  957, 1008,  990,
+     1817,  968, 1817,  955,  963,  957,  956,  959,  959,  960,
+     1018, 1817,  963, 1020,  975,  966,  981,  981,  984,  984,
+      981, 1023,  987, 1817,  979, 1817, 1817,  989, 1817,  991,
+      992,  989, 1031, 1817,  982,  982,  988,  987,  999,  999,
+     1817, 1817, 1038,  987, 1817, 1004,  989,  989,  991,  997,
+     1817, 1050, 1003, 1052, 1015, 1817, 1012, 1817, 1031, 1051,
+     1057, 1058, 1017, 1003, 1061, 1062, 1017, 1817, 1064, 1817,
+
+     1004, 1061, 1026, 1022, 1064, 1014, 1019, 1017, 1074, 1032,
+     1076, 1077, 1040, 1029, 1023, 1039, 1083, 1027, 1044, 1029,
+     1044, 1028, 1084, 1085, 1086, 1035, 1088, 1053, 1817, 1039,
+     1817, 1050, 1097, 1069, 1056, 1817, 1817, 1044, 1101, 1817,
+     1817, 1050, 1817, 1103, 1051, 1100, 1045, 1050, 1109, 1059,
+     1069, 1070, 1817, 1113, 1068, 1817, 1817, 1059, 1074, 1062,
+     1077, 1817, 1114, 1082, 1075, 1076, 1085, 1067, 1073, 1076,
+     1128, 1089, 1089, 1132, 1083, 1817, 1134, 1081, 1136, 1817,
+     1086, 1817, 1089, 1084, 1083, 1141, 1096, 1817, 1138, 1091,
+     1088, 1817, 1102, 1105, 1148, 1103, 1150, 1093, 1095, 1103,
+
+     1093, 1109, 1110, 1104, 1120, 1817, 1110, 1160, 1817, 1156,
+     1817, 1121, 1817, 1158, 1122, 1113, 1120, 1817, 1117, 1122,
+     1120, 1170, 1171, 1116, 1817, 1131, 1817, 1121, 1133, 1134,
+     1177, 1121, 1129, 1123, 1131, 1144, 1817, 1143, 1133, 1132,
+     1135, 1147, 1138, 1147, 1149, 1153, 1817, 1817, 1192, 1137,
+     1153, 1195, 1196, 1817, 1192, 1156, 1153, 1158, 1145, 1140,
+     1203, 1162, 1205, 1164, 1165, 1208, 1167, 1170, 1817, 1211,
+     1174, 1817, 1817, 1156, 1214, 1163, 1216, 1161, 1178, 1817,
+     1164, 1817, 1164, 1166, 1817, 1171, 1181, 1817, 1167, 1179,
+     1817, 1175, 1817, 1185, 1179, 1183, 1174, 1226, 1175, 1183,
+
+     1192, 1185, 1180, 1181, 1196, 1187, 1194, 1181, 1196, 1201,
+     1244, 1203, 1246, 1247, 1192, 1208, 1199, 1213, 1209, 1202,
+     1817, 1254, 1817, 1817, 1255, 1256, 1213, 1212, 1213, 1203,
+     1817, 1817, 1817, 1261, 1205, 1221, 1264, 1817, 1260, 1211,
+     1817, 1210, 1212, 1223, 1270, 1221, 1817, 1230, 1273, 1817,
+     1817, 1279, 1284, 1289, 1294, 1299, 1304, 1309, 1312, 1286,
+     1291, 1293, 1306
     } ;
 
-static const flex_int16_t yy_def[1438] =
+static const flex_int16_t yy_def[1464] =
     {   0,
-     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,
+     1452, 1452, 1453, 1453, 1452, 1452, 1452, 1452, 1452, 1452,
+     1451, 1451, 1451, 1451, 1451, 1454, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1455,
+     1451, 1451, 1451, 1456,   15, 1451,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1457,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       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,
+       45,   45,   45,   45,   45,   45,   45,   45, 1454, 1451,
+     1451, 1451, 1451, 1451, 1451, 1458, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1455, 1451, 1456,
 
-     1425, 1425,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1433,   45, 1431,   45,   45,
+     1451, 1451,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1459,   45, 1457,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   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,
+       45,   45,   45,   45,   45,   45,   45, 1458, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1460,   45,   45,   45,
+     1451,   45,   45, 1451,   45,   45,   45,   45,   45,   45,
 
-       45, 1433, 1425, 1431,   45,   45,   45,   45,   45,   45,
+       45, 1459, 1451, 1457,   45,   45,   45,   45,   45,   45,
        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,   45,   45,   45,   45,
+       45,   45,   45,   45, 1451,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   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,
-     1425, 1425, 1425, 1425, 1425, 1425, 1435,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1461,   45,   45,   45,
 
-       45,   45, 1425,   45,   45, 1425,   45, 1425,   45, 1431,
-     1425,   45,   45,   45,   45,   45,   45,   45, 1425,   45,
+       45,   45, 1451,   45,   45, 1451,   45, 1451,   45, 1457,
+     1451,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   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,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   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,
-
-     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,   45,   45, 1425,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1425,   45, 1425,
+
+     1451, 1451, 1451, 1462,   45,   45,   45,   45,   45,   45,
+     1451,   45,   45, 1451,   45, 1457,   45,   45,   45, 1451,
+       45,   45,   45,   45,   45,   45, 1451,   45,   45,   45,
+       45,   45,   45, 1451,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1451,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1451,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
+       45, 1451,   45,   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, 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, 1451,
+     1451, 1451,   45, 1451,   45,   45, 1451, 1463,   45,   45,
+     1451, 1451,   45, 1451,   45, 1451,   45,   45,   45, 1451,
        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, 1451,
+       45,   45,   45,   45,   45,   45,   45,   45, 1451,   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, 1451,   45,   45, 1451,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1451,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
 
-       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, 1451,   45,   45,   45,   45,   45,   45, 1451,
+     1451,   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,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1451,   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, 1451,   45,
+       45,   45,   45,   45,   45, 1451,   45,   45,   45,   45,
+       45,   45,   45,   45, 1451,   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, 1425,   45,
+       45,   45,   45,   45,   45,   45,   45, 1451,   45,   45,
+       45,   45,   45,   45,   45,   45, 1451,   45,   45,   45,
+       45,   45, 1451,   45,   45,   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,
+     1451,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1451, 1451,   45,   45,
+       45,   45, 1451, 1451,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1451,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   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, 1425,   45,   45,   45,
 
-       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, 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, 1451,   45,   45,   45,   45,   45,   45,
+     1451,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1451,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1451,   45,
+       45,   45,   45,   45,   45, 1451,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1451, 1451,   45,   45,   45, 1451,   45,   45,
+       45, 1451,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
        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, 1425,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1451,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
        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, 1425,   45, 1425, 1425,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1425, 1425,   45,
+       45,   45,   45,   45,   45, 1451,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1451,   45, 1451,
+     1451,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1425, 1425,   45, 1425,   45, 1425,
+       45,   45, 1451, 1451,   45,   45,   45,   45,   45,   45,
 
-       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,   45,   45,   45, 1425,   45,
-       45,   45,   45,   45,   45,   45,   45, 1425,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1451,
+     1451,   45, 1451,   45, 1451,   45,   45,   45,   45,   45,
+       45,   45,   45, 1451,   45,   45,   45, 1451,   45,   45,
+       45,   45, 1451, 1451,   45, 1451,   45,   45,   45,   45,
        45,   45,   45,   45,   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, 1451,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1451,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1451,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1451,   45,   45,   45,   45,   45, 1451, 1451,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1451,   45,   45,   45,   45,   45,   45, 1451, 1451,
+       45, 1451, 1451,   45, 1451,   45,   45,   45,   45,   45,
+     1451,   45, 1451,   45,   45,   45,   45,   45,   45,   45,
+       45, 1451,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1451,   45, 1451, 1451,   45, 1451,   45,
+       45,   45,   45, 1451,   45,   45,   45,   45,   45,   45,
+     1451, 1451,   45,   45, 1451,   45,   45,   45,   45,   45,
+     1451,   45,   45,   45,   45, 1451,   45, 1451,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1451,   45, 1451,
 
-       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, 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,
+       45,   45,   45,   45,   45,   45,   45,   45, 1451,   45,
+     1451,   45,   45,   45,   45, 1451, 1451,   45,   45, 1451,
+     1451,   45, 1451,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1451,   45,   45, 1451, 1451,   45,   45,   45,
+       45, 1451,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1451,   45,   45,   45, 1451,
+       45, 1451,   45,   45,   45,   45,   45, 1451,   45,   45,
+       45, 1451,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 1451,   45,   45, 1451,   45,
+     1451,   45, 1451,   45,   45,   45,   45, 1451,   45,   45,
+       45,   45,   45,   45, 1451,   45, 1451,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1451,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1451, 1451,   45,   45,
+       45,   45,   45, 1451,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1451,   45,
+       45, 1451, 1451,   45,   45,   45,   45,   45,   45, 1451,
+       45, 1451,   45,   45, 1451,   45,   45, 1451,   45,   45,
+     1451,   45, 1451,   45,   45,   45,   45,   45,   45,   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, 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
+     1451,   45, 1451, 1451,   45,   45,   45,   45,   45,   45,
+     1451, 1451, 1451,   45,   45,   45,   45, 1451,   45,   45,
+     1451,   45,   45,   45,   45,   45, 1451,   45,   45, 1451,
+        0, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451
     } ;
 
-static const flex_int16_t yy_nxt[1863] =
+static const flex_int16_t yy_nxt[1889] =
     {   0,
-     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,
+     1451,   13,   14,   13, 1451,   15,   16, 1451,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  363,
+       37,   14,   37,   86,   25,   26,   38, 1451, 1451,   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,  820,   13,
-       14,   13,   33,   40,  115,   91,   92,  363,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40,  824,   13,
+       14,   13,   33,   40,  115,   91,   92,  364,   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,  138,   88,  821,   88,  822,   32,   89,   89,   89,
-      131,  139,   33,  140,  378,   82,  107,  379,  111,   34,
+      130,  138,   88,  825,   88,  826,   32,   89,   89,   89,
+      131,  139,   33,  140,  379,   82,  107,  380,  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,
@@ -1257,105 +1266,105 @@ static const flex_int16_t yy_nxt[1863] =
        45,   45,   80,  103,   81,   81,   81,   80,  109,   83,
        83,   83,  101,  114,   80,   82,   83,   83,   83,  121,
        82,  133,  122,  112,  123,  306,  124,   82,  134,  103,
-      393,  103,  101,  113,  135,  823,  114,  110,   82,  136,
+      394,  103,  101,  113,  135,  827,  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,
+      245,  179,  148,  828,   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,  429,  111,   45,  126,  430,  181,  127,
+       89,   45,  125,  431,  111,   45,  126,  432,  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,
+      157,  155,  156,  158,  159,  165,  181,  424,  113,  166,
+      180,  193,  167,  224,  160,  179,  184,  161,  829,  168,
+      169,  171,  114,  172,  425,  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,
+      209,  199,  201,  200,  405,  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,
+      221,  830,  222,  197,  100,  201,  198,  195,  100,  199,
+      200,  227,  100,  405,  188,  230,  250,  831,  231,  223,
       100,  266,  232,  198,  100,  290,  100,  187,  204,  204,
-      204,  205,  351,  236,  292,  204,  204,  204,  204,  204,
+      204,  205,  832,  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,
+      461,  462,  413,  317,  305,  401,  401,  295,  405,  298,
+      352,  318,  407,  408,  305,  410,  301,  319,  307,  413,
+      833,  409,  312,  309,  310,  310,  310,  359,  401,  402,
+      413,  310,  310,  310,  310,  310,  310,  417,  410,  468,
+      484,  519,  492,  519,  485,  480,  493,  470,  497,  469,
+      508,  676,  498,  509,  310,  310,  310,  310,  310,  310,
+      527,  353,  528,  446,  354,  416,  416,  416,  447,  519,
+      834,  529,  416,  416,  416,  416,  416,  416,  514,  550,
+      600,  625,  626,  515,  551,  601,  621,  527,  677,  528,
+
+      718,  627,  660,  661,  708,  416,  416,  416,  416,  416,
+      416,  481,  685,  719,  709,  720,  761,  686,  625,  762,
+      626,  724,  725,  835,  448,  721,  795,  836,  718,  449,
+       45,   45,   45,  796,  837,  838,  719,   45,   45,   45,
+       45,   45,   45,  802,  797,  813,  841,  839,  842,  803,
+      843,  798,  840,  844,  687,  799,  845,  846,  847,  848,
+       45,   45,   45,   45,   45,   45,  849,  850,  851,  852,
+      853,  854,  855,  813,  856,  857,  859,  860,  861,  858,
       862,  863,  864,  865,  866,  867,  868,  869,  870,  871,
-      872,  873,  874,  875,  876,  877,  879,  880,  881,  882,
+      872,  873,  874,  875,  876,  877,  878,  879,  880,  881,
 
-      883,  884,  885,  886,  887,  888,  889,  878,  890,  891,
-      892,  893,  894,  895,  896,  897,  898,  899,  900,  901,
+      882,  883,  884,  885,  886,  888,  889,  890,  891,  892,
+      893,  894,  895,  896,  897,  898,  887,  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,
+      912,  913,  914,  915,  916,  917,  918,  919,  920,  921,
+      922,  923,  901,  924,  925,  900,  926,  927,  928,  929,
+      930,  933,  934,  935,  936,  931,  937,  938,  939,  940,
+      941,  942,  943,  944,  945,  946,  947,  948,  950,  951,
+      952,  953,  954,  955,  956,  957,  958,  959,  949,  960,
       961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
-      972,  971,  973,  974,  920,  975,  976,  977,  978,  979,
+      971,  972,  973,  974,  975,  976,  977,  978,  979,  980,
 
-      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,
+      981,  982,  983,  985,  984,  986,  932,  987,  988,  989,
+      990,  991,  992,  993,  994,  995,  996,  997,  998,  999,
+     1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
+      983,  984, 1010, 1011, 1012, 1013, 1015, 1017, 1018, 1019,
+     1014, 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,
+     1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
+     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1016, 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,
-     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,
+     1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
+
+     1078, 1079, 1080, 1081, 1082, 1083, 1084, 1062, 1085, 1086,
+     1087, 1088, 1089, 1063, 1090, 1091, 1092, 1093, 1094, 1095,
+     1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105,
+     1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115,
+     1116, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126,
+     1127, 1128, 1129, 1130, 1131, 1132, 1133, 1135, 1136, 1137,
+     1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147,
+     1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
+     1158, 1130, 1159, 1160, 1161, 1163, 1164, 1165, 1166, 1167,
+     1168, 1117, 1162, 1169, 1170, 1171, 1172, 1173, 1134, 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,
+     1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194,
+     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
+     1205, 1206, 1207, 1208, 1209, 1210, 1211, 1189, 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,
+     1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233,
+     1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
      1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
-     1254, 1255, 1256, 1257, 1259, 1260, 1261, 1262, 1258, 1263,
+     1255, 1256, 1257, 1258, 1259, 1260, 1261, 1234, 1262, 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,
+     1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1284,
+     1285, 1286, 1287, 1283, 1288, 1289, 1290, 1291, 1292, 1293,
+     1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
+     1304, 1277, 1305, 1306, 1307, 1254, 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,
@@ -1368,84 +1377,86 @@ static const flex_int16_t yy_nxt[1863] =
      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,  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
+     1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
+     1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441,
+     1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,   12,
+       12,   12,   12,   12,   36,   36,   36,   36,   36,   79,
+      297,   79,   79,   79,   98,  404,   98,  518,   98,  100,
+
+      100,  100,  100,  100,  116,  116,  116,  116,  116,  178,
+      100,  178,  178,  178,  202,  202,  202,  823,  822,  821,
+      820,  819,  818,  817,  816,  815,  814,  812,  811,  810,
+      809,  808,  807,  806,  805,  804,  801,  800,  794,  793,
+      792,  791,  790,  789,  788,  787,  786,  785,  784,  783,
+      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
+      772,  771,  770,  769,  768,  767,  766,  765,  764,  763,
+      760,  759,  758,  757,  756,  755,  754,  753,  752,  751,
+      750,  749,  748,  747,  746,  745,  744,  743,  742,  741,
+      740,  739,  738,  737,  736,  735,  734,  733,  732,  731,
+
+      730,  729,  728,  727,  726,  723,  722,  717,  716,  715,
+      714,  713,  712,  711,  710,  707,  706,  705,  704,  703,
+      702,  701,  700,  699,  698,  697,  696,  695,  694,  693,
+      692,  691,  690,  689,  688,  684,  683,  682,  681,  680,
+      679,  678,  675,  674,  673,  672,  671,  670,  669,  668,
+      667,  666,  665,  664,  663,  662,  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,  624,  623,
+      622,  621,  620,  619,  618,  617,  616,  615,  614,  613,
+
+      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
+      602,  599,  598,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
+      570,  569,  568,  567,  566,  565,  564,  563,  562,  561,
+      560,  559,  558,  557,  556,  555,  554,  553,  552,  549,
+      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
+      538,  537,  536,  535,  534,  533,  532,  531,  530,  526,
+      525,  524,  523,  522,  521,  520,  517,  516,  513,  512,
+      511,  510,  507,  506,  505,  504,  503,  502,  501,  500,
+
+      499,  496,  495,  494,  491,  490,  489,  488,  487,  486,
+      483,  482,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  467,  466,  465,  464,  463,  460,  459,  458,  457,
+      456,  455,  454,  453,  452,  451,  450,  445,  444,  443,
+      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
+      430,  429,  428,  427,  426,  423,  422,  421,  420,  419,
+      418,  415,  414,  412,  411,  406,  403,  400,  399,  398,
+      397,  396,  395,  393,  392,  391,  390,  389,  388,  387,
+      386,  385,  384,  383,  382,  381,  378,  377,  376,  375,
+      374,  373,  372,  371,  370,  369,  368,  367,  366,  365,
+
+      362,  361,  360,  358,  357,  356,  355,  351,  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,  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, 1451,   11, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451
     } ;
 
-static const flex_int16_t yy_chk[1863] =
+static const flex_int16_t yy_chk[1889] =
     {   0,
         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,
+        6,    6,    6,    7,    7,    7,    1,    7,  731,    8,
         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,
@@ -1453,7 +1464,7 @@ static const flex_int16_t yy_chk[1863] =
 
         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,   25,  732,   25,  733,    2,   25,   25,   25,
        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,
@@ -1466,20 +1477,20 @@ static const flex_int16_t yy_chk[1863] =
        15,   15,   17,   47,   17,   17,   17,   19,   53,   19,
        19,   19,   44,   56,   22,   17,   22,   22,   22,   60,
        19,   64,   60,   55,   60,  283,   60,   22,   64,   47,
-      283,   59,  100,   55,   65,  733,   56,   53,   17,   65,
+      283,   59,  100,   55,   65,  734,   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,
+      146,   90,   69,  735,   45,   63,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   58,   88,   88,
-       88,   58,   61,  325,   70,   58,   61,  325,   92,   61,
+       88,   58,   61,  326,   70,   58,   61,  326,   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,  736,   76,   75,
-       91,  108,   75,  131,   72,   93,   95,   72,  211,   75,
-       75,   76,   77,   76,  211,   75,  131,   76,   80,   80,
+       72,   71,   71,   72,   72,   75,   92,  319,   76,   75,
+       91,  108,   75,  131,   72,   93,   95,   72,  736,   75,
+       75,   76,   77,   76,  319,   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,
@@ -1490,161 +1501,163 @@ static const flex_int16_t yy_chk[1863] =
       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,  119,  739,  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
+      352,  352,  305,  211,  250,  290,  293,  184,  312,  188,
+      245,  211,  300,  300,  197,  301,  192,  211,  199,  359,
+      740,  300,  206,  201,  204,  204,  204,  250,  290,  293,
+      305,  204,  204,  204,  204,  204,  204,  312,  301,  358,
+      373,  405,  380,  417,  373,  370,  380,  359,  384,  358,
+      394,  582,  384,  394,  204,  204,  204,  204,  204,  204,
+      415,  245,  415,  340,  245,  310,  310,  310,  340,  405,
+      742,  417,  310,  310,  310,  310,  310,  310,  399,  441,
+      494,  527,  528,  399,  441,  494,  529,  415,  582,  415,
+
+      625,  529,  565,  565,  614,  310,  310,  310,  310,  310,
+      310,  370,  591,  626,  614,  627,  667,  591,  527,  667,
+      528,  630,  630,  743,  340,  627,  703,  744,  625,  340,
+      416,  416,  416,  703,  745,  746,  626,  416,  416,  416,
+      416,  416,  416,  707,  704,  719,  748,  747,  749,  707,
+      750,  704,  747,  751,  591,  704,  752,  753,  754,  755,
+      416,  416,  416,  416,  416,  416,  756,  759,  760,  761,
+      762,  765,  766,  719,  767,  768,  769,  770,  771,  768,
+      772,  773,  774,  776,  777,  778,  779,  780,  781,  782,
+      783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
+
+      793,  794,  795,  796,  797,  798,  799,  800,  801,  802,
+      803,  805,  806,  807,  808,  809,  797,  810,  812,  813,
+      814,  815,  816,  817,  818,  819,  820,  821,  822,  823,
+      824,  825,  826,  827,  829,  830,  831,  832,  833,  834,
+      835,  836,  813,  837,  838,  812,  840,  841,  842,  843,
+      844,  845,  847,  848,  849,  844,  850,  851,  852,  853,
+      854,  855,  856,  857,  858,  859,  860,  861,  862,  865,
+      866,  867,  869,  870,  871,  873,  874,  875,  861,  876,
+      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
+      887,  888,  889,  891,  892,  893,  894,  895,  896,  897,
+
+      898,  899,  900,  902,  901,  903,  844,  904,  905,  906,
+      907,  908,  909,  910,  911,  912,  913,  915,  916,  917,
+      918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
+      900,  901,  928,  929,  931,  932,  933,  934,  935,  936,
+      932,  937,  938,  939,  940,  941,  942,  943,  944,  945,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      957,  958,  959,  960,  961,  962,  963,  964,  965,  966,
+      967,  969,  972,  973,  974,  975,  976,  977,  933,  978,
+      979,  980,  981,  982,  983,  984,  985,  986,  987,  988,
+      989,  990,  991,  992,  995,  996,  997,  998,  999, 1000,
+
+     1001, 1002, 1003, 1004, 1005, 1006, 1007,  983, 1008, 1009,
+     1012, 1014, 1016,  984, 1017, 1018, 1019, 1020, 1021, 1022,
+     1023, 1025, 1026, 1027, 1029, 1030, 1031, 1032, 1035, 1037,
+     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
+     1048, 1049, 1050, 1051, 1053, 1054, 1055, 1056, 1057, 1058,
+     1059, 1060, 1061, 1062, 1063, 1064, 1066, 1067, 1068, 1069,
+     1070, 1071, 1072, 1073, 1074, 1075, 1077, 1078, 1079, 1080,
+     1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
+     1091, 1062, 1092, 1094, 1095, 1096, 1097, 1098, 1101, 1102,
+     1103, 1048, 1095, 1104, 1105, 1106, 1107, 1108, 1066, 1109,
+
+     1110, 1111, 1113, 1114, 1115, 1116, 1117, 1118, 1121, 1124,
+     1126, 1127, 1128, 1129, 1130, 1132, 1134, 1135, 1136, 1137,
+     1138, 1139, 1140, 1141, 1143, 1144, 1145, 1146, 1147, 1148,
+     1149, 1150, 1151, 1152, 1153, 1155, 1158, 1130, 1160, 1161,
+     1162, 1163, 1165, 1166, 1167, 1168, 1169, 1170, 1173, 1174,
+     1176, 1177, 1178, 1179, 1180, 1182, 1183, 1184, 1185, 1187,
+     1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1199,
+     1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1208, 1209,
+     1210, 1211, 1212, 1213, 1214, 1215, 1216, 1189, 1217, 1218,
+     1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228,
+
+     1230, 1232, 1233, 1234, 1235, 1238, 1239, 1242, 1244, 1245,
+     1246, 1247, 1248, 1244, 1249, 1250, 1251, 1252, 1254, 1255,
+     1258, 1259, 1260, 1261, 1263, 1264, 1265, 1266, 1267, 1268,
+     1269, 1234, 1270, 1271, 1272, 1209, 1273, 1274, 1275, 1277,
+     1278, 1279, 1281, 1283, 1284, 1285, 1286, 1287, 1289, 1290,
+     1291, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301,
+     1302, 1303, 1304, 1305, 1307, 1308, 1310, 1312, 1314, 1315,
+     1316, 1317, 1319, 1320, 1321, 1322, 1323, 1324, 1326, 1328,
+     1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1338, 1339,
+     1340, 1341, 1342, 1343, 1344, 1345, 1346, 1349, 1350, 1351,
+
+     1352, 1353, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+     1363, 1364, 1365, 1366, 1367, 1368, 1370, 1371, 1374, 1375,
+     1376, 1377, 1378, 1379, 1381, 1383, 1384, 1386, 1387, 1389,
+     1390, 1392, 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, 1422,
+     1425, 1426, 1427, 1428, 1429, 1430, 1434, 1435, 1436, 1437,
+     1439, 1440, 1442, 1443, 1444, 1445, 1446, 1448, 1449, 1452,
+     1452, 1452, 1452, 1452, 1453, 1453, 1453, 1453, 1453, 1454,
+     1460, 1454, 1454, 1454, 1455, 1461, 1455, 1462, 1455, 1456,
+
+     1456, 1456, 1456, 1456, 1457, 1457, 1457, 1457, 1457, 1458,
+     1463, 1458, 1458, 1458, 1459, 1459, 1459,  730,  729,  728,
+      727,  726,  725,  724,  722,  721,  720,  718,  716,  715,
+      714,  713,  712,  711,  710,  709,  706,  705,  702,  701,
+      700,  699,  698,  697,  696,  695,  694,  693,  692,  691,
+      690,  689,  688,  687,  686,  684,  683,  682,  681,  680,
+      679,  678,  677,  675,  674,  673,  672,  671,  670,  668,
+      666,  665,  664,  663,  662,  661,  660,  659,  658,  657,
+      656,  655,  654,  653,  652,  651,  650,  648,  647,  646,
+      645,  644,  643,  642,  641,  640,  639,  638,  637,  636,
+
+      635,  634,  633,  632,  631,  629,  628,  624,  623,  622,
+      619,  618,  617,  616,  615,  612,  611,  610,  609,  608,
+      607,  606,  605,  604,  603,  602,  601,  599,  598,  597,
+      596,  595,  594,  593,  592,  590,  589,  587,  586,  585,
+      584,  583,  581,  580,  579,  577,  576,  574,  573,  572,
+      571,  570,  569,  568,  567,  566,  564,  563,  562,  561,
+      560,  558,  557,  556,  555,  554,  553,  552,  551,  549,
+      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
+      538,  537,  536,  535,  534,  533,  532,  531,  525,  523,
+      520,  519,  517,  516,  515,  513,  509,  508,  507,  506,
+
+      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
+      495,  493,  492,  491,  490,  489,  488,  487,  486,  485,
+      484,  483,  481,  479,  478,  477,  476,  475,  474,  473,
+      472,  471,  470,  469,  468,  466,  465,  464,  463,  462,
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  445,  444,  443,  442,  440,
+      439,  438,  437,  436,  435,  433,  432,  431,  430,  429,
+      428,  426,  425,  424,  423,  422,  421,  419,  418,  413,
+      412,  410,  409,  408,  407,  406,  403,  400,  398,  397,
+      396,  395,  393,  392,  391,  390,  389,  388,  387,  386,
+
+      385,  383,  382,  381,  379,  378,  377,  376,  375,  374,
+      372,  371,  369,  368,  367,  366,  365,  364,  363,  362,
+      361,  357,  356,  355,  354,  353,  351,  350,  349,  348,
+      347,  346,  345,  344,  343,  342,  341,  339,  338,  337,
+      336,  335,  334,  333,  332,  331,  330,  329,  328,  327,
+      325,  324,  323,  322,  321,  318,  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, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+     1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1653,27 +1666,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[176] =
+static const flex_int16_t yy_rule_linenum[179] =
     {   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,  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
+      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, 1105, 1115, 1124, 1133, 1142, 1151, 1160, 1169,
+     1178, 1187, 1196, 1206, 1215, 1224, 1234, 1246, 1259, 1268,
+     1277, 1287, 1297, 1306, 1317, 1327, 1336, 1346, 1356, 1365,
+     1374, 1383, 1392, 1402, 1411, 1421, 1430, 1439, 1448, 1457,
+     1466, 1475, 1484, 1493, 1502, 1511, 1520, 1529, 1538, 1547,
+     1556, 1565, 1574, 1583, 1592, 1601, 1610, 1619, 1628, 1637,
+     1647, 1746, 1751, 1756, 1761, 1762, 1763, 1764, 1765, 1766,
+     1768, 1786, 1799, 1804, 1808, 1810, 1812, 1814
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1726,7 +1739,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1729 "dhcp6_lexer.cc"
+#line 1743 "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
@@ -1752,8 +1765,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 1755 "dhcp6_lexer.cc"
-#line 1756 "dhcp6_lexer.cc"
+#line 1769 "dhcp6_lexer.cc"
+#line 1770 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2083,7 +2096,7 @@ YY_DECL
     }
 
 
-#line 2086 "dhcp6_lexer.cc"
+#line 2100 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2112,13 +2125,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 >= 1426 )
+                               if ( yy_current_state >= 1452 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1425 );
+               while ( yy_current_state != 1451 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2137,13 +2150,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 < 176 )
+                       else if ( yy_act < 179 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 176 )
+                       else if ( yy_act == 179 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 177 )
+                       else if ( yy_act == 180 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2679,6 +2692,30 @@ 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:
@@ -2688,24 +2725,25 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 50:
 YY_RULE_SETUP
-#line 524 "dhcp6_lexer.ll"
+#line 543 "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 49:
+case 51:
 YY_RULE_SETUP
-#line 536 "dhcp6_lexer.ll"
+#line 556 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2715,9 +2753,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 52:
 YY_RULE_SETUP
-#line 545 "dhcp6_lexer.ll"
+#line 565 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2727,9 +2765,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 53:
 YY_RULE_SETUP
-#line 554 "dhcp6_lexer.ll"
+#line 574 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2739,9 +2777,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 54:
 YY_RULE_SETUP
-#line 563 "dhcp6_lexer.ll"
+#line 583 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2751,192 +2789,206 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 55:
 YY_RULE_SETUP
-#line 572 "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_USER(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("user", driver.loc_);
     }
 }
        YY_BREAK
-case 54:
+case 56:
 YY_RULE_SETUP
-#line 582 "dhcp6_lexer.ll"
+#line 603 "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 55:
+case 57:
 YY_RULE_SETUP
-#line 592 "dhcp6_lexer.ll"
+#line 614 "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 56:
+case 58:
 YY_RULE_SETUP
-#line 602 "dhcp6_lexer.ll"
+#line 625 "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 57:
+case 59:
 YY_RULE_SETUP
-#line 612 "dhcp6_lexer.ll"
+#line 636 "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 58:
+case 60:
 YY_RULE_SETUP
-#line 623 "dhcp6_lexer.ll"
+#line 648 "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 59:
+case 61:
 YY_RULE_SETUP
-#line 633 "dhcp6_lexer.ll"
+#line 659 "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 60:
+case 62:
 YY_RULE_SETUP
-#line 643 "dhcp6_lexer.ll"
+#line 670 "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 61:
+case 63:
 YY_RULE_SETUP
-#line 653 "dhcp6_lexer.ll"
+#line 681 "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 62:
+case 64:
 YY_RULE_SETUP
-#line 663 "dhcp6_lexer.ll"
+#line 692 "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 63:
+case 65:
 YY_RULE_SETUP
-#line 673 "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_TCP_KEEPALIVE(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("tcp-keepalive", driver.loc_);
     }
 }
        YY_BREAK
-case 64:
+case 66:
 YY_RULE_SETUP
-#line 683 "dhcp6_lexer.ll"
+#line 714 "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 65:
+case 67:
 YY_RULE_SETUP
-#line 693 "dhcp6_lexer.ll"
+#line 725 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_CONTACT_POINTS(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("contact-points", driver.loc_);
     }
 }
        YY_BREAK
-case 66:
+case 68:
 YY_RULE_SETUP
-#line 703 "dhcp6_lexer.ll"
+#line 736 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
         return isc::dhcp::Dhcp6Parser::make_MAX_RECONNECT_TRIES(driver.loc_);
     default:
         return isc::dhcp::Dhcp6Parser::make_STRING("max-reconnect-tries", driver.loc_);
     }
 }
        YY_BREAK
-case 67:
+case 69:
 YY_RULE_SETUP
-#line 713 "dhcp6_lexer.ll"
+#line 747 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2948,9 +3000,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 70:
 YY_RULE_SETUP
-#line 724 "dhcp6_lexer.ll"
+#line 758 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2962,9 +3014,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 71:
 YY_RULE_SETUP
-#line 735 "dhcp6_lexer.ll"
+#line 769 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2976,9 +3028,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 746 "dhcp6_lexer.ll"
+#line 780 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2990,9 +3042,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 757 "dhcp6_lexer.ll"
+#line 791 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3002,9 +3054,21 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 766 "dhcp6_lexer.ll"
+#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:
+YY_RULE_SETUP
+#line 809 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3015,9 +3079,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 76:
 YY_RULE_SETUP
-#line 776 "dhcp6_lexer.ll"
+#line 819 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3027,9 +3091,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 77:
 YY_RULE_SETUP
-#line 785 "dhcp6_lexer.ll"
+#line 828 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3039,9 +3103,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 78:
 YY_RULE_SETUP
-#line 794 "dhcp6_lexer.ll"
+#line 837 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3057,9 +3121,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 79:
 YY_RULE_SETUP
-#line 809 "dhcp6_lexer.ll"
+#line 852 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3069,15 +3133,16 @@ 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 77:
+case 80:
 YY_RULE_SETUP
-#line 824 "dhcp6_lexer.ll"
+#line 868 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3087,9 +3152,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 81:
 YY_RULE_SETUP
-#line 833 "dhcp6_lexer.ll"
+#line 877 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3099,9 +3164,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 82:
 YY_RULE_SETUP
-#line 842 "dhcp6_lexer.ll"
+#line 886 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3111,9 +3176,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 83:
 YY_RULE_SETUP
-#line 851 "dhcp6_lexer.ll"
+#line 895 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3123,9 +3188,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 84:
 YY_RULE_SETUP
-#line 860 "dhcp6_lexer.ll"
+#line 904 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3135,9 +3200,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 85:
 YY_RULE_SETUP
-#line 869 "dhcp6_lexer.ll"
+#line 913 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3147,9 +3212,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 86:
 YY_RULE_SETUP
-#line 878 "dhcp6_lexer.ll"
+#line 922 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3159,9 +3224,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 87:
 YY_RULE_SETUP
-#line 887 "dhcp6_lexer.ll"
+#line 931 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3171,9 +3236,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 88:
 YY_RULE_SETUP
-#line 896 "dhcp6_lexer.ll"
+#line 940 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3183,9 +3248,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 89:
 YY_RULE_SETUP
-#line 905 "dhcp6_lexer.ll"
+#line 949 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3195,9 +3260,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 90:
 YY_RULE_SETUP
-#line 914 "dhcp6_lexer.ll"
+#line 958 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3220,9 +3285,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 91:
 YY_RULE_SETUP
-#line 936 "dhcp6_lexer.ll"
+#line 980 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3245,9 +3310,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 92:
 YY_RULE_SETUP
-#line 958 "dhcp6_lexer.ll"
+#line 1002 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3257,9 +3322,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 93:
 YY_RULE_SETUP
-#line 967 "dhcp6_lexer.ll"
+#line 1011 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3270,9 +3335,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 94:
 YY_RULE_SETUP
-#line 977 "dhcp6_lexer.ll"
+#line 1021 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3283,9 +3348,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 95:
 YY_RULE_SETUP
-#line 987 "dhcp6_lexer.ll"
+#line 1031 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3295,9 +3360,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 96:
 YY_RULE_SETUP
-#line 996 "dhcp6_lexer.ll"
+#line 1040 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3308,9 +3373,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 97:
 YY_RULE_SETUP
-#line 1006 "dhcp6_lexer.ll"
+#line 1050 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3321,9 +3386,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 98:
 YY_RULE_SETUP
-#line 1016 "dhcp6_lexer.ll"
+#line 1060 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3333,9 +3398,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 99:
 YY_RULE_SETUP
-#line 1025 "dhcp6_lexer.ll"
+#line 1069 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3345,9 +3410,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 100:
 YY_RULE_SETUP
-#line 1034 "dhcp6_lexer.ll"
+#line 1078 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3357,9 +3422,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 101:
 YY_RULE_SETUP
-#line 1043 "dhcp6_lexer.ll"
+#line 1087 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3369,9 +3434,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 102:
 YY_RULE_SETUP
-#line 1052 "dhcp6_lexer.ll"
+#line 1096 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3381,9 +3446,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 103:
 YY_RULE_SETUP
-#line 1061 "dhcp6_lexer.ll"
+#line 1105 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3394,9 +3459,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 104:
 YY_RULE_SETUP
-#line 1071 "dhcp6_lexer.ll"
+#line 1115 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3406,9 +3471,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 105:
 YY_RULE_SETUP
-#line 1080 "dhcp6_lexer.ll"
+#line 1124 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3418,9 +3483,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 106:
 YY_RULE_SETUP
-#line 1089 "dhcp6_lexer.ll"
+#line 1133 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3430,9 +3495,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 107:
 YY_RULE_SETUP
-#line 1098 "dhcp6_lexer.ll"
+#line 1142 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3442,9 +3507,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 108:
 YY_RULE_SETUP
-#line 1107 "dhcp6_lexer.ll"
+#line 1151 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3454,9 +3519,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 109:
 YY_RULE_SETUP
-#line 1116 "dhcp6_lexer.ll"
+#line 1160 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3466,9 +3531,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 110:
 YY_RULE_SETUP
-#line 1125 "dhcp6_lexer.ll"
+#line 1169 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3478,9 +3543,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 111:
 YY_RULE_SETUP
-#line 1134 "dhcp6_lexer.ll"
+#line 1178 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3490,9 +3555,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 112:
 YY_RULE_SETUP
-#line 1143 "dhcp6_lexer.ll"
+#line 1187 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3502,9 +3567,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 113:
 YY_RULE_SETUP
-#line 1152 "dhcp6_lexer.ll"
+#line 1196 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3514,9 +3579,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 114:
 YY_RULE_SETUP
-#line 1162 "dhcp6_lexer.ll"
+#line 1206 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3526,9 +3591,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 115:
 YY_RULE_SETUP
-#line 1171 "dhcp6_lexer.ll"
+#line 1215 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3538,9 +3603,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 116:
 YY_RULE_SETUP
-#line 1180 "dhcp6_lexer.ll"
+#line 1224 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3551,9 +3616,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 117:
 YY_RULE_SETUP
-#line 1190 "dhcp6_lexer.ll"
+#line 1234 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3566,9 +3631,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 118:
 YY_RULE_SETUP
-#line 1202 "dhcp6_lexer.ll"
+#line 1246 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3582,9 +3647,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 119:
 YY_RULE_SETUP
-#line 1215 "dhcp6_lexer.ll"
+#line 1259 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3594,9 +3659,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 120:
 YY_RULE_SETUP
-#line 1224 "dhcp6_lexer.ll"
+#line 1268 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3606,9 +3671,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 121:
 YY_RULE_SETUP
-#line 1233 "dhcp6_lexer.ll"
+#line 1277 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3619,9 +3684,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 122:
 YY_RULE_SETUP
-#line 1243 "dhcp6_lexer.ll"
+#line 1287 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3632,9 +3697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 123:
 YY_RULE_SETUP
-#line 1253 "dhcp6_lexer.ll"
+#line 1297 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3644,9 +3709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 124:
 YY_RULE_SETUP
-#line 1262 "dhcp6_lexer.ll"
+#line 1306 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3658,9 +3723,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 125:
 YY_RULE_SETUP
-#line 1273 "dhcp6_lexer.ll"
+#line 1317 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3671,9 +3736,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 126:
 YY_RULE_SETUP
-#line 1283 "dhcp6_lexer.ll"
+#line 1327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3683,9 +3748,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 127:
 YY_RULE_SETUP
-#line 1292 "dhcp6_lexer.ll"
+#line 1336 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3696,9 +3761,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 128:
 YY_RULE_SETUP
-#line 1302 "dhcp6_lexer.ll"
+#line 1346 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3709,9 +3774,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 129:
 YY_RULE_SETUP
-#line 1312 "dhcp6_lexer.ll"
+#line 1356 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3721,9 +3786,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 130:
 YY_RULE_SETUP
-#line 1321 "dhcp6_lexer.ll"
+#line 1365 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3733,9 +3798,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 131:
 YY_RULE_SETUP
-#line 1330 "dhcp6_lexer.ll"
+#line 1374 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3745,9 +3810,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 132:
 YY_RULE_SETUP
-#line 1339 "dhcp6_lexer.ll"
+#line 1383 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3757,9 +3822,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 133:
 YY_RULE_SETUP
-#line 1348 "dhcp6_lexer.ll"
+#line 1392 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3770,9 +3835,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 134:
 YY_RULE_SETUP
-#line 1358 "dhcp6_lexer.ll"
+#line 1402 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3782,9 +3847,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 135:
 YY_RULE_SETUP
-#line 1367 "dhcp6_lexer.ll"
+#line 1411 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3794,9 +3859,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 136:
 YY_RULE_SETUP
-#line 1377 "dhcp6_lexer.ll"
+#line 1421 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3806,9 +3871,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 137:
 YY_RULE_SETUP
-#line 1386 "dhcp6_lexer.ll"
+#line 1430 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3818,9 +3883,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 138:
 YY_RULE_SETUP
-#line 1395 "dhcp6_lexer.ll"
+#line 1439 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3830,9 +3895,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 139:
 YY_RULE_SETUP
-#line 1404 "dhcp6_lexer.ll"
+#line 1448 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3842,9 +3907,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 140:
 YY_RULE_SETUP
-#line 1413 "dhcp6_lexer.ll"
+#line 1457 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3854,9 +3919,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 141:
 YY_RULE_SETUP
-#line 1422 "dhcp6_lexer.ll"
+#line 1466 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3866,9 +3931,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 142:
 YY_RULE_SETUP
-#line 1431 "dhcp6_lexer.ll"
+#line 1475 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3878,9 +3943,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 143:
 YY_RULE_SETUP
-#line 1440 "dhcp6_lexer.ll"
+#line 1484 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3890,9 +3955,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 144:
 YY_RULE_SETUP
-#line 1449 "dhcp6_lexer.ll"
+#line 1493 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3902,9 +3967,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 145:
 YY_RULE_SETUP
-#line 1458 "dhcp6_lexer.ll"
+#line 1502 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3914,9 +3979,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 146:
 YY_RULE_SETUP
-#line 1467 "dhcp6_lexer.ll"
+#line 1511 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3926,9 +3991,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 147:
 YY_RULE_SETUP
-#line 1476 "dhcp6_lexer.ll"
+#line 1520 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3938,9 +4003,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 148:
 YY_RULE_SETUP
-#line 1485 "dhcp6_lexer.ll"
+#line 1529 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3950,9 +4015,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 149:
 YY_RULE_SETUP
-#line 1494 "dhcp6_lexer.ll"
+#line 1538 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3962,9 +4027,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 150:
 YY_RULE_SETUP
-#line 1503 "dhcp6_lexer.ll"
+#line 1547 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3974,9 +4039,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 151:
 YY_RULE_SETUP
-#line 1512 "dhcp6_lexer.ll"
+#line 1556 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3986,9 +4051,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 152:
 YY_RULE_SETUP
-#line 1521 "dhcp6_lexer.ll"
+#line 1565 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3998,9 +4063,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 153:
 YY_RULE_SETUP
-#line 1530 "dhcp6_lexer.ll"
+#line 1574 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4010,9 +4075,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 154:
 YY_RULE_SETUP
-#line 1539 "dhcp6_lexer.ll"
+#line 1583 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4022,9 +4087,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 155:
 YY_RULE_SETUP
-#line 1548 "dhcp6_lexer.ll"
+#line 1592 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4034,9 +4099,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 156:
 YY_RULE_SETUP
-#line 1557 "dhcp6_lexer.ll"
+#line 1601 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4046,9 +4111,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 157:
 YY_RULE_SETUP
-#line 1566 "dhcp6_lexer.ll"
+#line 1610 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4058,9 +4123,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 158:
 YY_RULE_SETUP
-#line 1575 "dhcp6_lexer.ll"
+#line 1619 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4070,9 +4135,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 159:
 YY_RULE_SETUP
-#line 1584 "dhcp6_lexer.ll"
+#line 1628 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4082,9 +4147,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 160:
 YY_RULE_SETUP
-#line 1593 "dhcp6_lexer.ll"
+#line 1637 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4094,9 +4159,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 161:
 YY_RULE_SETUP
-#line 1603 "dhcp6_lexer.ll"
+#line 1647 "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.
@@ -4196,65 +4261,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 159:
-/* rule 159 can match eol */
+case 162:
+/* rule 162 can match eol */
 YY_RULE_SETUP
-#line 1702 "dhcp6_lexer.ll"
+#line 1746 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 160:
-/* rule 160 can match eol */
+case 163:
+/* rule 163 can match eol */
 YY_RULE_SETUP
-#line 1707 "dhcp6_lexer.ll"
+#line 1751 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 161:
+case 164:
 YY_RULE_SETUP
-#line 1712 "dhcp6_lexer.ll"
+#line 1756 "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 162:
+case 165:
 YY_RULE_SETUP
-#line 1717 "dhcp6_lexer.ll"
+#line 1761 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 163:
+case 166:
 YY_RULE_SETUP
-#line 1718 "dhcp6_lexer.ll"
+#line 1762 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 164:
+case 167:
 YY_RULE_SETUP
-#line 1719 "dhcp6_lexer.ll"
+#line 1763 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 165:
+case 168:
 YY_RULE_SETUP
-#line 1720 "dhcp6_lexer.ll"
+#line 1764 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 166:
+case 169:
 YY_RULE_SETUP
-#line 1721 "dhcp6_lexer.ll"
+#line 1765 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 167:
+case 170:
 YY_RULE_SETUP
-#line 1722 "dhcp6_lexer.ll"
+#line 1766 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 168:
+case 171:
 YY_RULE_SETUP
-#line 1724 "dhcp6_lexer.ll"
+#line 1768 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4273,9 +4338,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 169:
+case 172:
 YY_RULE_SETUP
-#line 1742 "dhcp6_lexer.ll"
+#line 1786 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4289,43 +4354,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 170:
+case 173:
 YY_RULE_SETUP
-#line 1755 "dhcp6_lexer.ll"
+#line 1799 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 171:
+case 174:
 YY_RULE_SETUP
-#line 1760 "dhcp6_lexer.ll"
+#line 1804 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 172:
+case 175:
 YY_RULE_SETUP
-#line 1764 "dhcp6_lexer.ll"
+#line 1808 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 173:
+case 176:
 YY_RULE_SETUP
-#line 1766 "dhcp6_lexer.ll"
+#line 1810 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 174:
+case 177:
 YY_RULE_SETUP
-#line 1768 "dhcp6_lexer.ll"
+#line 1812 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 175:
+case 178:
 YY_RULE_SETUP
-#line 1770 "dhcp6_lexer.ll"
+#line 1814 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1772 "dhcp6_lexer.ll"
+#line 1816 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4349,12 +4414,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 176:
+case 179:
 YY_RULE_SETUP
-#line 1795 "dhcp6_lexer.ll"
+#line 1839 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4357 "dhcp6_lexer.cc"
+#line 4423 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4673,7 +4738,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 >= 1426 )
+                       if ( yy_current_state >= 1452 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4706,11 +4771,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 >= 1426 )
+               if ( yy_current_state >= 1452 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1425);
+       yy_is_jam = (yy_current_state == 1451);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5459,7 +5524,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1795 "dhcp6_lexer.ll"
+#line 1839 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index c6ac2680cfe074b6fd0c75cb7b10c1c8021dddec..a70cf101737c3fe94210c6f51c9fa261bac9f376 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 166: // "constant string"
+      case 170: // "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 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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 166: // "constant string"
+      case 170: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 166: // "constant string"
+            case 170: // "constant string"
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 186: // value
+      case 191: // value
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 190: // map_value
+      case 195: // map_value
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 240: // db_type
+      case 247: // db_type
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 329: // hr_mode
+      case 336: // hr_mode
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 465: // duid_type
+      case 472: // duid_type
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 498: // ncr_protocol_value
+      case 505: // ncr_protocol_value
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 506: // replace_client_name_value
+      case 513: // replace_client_name_value
 
-#line 243 "dhcp6_parser.yy" // lalr1.cc:636
+#line 247 "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 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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 166: // "constant string"
+      case 170: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,280 +674,286 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 252 "dhcp6_parser.yy" // lalr1.cc:859
+#line 256 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 253 "dhcp6_parser.yy" // lalr1.cc:859
+#line 257 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 254 "dhcp6_parser.yy" // lalr1.cc:859
+#line 258 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 255 "dhcp6_parser.yy" // lalr1.cc:859
+#line 259 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 260 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 257 "dhcp6_parser.yy" // lalr1.cc:859
+#line 261 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 258 "dhcp6_parser.yy" // lalr1.cc:859
+#line 262 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 259 "dhcp6_parser.yy" // lalr1.cc:859
+#line 263 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:859
+#line 264 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 261 "dhcp6_parser.yy" // lalr1.cc:859
+#line 265 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 262 "dhcp6_parser.yy" // lalr1.cc:859
+#line 266 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 263 "dhcp6_parser.yy" // lalr1.cc:859
+#line 267 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 264 "dhcp6_parser.yy" // lalr1.cc:859
+#line 268 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:859
+#line 269 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.LOGGING; }
 #line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#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 270 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  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))); }
+  case 32:
+#line 278 "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 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  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))); }
+  case 33:
+#line 279 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  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))); }
+  case 34:
+#line 280 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 34:
-#line 277 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+  case 35:
+#line 281 "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 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 35:
-#line 278 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+  case 36:
+#line 282 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 36:
-#line 279 "dhcp6_parser.yy" // lalr1.cc:859
+  case 37:
+#line 283 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 800 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 37:
-#line 282 "dhcp6_parser.yy" // lalr1.cc:859
+  case 38:
+#line 284 "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 287 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 809 "dhcp6_parser.cc" // lalr1.cc:859
+#line 815 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 38:
-#line 287 "dhcp6_parser.yy" // lalr1.cc:859
+  case 40:
+#line 292 "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 820 "dhcp6_parser.cc" // lalr1.cc:859
+#line 826 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 39:
-#line 292 "dhcp6_parser.yy" // lalr1.cc:859
+  case 41:
+#line 297 "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 830 "dhcp6_parser.cc" // lalr1.cc:859
+#line 836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 40:
-#line 298 "dhcp6_parser.yy" // lalr1.cc:859
+  case 42:
+#line 303 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 836 "dhcp6_parser.cc" // lalr1.cc:859
+#line 842 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 43:
-#line 305 "dhcp6_parser.yy" // lalr1.cc:859
+  case 45:
+#line 310 "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 845 "dhcp6_parser.cc" // lalr1.cc:859
+#line 851 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 44:
-#line 309 "dhcp6_parser.yy" // lalr1.cc:859
+  case 46:
+#line 314 "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 855 "dhcp6_parser.cc" // lalr1.cc:859
+#line 861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 45:
-#line 316 "dhcp6_parser.yy" // lalr1.cc:859
+  case 47:
+#line 321 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 864 "dhcp6_parser.cc" // lalr1.cc:859
+#line 870 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 46:
-#line 319 "dhcp6_parser.yy" // lalr1.cc:859
+  case 48:
+#line 324 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 872 "dhcp6_parser.cc" // lalr1.cc:859
+#line 878 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 49:
-#line 327 "dhcp6_parser.yy" // lalr1.cc:859
+  case 51:
+#line 332 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 881 "dhcp6_parser.cc" // lalr1.cc:859
+#line 887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 50:
-#line 331 "dhcp6_parser.yy" // lalr1.cc:859
+  case 52:
+#line 336 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 890 "dhcp6_parser.cc" // lalr1.cc:859
+#line 896 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 51:
-#line 338 "dhcp6_parser.yy" // lalr1.cc:859
+  case 53:
+#line 343 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 898 "dhcp6_parser.cc" // lalr1.cc:859
+#line 904 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 52:
-#line 340 "dhcp6_parser.yy" // lalr1.cc:859
+  case 54:
+#line 345 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 907 "dhcp6_parser.cc" // lalr1.cc:859
+#line 913 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 55:
-#line 349 "dhcp6_parser.yy" // lalr1.cc:859
+  case 57:
+#line 354 "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 916 "dhcp6_parser.cc" // lalr1.cc:859
+#line 922 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 56:
-#line 353 "dhcp6_parser.yy" // lalr1.cc:859
+  case 58:
+#line 358 "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 925 "dhcp6_parser.cc" // lalr1.cc:859
+#line 931 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 57:
-#line 364 "dhcp6_parser.yy" // lalr1.cc:859
+  case 59:
+#line 369 "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 936 "dhcp6_parser.cc" // lalr1.cc:859
+#line 942 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 58:
-#line 374 "dhcp6_parser.yy" // lalr1.cc:859
+  case 60:
+#line 379 "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 947 "dhcp6_parser.cc" // lalr1.cc:859
+#line 953 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 59:
-#line 379 "dhcp6_parser.yy" // lalr1.cc:859
+  case 61:
+#line 384 "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
@@ -956,11 +962,11 @@ namespace isc { namespace dhcp {
     // Dhcp6 is required
     ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 960 "dhcp6_parser.cc" // lalr1.cc:859
+#line 966 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 68:
-#line 402 "dhcp6_parser.yy" // lalr1.cc:859
+  case 70:
+#line 407 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -969,505 +975,523 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 973 "dhcp6_parser.cc" // lalr1.cc:859
+#line 979 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 69:
-#line 409 "dhcp6_parser.yy" // lalr1.cc:859
+  case 71:
+#line 414 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 983 "dhcp6_parser.cc" // lalr1.cc:859
+#line 989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 70:
-#line 417 "dhcp6_parser.yy" // lalr1.cc:859
+  case 72:
+#line 422 "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 993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 999 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 71:
-#line 421 "dhcp6_parser.yy" // lalr1.cc:859
+  case 73:
+#line 426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     // parsing completed
 }
-#line 1002 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1008 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 102:
-#line 462 "dhcp6_parser.yy" // lalr1.cc:859
+  case 106:
+#line 469 "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 1011 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1017 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 467 "dhcp6_parser.yy" // lalr1.cc:859
+  case 107:
+#line 474 "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 1020 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1026 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 472 "dhcp6_parser.yy" // lalr1.cc:859
+  case 108:
+#line 479 "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 1029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1035 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 105:
-#line 477 "dhcp6_parser.yy" // lalr1.cc:859
+  case 109:
+#line 484 "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 1038 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1044 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 106:
-#line 482 "dhcp6_parser.yy" // lalr1.cc:859
+  case 110:
+#line 489 "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 1047 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1053 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 487 "dhcp6_parser.yy" // lalr1.cc:859
+  case 111:
+#line 494 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1061 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 112:
+#line 496 "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 502 "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 1058 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1082 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 492 "dhcp6_parser.yy" // lalr1.cc:859
+  case 114:
+#line 507 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1068 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1092 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 109:
-#line 498 "dhcp6_parser.yy" // lalr1.cc:859
+  case 115:
+#line 513 "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 1078 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1102 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 110:
-#line 502 "dhcp6_parser.yy" // lalr1.cc:859
+  case 116:
+#line 517 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1087 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 118:
-#line 518 "dhcp6_parser.yy" // lalr1.cc:859
+  case 124:
+#line 533 "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 1098 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1122 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 119:
-#line 523 "dhcp6_parser.yy" // lalr1.cc:859
+  case 125:
+#line 538 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1107 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 120:
-#line 528 "dhcp6_parser.yy" // lalr1.cc:859
+  case 126:
+#line 543 "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 1116 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 121:
-#line 534 "dhcp6_parser.yy" // lalr1.cc:859
+  case 127:
+#line 549 "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 1127 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1151 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 122:
-#line 539 "dhcp6_parser.yy" // lalr1.cc:859
+  case 128:
+#line 554 "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 1138 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1162 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 123:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:859
+  case 129:
+#line 561 "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 1149 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1173 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 551 "dhcp6_parser.yy" // lalr1.cc:859
+  case 130:
+#line 566 "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 1160 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1184 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 558 "dhcp6_parser.yy" // lalr1.cc:859
+  case 131:
+#line 573 "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 1171 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1195 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 563 "dhcp6_parser.yy" // lalr1.cc:859
+  case 132:
+#line 578 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1180 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1204 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 576 "dhcp6_parser.yy" // lalr1.cc:859
+  case 137:
+#line 591 "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 1190 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1214 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 580 "dhcp6_parser.yy" // lalr1.cc:859
+  case 138:
+#line 595 "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 1200 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1224 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 610 "dhcp6_parser.yy" // lalr1.cc:859
+  case 159:
+#line 625 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1208 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1232 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 154:
-#line 612 "dhcp6_parser.yy" // lalr1.cc:859
+  case 160:
+#line 627 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1217 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1241 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 155:
-#line 617 "dhcp6_parser.yy" // lalr1.cc:859
+  case 161:
+#line 632 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1223 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1247 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 156:
-#line 618 "dhcp6_parser.yy" // lalr1.cc:859
+  case 162:
+#line 633 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1229 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1253 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 157:
-#line 619 "dhcp6_parser.yy" // lalr1.cc:859
+  case 163:
+#line 634 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1235 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1259 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 620 "dhcp6_parser.yy" // lalr1.cc:859
+  case 164:
+#line 635 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1241 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1265 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 623 "dhcp6_parser.yy" // lalr1.cc:859
+  case 165:
+#line 638 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1249 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1273 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 625 "dhcp6_parser.yy" // lalr1.cc:859
+  case 166:
+#line 640 "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 1259 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1283 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 631 "dhcp6_parser.yy" // lalr1.cc:859
+  case 167:
+#line 646 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1267 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1291 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 633 "dhcp6_parser.yy" // lalr1.cc:859
+  case 168:
+#line 648 "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 1277 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1301 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 639 "dhcp6_parser.yy" // lalr1.cc:859
+  case 169:
+#line 654 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1285 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1309 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 641 "dhcp6_parser.yy" // lalr1.cc:859
+  case 170:
+#line 656 "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 1295 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 171:
+#line 662 "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 1304 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1328 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 652 "dhcp6_parser.yy" // lalr1.cc:859
+  case 172:
+#line 667 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1312 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1336 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 654 "dhcp6_parser.yy" // lalr1.cc:859
+  case 173:
+#line 669 "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 1322 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1346 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 660 "dhcp6_parser.yy" // lalr1.cc:859
+  case 174:
+#line 675 "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 1331 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1355 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 665 "dhcp6_parser.yy" // lalr1.cc:859
+  case 175:
+#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("lfc-interval", n);
 }
-#line 1340 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1364 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 670 "dhcp6_parser.yy" // lalr1.cc:859
+  case 176:
+#line 685 "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 1349 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 171:
-#line 675 "dhcp6_parser.yy" // lalr1.cc:859
+  case 177:
+#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("connect-timeout", n);
 }
-#line 1358 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 172:
-#line 680 "dhcp6_parser.yy" // lalr1.cc:859
+  case 178:
+#line 695 "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 1367 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1391 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 173:
-#line 685 "dhcp6_parser.yy" // lalr1.cc:859
+  case 179:
+#line 700 "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 1376 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1400 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 174:
-#line 690 "dhcp6_parser.yy" // lalr1.cc:859
+  case 180:
+#line 705 "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 1385 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1409 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 695 "dhcp6_parser.yy" // lalr1.cc:859
+  case 181:
+#line 710 "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 1394 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1418 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 700 "dhcp6_parser.yy" // lalr1.cc:859
+  case 182:
+#line 715 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1402 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1426 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 702 "dhcp6_parser.yy" // lalr1.cc:859
+  case 183:
+#line 717 "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 1412 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1436 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 708 "dhcp6_parser.yy" // lalr1.cc:859
+  case 184:
+#line 723 "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 1421 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1445 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 713 "dhcp6_parser.yy" // lalr1.cc:859
+  case 185:
+#line 728 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1429 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1453 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 715 "dhcp6_parser.yy" // lalr1.cc:859
+  case 186:
+#line 730 "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 1439 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1463 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 721 "dhcp6_parser.yy" // lalr1.cc:859
+  case 187:
+#line 736 "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 1450 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1474 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 726 "dhcp6_parser.yy" // lalr1.cc:859
+  case 188:
+#line 741 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1459 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1483 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 736 "dhcp6_parser.yy" // lalr1.cc:859
+  case 192:
+#line 751 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1467 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1491 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 187:
-#line 738 "dhcp6_parser.yy" // lalr1.cc:859
+  case 193:
+#line 753 "dhcp6_parser.yy" // lalr1.cc:859
     {
 
     if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
@@ -1483,307 +1507,307 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1487 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1511 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 188:
-#line 754 "dhcp6_parser.yy" // lalr1.cc:859
+  case 194:
+#line 769 "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 1498 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1522 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 189:
-#line 759 "dhcp6_parser.yy" // lalr1.cc:859
+  case 195:
+#line 774 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1507 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1531 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 772 "dhcp6_parser.yy" // lalr1.cc:859
+  case 200:
+#line 787 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1516 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1540 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 777 "dhcp6_parser.yy" // lalr1.cc:859
+  case 201:
+#line 792 "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 1525 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 782 "dhcp6_parser.yy" // lalr1.cc:859
+  case 202:
+#line 797 "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 1536 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1560 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 787 "dhcp6_parser.yy" // lalr1.cc:859
+  case 203:
+#line 802 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1545 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1569 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 801 "dhcp6_parser.yy" // lalr1.cc:859
+  case 209:
+#line 816 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1554 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1578 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 806 "dhcp6_parser.yy" // lalr1.cc:859
+  case 210:
+#line 821 "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 1563 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1587 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 813 "dhcp6_parser.yy" // lalr1.cc:859
+  case 211:
+#line 828 "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 1574 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1598 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 818 "dhcp6_parser.yy" // lalr1.cc:859
+  case 212:
+#line 833 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1583 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1607 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 823 "dhcp6_parser.yy" // lalr1.cc:859
+  case 213:
+#line 838 "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 1594 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1618 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 828 "dhcp6_parser.yy" // lalr1.cc:859
+  case 214:
+#line 843 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1603 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1627 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 841 "dhcp6_parser.yy" // lalr1.cc:859
+  case 219:
+#line 856 "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 1613 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1637 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 845 "dhcp6_parser.yy" // lalr1.cc:859
+  case 220:
+#line 860 "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 1623 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1647 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 851 "dhcp6_parser.yy" // lalr1.cc:859
+  case 221:
+#line 866 "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 1633 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1657 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 216:
-#line 855 "dhcp6_parser.yy" // lalr1.cc:859
+  case 222:
+#line 870 "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 1643 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 222:
-#line 870 "dhcp6_parser.yy" // lalr1.cc:859
+  case 228:
+#line 885 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1651 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1675 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 223:
-#line 872 "dhcp6_parser.yy" // lalr1.cc:859
+  case 229:
+#line 887 "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 1661 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1685 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 224:
-#line 878 "dhcp6_parser.yy" // lalr1.cc:859
+  case 230:
+#line 893 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1669 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1693 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 225:
-#line 880 "dhcp6_parser.yy" // lalr1.cc:859
+  case 231:
+#line 895 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1678 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1702 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 226:
-#line 886 "dhcp6_parser.yy" // lalr1.cc:859
+  case 232:
+#line 901 "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 1689 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1713 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 227:
-#line 891 "dhcp6_parser.yy" // lalr1.cc:859
+  case 233:
+#line 906 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1699 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1723 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 909 "dhcp6_parser.yy" // lalr1.cc:859
+  case 242:
+#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("reclaim-timer-wait-time", value);
 }
-#line 1708 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1732 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 914 "dhcp6_parser.yy" // lalr1.cc:859
+  case 243:
+#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("flush-reclaimed-timer-wait-time", value);
 }
-#line 1717 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1741 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 919 "dhcp6_parser.yy" // lalr1.cc:859
+  case 244:
+#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("hold-reclaimed-time", value);
 }
-#line 1726 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1750 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 239:
-#line 924 "dhcp6_parser.yy" // lalr1.cc:859
+  case 245:
+#line 939 "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 1735 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1759 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 240:
-#line 929 "dhcp6_parser.yy" // lalr1.cc:859
+  case 246:
+#line 944 "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 1744 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1768 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 241:
-#line 934 "dhcp6_parser.yy" // lalr1.cc:859
+  case 247:
+#line 949 "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 1753 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1777 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 242:
-#line 942 "dhcp6_parser.yy" // lalr1.cc:859
+  case 248:
+#line 957 "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 1764 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 947 "dhcp6_parser.yy" // lalr1.cc:859
+  case 249:
+#line 962 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1797 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 967 "dhcp6_parser.yy" // lalr1.cc:859
+  case 254:
+#line 982 "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 1783 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1807 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 249:
-#line 971 "dhcp6_parser.yy" // lalr1.cc:859
+  case 255:
+#line 986 "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.
@@ -1805,267 +1829,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1809 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1833 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 993 "dhcp6_parser.yy" // lalr1.cc:859
+  case 256:
+#line 1008 "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 1819 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1843 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 997 "dhcp6_parser.yy" // lalr1.cc:859
+  case 257:
+#line 1012 "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 1829 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1853 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1031 "dhcp6_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1046 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1837 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 275:
-#line 1033 "dhcp6_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1048 "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 1847 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1871 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 276:
-#line 1039 "dhcp6_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1054 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1855 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1879 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1041 "dhcp6_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1056 "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 1865 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1889 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 278:
-#line 1047 "dhcp6_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1062 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1873 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1897 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1049 "dhcp6_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1064 "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 1883 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1907 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1055 "dhcp6_parser.yy" // lalr1.cc:859
+  case 286:
+#line 1070 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1891 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1915 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1057 "dhcp6_parser.yy" // lalr1.cc:859
+  case 287:
+#line 1072 "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 1901 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1925 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1063 "dhcp6_parser.yy" // lalr1.cc:859
+  case 288:
+#line 1078 "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 1912 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1936 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1068 "dhcp6_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1083 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1921 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1945 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 284:
-#line 1073 "dhcp6_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1088 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 1929 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1953 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 285:
-#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1938 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1962 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1080 "dhcp6_parser.yy" // lalr1.cc:859
+  case 292:
+#line 1095 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 1944 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1968 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1081 "dhcp6_parser.yy" // lalr1.cc:859
+  case 293:
+#line 1096 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 1950 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1974 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1082 "dhcp6_parser.yy" // lalr1.cc:859
+  case 294:
+#line 1097 "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
+#line 1980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1083 "dhcp6_parser.yy" // lalr1.cc:859
+  case 295:
+#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 1962 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1986 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1086 "dhcp6_parser.yy" // lalr1.cc:859
+  case 296:
+#line 1101 "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 1971 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1995 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1091 "dhcp6_parser.yy" // lalr1.cc:859
+  case 297:
+#line 1106 "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 1980 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2004 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 292:
-#line 1099 "dhcp6_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1114 "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 1991 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2015 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 293:
-#line 1104 "dhcp6_parser.yy" // lalr1.cc:859
+  case 299:
+#line 1119 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2000 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2024 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 298:
-#line 1119 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1134 "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 2010 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2034 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 299:
-#line 1123 "dhcp6_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1138 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2018 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2042 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 319:
-#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1169 "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 2029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2053 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 320:
-#line 1159 "dhcp6_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1174 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2038 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2062 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1182 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2047 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2071 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1170 "dhcp6_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1185 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2055 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2079 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1201 "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 2065 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2089 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1190 "dhcp6_parser.yy" // lalr1.cc:859
+  case 334:
+#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));
@@ -2073,21 +2097,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2101 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1216 "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 2087 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1220 "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));
@@ -2095,280 +2119,280 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2099 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2123 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1237 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1252 "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 2108 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2132 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 348:
-#line 1244 "dhcp6_parser.yy" // lalr1.cc:859
+  case 354:
+#line 1259 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2116 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1246 "dhcp6_parser.yy" // lalr1.cc:859
+  case 355:
+#line 1261 "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 2126 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2150 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1252 "dhcp6_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1267 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2134 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2158 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1254 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1269 "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 2144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2168 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 352:
-#line 1260 "dhcp6_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1275 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2152 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2176 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1262 "dhcp6_parser.yy" // lalr1.cc:859
+  case 359:
+#line 1277 "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 2162 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2186 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 355:
-#line 1270 "dhcp6_parser.yy" // lalr1.cc:859
+  case 361:
+#line 1285 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2170 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1272 "dhcp6_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1287 "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 2180 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2204 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 357:
-#line 1278 "dhcp6_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1293 "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 2189 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2213 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 358:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1302 "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 2200 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2224 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 359:
-#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1307 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2209 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2233 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1311 "dhcp6_parser.yy" // lalr1.cc:859
+  case 370:
+#line 1326 "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 2219 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2243 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 365:
-#line 1315 "dhcp6_parser.yy" // lalr1.cc:859
+  case 371:
+#line 1330 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2228 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2252 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1323 "dhcp6_parser.yy" // lalr1.cc:859
+  case 372:
+#line 1338 "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 2238 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2262 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1327 "dhcp6_parser.yy" // lalr1.cc:859
+  case 373:
+#line 1342 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2247 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2271 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1360 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1375 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2255 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2279 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1362 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1377 "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 2265 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2289 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1372 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1387 "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 2274 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2298 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1392 "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 2283 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2307 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1400 "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 2294 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2318 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1390 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1405 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2303 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2327 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1405 "dhcp6_parser.yy" // lalr1.cc:859
+  case 400:
+#line 1420 "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 2313 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2337 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1409 "dhcp6_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1424 "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 2323 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2347 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 396:
-#line 1415 "dhcp6_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1430 "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 2333 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2357 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1419 "dhcp6_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1434 "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 2342 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2366 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1437 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2350 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2374 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1439 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1454 "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 2360 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2384 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1445 "dhcp6_parser.yy" // lalr1.cc:859
+  case 415:
+#line 1460 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2368 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2392 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 410:
-#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1462 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
@@ -2391,19 +2415,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2395 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2419 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 411:
-#line 1470 "dhcp6_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1485 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2403 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2427 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1472 "dhcp6_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1487 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2428,41 +2452,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2432 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2456 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1500 "dhcp6_parser.yy" // lalr1.cc:859
+  case 419:
+#line 1515 "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 2443 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1505 "dhcp6_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1520 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2452 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2476 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1520 "dhcp6_parser.yy" // lalr1.cc:859
+  case 425:
+#line 1535 "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 2462 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 420:
-#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1539 "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));
@@ -2470,21 +2494,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2474 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2498 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1532 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1547 "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 2484 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2508 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1536 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1551 "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));
@@ -2492,1091 +2516,1169 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2496 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2520 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1561 "dhcp6_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2504 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2528 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 437:
-#line 1563 "dhcp6_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1578 "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 2514 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2538 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 438:
-#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1584 "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 2523 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2547 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 439:
-#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1589 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2555 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1591 "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 2541 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2565 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1582 "dhcp6_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1597 "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 2550 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2574 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1587 "dhcp6_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1602 "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 2559 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2583 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1595 "dhcp6_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1610 "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 2570 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2594 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1600 "dhcp6_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1615 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2579 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2603 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1613 "dhcp6_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1628 "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 2589 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2613 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1617 "dhcp6_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1632 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2598 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2622 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1622 "dhcp6_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1637 "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 2608 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2632 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1641 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2617 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2641 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1653 "dhcp6_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1668 "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 2628 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2652 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1658 "dhcp6_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1673 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2637 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2661 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1663 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1678 "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 2648 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2672 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1668 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1683 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2657 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2681 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1673 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1688 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2665 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2689 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1675 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1690 "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 2675 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2699 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1681 "dhcp6_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1696 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2683 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2707 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1683 "dhcp6_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1698 "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 2693 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2717 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1704 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2701 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2725 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1691 "dhcp6_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1706 "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 2711 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2735 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1697 "dhcp6_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1712 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2719 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2743 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1714 "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 2729 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2753 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1720 "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 2740 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1710 "dhcp6_parser.yy" // lalr1.cc:859
+  case 487:
+#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2749 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2773 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1718 "dhcp6_parser.yy" // lalr1.cc:859
+  case 488:
+#line 1733 "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 2760 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2784 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1738 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2769 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2793 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1732 "dhcp6_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1747 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2777 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2801 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1734 "dhcp6_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1749 "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 2787 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2811 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1758 "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 2798 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2822 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1748 "dhcp6_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1763 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2807 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2831 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1772 "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 2817 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2841 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1761 "dhcp6_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1776 "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 2827 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2851 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1786 "dhcp6_parser.yy" // lalr1.cc:859
+  case 512:
+#line 1801 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2835 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2859 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1788 "dhcp6_parser.yy" // lalr1.cc:859
+  case 513:
+#line 1803 "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 2845 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2869 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 508:
-#line 1794 "dhcp6_parser.yy" // lalr1.cc:859
+  case 514:
+#line 1809 "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 2854 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2878 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 509:
-#line 1802 "dhcp6_parser.yy" // lalr1.cc:859
+  case 515:
+#line 1817 "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 2865 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2889 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 510:
-#line 1807 "dhcp6_parser.yy" // lalr1.cc:859
+  case 516:
+#line 1822 "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 2876 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2900 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 522:
-#line 1829 "dhcp6_parser.yy" // lalr1.cc:859
+  case 528:
+#line 1844 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2884 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2908 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 523:
-#line 1831 "dhcp6_parser.yy" // lalr1.cc:859
+  case 529:
+#line 1846 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2893 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2917 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 524:
-#line 1836 "dhcp6_parser.yy" // lalr1.cc:859
+  case 530:
+#line 1851 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2899 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2923 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 525:
-#line 1837 "dhcp6_parser.yy" // lalr1.cc:859
+  case 531:
+#line 1852 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2905 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2929 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 526:
-#line 1838 "dhcp6_parser.yy" // lalr1.cc:859
+  case 532:
+#line 1853 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2911 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2935 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 527:
-#line 1841 "dhcp6_parser.yy" // lalr1.cc:859
+  case 533:
+#line 1856 "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 2920 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2944 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 528:
-#line 1846 "dhcp6_parser.yy" // lalr1.cc:859
+  case 534:
+#line 1861 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2928 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2952 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 529:
-#line 1848 "dhcp6_parser.yy" // lalr1.cc:859
+  case 535:
+#line 1863 "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 2938 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2962 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 530:
-#line 1854 "dhcp6_parser.yy" // lalr1.cc:859
+  case 536:
+#line 1869 "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 2947 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2971 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 537:
+#line 1874 "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 2956 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1866 "dhcp6_parser.yy" // lalr1.cc:859
+  case 538:
+#line 1881 "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 2965 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1873 "dhcp6_parser.yy" // lalr1.cc:859
+  case 539:
+#line 1888 "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 2976 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3000 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1878 "dhcp6_parser.yy" // lalr1.cc:859
+  case 540:
+#line 1893 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2985 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 542:
-#line 1894 "dhcp6_parser.yy" // lalr1.cc:859
+  case 548:
+#line 1909 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3017 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 543:
-#line 1896 "dhcp6_parser.yy" // lalr1.cc:859
+  case 549:
+#line 1911 "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 3003 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3027 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 544:
-#line 1902 "dhcp6_parser.yy" // lalr1.cc:859
+  case 550:
+#line 1917 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3011 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3035 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 545:
-#line 1904 "dhcp6_parser.yy" // lalr1.cc:859
+  case 551:
+#line 1919 "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 3021 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3045 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 546:
-#line 1912 "dhcp6_parser.yy" // lalr1.cc:859
+  case 552:
+#line 1927 "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 3032 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3056 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 547:
-#line 1917 "dhcp6_parser.yy" // lalr1.cc:859
+  case 553:
+#line 1932 "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 3043 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3067 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 548:
-#line 1924 "dhcp6_parser.yy" // lalr1.cc:859
+  case 554:
+#line 1939 "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 3053 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3077 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 549:
-#line 1928 "dhcp6_parser.yy" // lalr1.cc:859
+  case 555:
+#line 1943 "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 3063 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3087 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 571:
-#line 1959 "dhcp6_parser.yy" // lalr1.cc:859
+  case 577:
+#line 1974 "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 3072 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3096 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 572:
-#line 1964 "dhcp6_parser.yy" // lalr1.cc:859
+  case 578:
+#line 1979 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3080 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3104 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 573:
-#line 1966 "dhcp6_parser.yy" // lalr1.cc:859
+  case 579:
+#line 1981 "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 3090 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3114 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 574:
-#line 1972 "dhcp6_parser.yy" // lalr1.cc:859
+  case 580:
+#line 1987 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3098 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3122 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 575:
-#line 1974 "dhcp6_parser.yy" // lalr1.cc:859
+  case 581:
+#line 1989 "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 3108 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3132 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 576:
-#line 1980 "dhcp6_parser.yy" // lalr1.cc:859
+  case 582:
+#line 1995 "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 3117 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3141 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 577:
-#line 1985 "dhcp6_parser.yy" // lalr1.cc:859
+  case 583:
+#line 2000 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3125 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 578:
-#line 1987 "dhcp6_parser.yy" // lalr1.cc:859
+  case 584:
+#line 2002 "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 3135 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3159 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 579:
-#line 1993 "dhcp6_parser.yy" // lalr1.cc:859
+  case 585:
+#line 2008 "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 3144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3168 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 580:
-#line 1998 "dhcp6_parser.yy" // lalr1.cc:859
+  case 586:
+#line 2013 "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 3153 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3177 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 581:
-#line 2003 "dhcp6_parser.yy" // lalr1.cc:859
+  case 587:
+#line 2018 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3185 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 582:
-#line 2005 "dhcp6_parser.yy" // lalr1.cc:859
+  case 588:
+#line 2020 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3170 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 583:
-#line 2011 "dhcp6_parser.yy" // lalr1.cc:859
+  case 589:
+#line 2026 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3176 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3200 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 584:
-#line 2012 "dhcp6_parser.yy" // lalr1.cc:859
+  case 590:
+#line 2027 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3182 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3206 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 585:
-#line 2015 "dhcp6_parser.yy" // lalr1.cc:859
+  case 591:
+#line 2030 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3190 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3214 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 586:
-#line 2017 "dhcp6_parser.yy" // lalr1.cc:859
+  case 592:
+#line 2032 "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 3200 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3224 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 587:
-#line 2023 "dhcp6_parser.yy" // lalr1.cc:859
+  case 593:
+#line 2038 "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 3209 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3233 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 588:
-#line 2028 "dhcp6_parser.yy" // lalr1.cc:859
+  case 594:
+#line 2043 "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 3218 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3242 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 589:
-#line 2033 "dhcp6_parser.yy" // lalr1.cc:859
+  case 595:
+#line 2048 "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 3227 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3251 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 590:
-#line 2038 "dhcp6_parser.yy" // lalr1.cc:859
+  case 596:
+#line 2053 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3235 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3259 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 591:
-#line 2040 "dhcp6_parser.yy" // lalr1.cc:859
+  case 597:
+#line 2055 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3244 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3268 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 592:
-#line 2046 "dhcp6_parser.yy" // lalr1.cc:859
+  case 598:
+#line 2061 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3252 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3276 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 593:
-#line 2049 "dhcp6_parser.yy" // lalr1.cc:859
+  case 599:
+#line 2064 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3260 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3284 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 594:
-#line 2052 "dhcp6_parser.yy" // lalr1.cc:859
+  case 600:
+#line 2067 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3268 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3292 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 595:
-#line 2055 "dhcp6_parser.yy" // lalr1.cc:859
+  case 601:
+#line 2070 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3276 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3300 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 596:
-#line 2058 "dhcp6_parser.yy" // lalr1.cc:859
+  case 602:
+#line 2073 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3285 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3309 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 597:
-#line 2064 "dhcp6_parser.yy" // lalr1.cc:859
+  case 603:
+#line 2079 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3293 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3317 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 598:
-#line 2066 "dhcp6_parser.yy" // lalr1.cc:859
+  case 604:
+#line 2081 "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 3303 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3327 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 599:
-#line 2072 "dhcp6_parser.yy" // lalr1.cc:859
+  case 605:
+#line 2087 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3311 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3335 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 600:
-#line 2074 "dhcp6_parser.yy" // lalr1.cc:859
+  case 606:
+#line 2089 "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 3321 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3345 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 601:
-#line 2080 "dhcp6_parser.yy" // lalr1.cc:859
+  case 607:
+#line 2095 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3329 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3353 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 602:
-#line 2082 "dhcp6_parser.yy" // lalr1.cc:859
+  case 608:
+#line 2097 "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 3339 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3363 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 603:
-#line 2090 "dhcp6_parser.yy" // lalr1.cc:859
+  case 609:
+#line 2105 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3347 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3371 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 604:
-#line 2092 "dhcp6_parser.yy" // lalr1.cc:859
+  case 610:
+#line 2107 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3356 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3380 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 605:
-#line 2097 "dhcp6_parser.yy" // lalr1.cc:859
+  case 611:
+#line 2112 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3364 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3388 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 606:
-#line 2099 "dhcp6_parser.yy" // lalr1.cc:859
+  case 612:
+#line 2114 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3373 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3397 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 607:
-#line 2104 "dhcp6_parser.yy" // lalr1.cc:859
+  case 613:
+#line 2119 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3381 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3405 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 608:
-#line 2106 "dhcp6_parser.yy" // lalr1.cc:859
+  case 614:
+#line 2121 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3390 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3414 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 609:
-#line 2117 "dhcp6_parser.yy" // lalr1.cc:859
+  case 615:
+#line 2128 "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 3424 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 616:
+#line 2132 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.pop_back();
+}
+#line 3432 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 617:
+#line 2137 "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 3443 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 618:
+#line 2142 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    // No config control params are required
+    ctx.stack_.pop_back();
+    ctx.leave();
+}
+#line 3453 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 619:
+#line 2148 "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 3463 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 620:
+#line 2152 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    // No config_control params are required
+    // parsing completed
+}
+#line 3472 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 625:
+#line 2167 "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 3483 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 626:
+#line 2172 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.pop_back();
+    ctx.leave();
+}
+#line 3492 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 627:
+#line 2182 "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 3401 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3503 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 610:
-#line 2122 "dhcp6_parser.yy" // lalr1.cc:859
+  case 628:
+#line 2187 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3410 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3512 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 611:
-#line 2127 "dhcp6_parser.yy" // lalr1.cc:859
+  case 629:
+#line 2192 "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 3420 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3522 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 612:
-#line 2131 "dhcp6_parser.yy" // lalr1.cc:859
+  case 630:
+#line 2196 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 3428 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3530 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 616:
-#line 2147 "dhcp6_parser.yy" // lalr1.cc:859
+  case 634:
+#line 2212 "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 3439 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 617:
-#line 2152 "dhcp6_parser.yy" // lalr1.cc:859
+  case 635:
+#line 2217 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3448 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3550 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 620:
-#line 2164 "dhcp6_parser.yy" // lalr1.cc:859
+  case 638:
+#line 2229 "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 3458 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3560 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 621:
-#line 2168 "dhcp6_parser.yy" // lalr1.cc:859
+  case 639:
+#line 2233 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3466 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3568 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 631:
-#line 2185 "dhcp6_parser.yy" // lalr1.cc:859
+  case 649:
+#line 2250 "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 3475 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3577 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 632:
-#line 2190 "dhcp6_parser.yy" // lalr1.cc:859
+  case 650:
+#line 2255 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3483 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3585 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 633:
-#line 2192 "dhcp6_parser.yy" // lalr1.cc:859
+  case 651:
+#line 2257 "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 3493 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3595 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 634:
-#line 2198 "dhcp6_parser.yy" // lalr1.cc:859
+  case 652:
+#line 2263 "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 3504 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3606 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 635:
-#line 2203 "dhcp6_parser.yy" // lalr1.cc:859
+  case 653:
+#line 2268 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3513 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3615 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 638:
-#line 2212 "dhcp6_parser.yy" // lalr1.cc:859
+  case 656:
+#line 2277 "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 3523 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3625 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 639:
-#line 2216 "dhcp6_parser.yy" // lalr1.cc:859
+  case 657:
+#line 2281 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3633 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 646:
-#line 2230 "dhcp6_parser.yy" // lalr1.cc:859
+  case 664:
+#line 2295 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3539 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3641 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 647:
-#line 2232 "dhcp6_parser.yy" // lalr1.cc:859
+  case 665:
+#line 2297 "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 3549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3651 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 648:
-#line 2238 "dhcp6_parser.yy" // lalr1.cc:859
+  case 666:
+#line 2303 "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 3558 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3660 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 649:
-#line 2243 "dhcp6_parser.yy" // lalr1.cc:859
+  case 667:
+#line 2308 "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 3567 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3669 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 650:
-#line 2248 "dhcp6_parser.yy" // lalr1.cc:859
+  case 668:
+#line 2313 "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 3576 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3678 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3580 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3682 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3831,706 +3933,724 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -795;
+  const short int Dhcp6Parser::yypact_ninf_ = -822;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     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
+     413,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,    57,    46,    66,   106,
+     142,   144,   146,   158,   179,   188,   198,   204,   227,   229,
+     239,   252,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,    46,   -64,    44,    45,    55,   232,   200,   177,
+      65,   202,    53,   203,   -23,   362,    63,    52,  -822,   257,
+     274,   282,   284,   291,  -822,  -822,  -822,  -822,  -822,   292,
+    -822,    71,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   311,   313,   320,   322,   324,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   326,  -822,  -822,  -822,    91,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   344,  -822,   124,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   345,   355,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   126,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   135,  -822,  -822,
+    -822,  -822,  -822,   367,  -822,   389,   391,  -822,  -822,  -822,
+    -822,  -822,  -822,   136,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   332,   364,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   398,  -822,  -822,   393,  -822,  -822,  -822,   395,  -822,
+    -822,   404,   410,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   411,   412,  -822,  -822,
+    -822,  -822,   432,   418,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   182,  -822,  -822,  -822,
+     437,  -822,  -822,   438,  -822,   441,   444,  -822,  -822,   451,
+     452,   453,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   186,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   196,  -822,
+    -822,  -822,  -822,   205,  -822,  -822,  -822,    46,    46,  -822,
+     288,   455,   456,   457,   459,   460,  -822,    44,  -822,    52,
+     462,   463,   464,   465,   466,   300,   301,   303,   305,   306,
+     471,   474,   475,   476,   477,   492,   493,   494,   495,   496,
+     497,   498,   501,   502,   503,   504,   338,   506,   507,    45,
+    -822,   508,   340,    55,  -822,   511,   512,   513,   520,   521,
+     356,   353,   524,   525,   526,   527,   232,  -822,   530,   200,
+    -822,   531,   365,   533,   368,   369,   177,  -822,   534,   540,
+     542,   543,   545,   546,   547,  -822,    65,  -822,   548,   552,
+     386,   554,   555,   556,   388,  -822,    53,   558,   390,   414,
+    -822,   203,   560,   579,    -3,  -822,   415,   580,   581,   419,
+     582,   420,   421,   585,   589,   422,   423,   425,   590,   595,
+     596,   597,   362,  -822,   598,    63,  -822,   599,    52,  -822,
+    -822,  -822,   600,   601,   602,    46,    46,    46,  -822,   225,
+     603,   604,   605,   606,   609,  -822,  -822,  -822,  -822,  -822,
+     435,   610,   611,   612,   614,   436,   613,   617,   618,   619,
+     620,   621,   623,   624,   625,   626,  -822,   627,   628,  -822,
+     631,  -822,  -822,   632,   633,   449,   461,   469,  -822,  -822,
+     363,   631,   470,   634,  -822,   472,  -822,   473,  -822,   478,
+    -822,  -822,  -822,   631,   631,   631,   479,   480,   481,   482,
+    -822,   483,   484,  -822,   485,   486,   487,  -822,  -822,   488,
+    -822,  -822,  -822,   489,    46,  -822,  -822,   490,   491,  -822,
+     499,  -822,  -822,     1,   509,  -822,  -822,  -822,   -57,   500,
+     505,   510,  -822,   639,  -822,   641,  -822,    46,    45,    63,
+    -822,  -822,  -822,  -822,    52,    55,   143,   143,   640,  -822,
+     655,   656,   657,  -822,  -822,  -822,   658,   -20,    46,    23,
+     584,   660,   661,   664,   231,   118,    75,   362,  -822,  -822,
+     665,   666,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,     4,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   667,   640,  -822,
+     241,   267,   273,   275,  -822,  -822,  -822,  -822,   672,   673,
+     674,   675,   677,  -822,   678,   679,  -822,   680,   681,   682,
+    -822,   277,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     287,  -822,   683,   622,  -822,  -822,   684,   685,  -822,  -822,
+     686,   688,  -822,  -822,   687,   691,  -822,  -822,   689,   693,
+    -822,  -822,  -822,    99,  -822,  -822,  -822,   692,  -822,  -822,
+    -822,   160,  -822,  -822,  -822,  -822,   302,  -822,  -822,  -822,
+     254,  -822,  -822,   694,   696,  -822,  -822,   695,   699,  -822,
+     700,   701,   702,   703,   704,   705,   304,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   706,   707,   708,  -822,
+    -822,  -822,  -822,   335,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   336,  -822,  -822,  -822,   347,
+     517,  -822,   697,   710,  -822,  -822,   709,   711,  -822,  -822,
+    -822,   712,  -822,  -822,   308,  -822,   713,  -822,  -822,  -822,
+    -822,   714,   717,   718,   719,   553,   434,   557,   544,   559,
+     721,   561,   562,   722,   563,   564,   565,   143,  -822,  -822,
+     143,  -822,   640,   232,  -822,   655,    53,  -822,   656,   203,
+    -822,   657,   378,  -822,   658,   -20,  -822,  -822,    23,  -822,
+     723,   584,  -822,    12,   660,  -822,    65,  -822,   661,   -23,
+    -822,   664,   566,   568,   569,   570,   571,   572,   231,  -822,
+     725,   727,   573,   574,   575,   118,  -822,   732,   743,    75,
+    -822,  -822,  -822,   742,   746,   200,  -822,   665,   177,  -822,
+     666,   747,  -822,   161,   667,  -822,  -822,   431,   583,   586,
+     587,  -822,  -822,  -822,  -822,  -822,   588,  -822,  -822,   591,
+    -822,  -822,  -822,  -822,   348,  -822,   357,  -822,   744,  -822,
+     751,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   360,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   592,  -822,  -822,   750,  -822,  -822,
+    -822,  -822,  -822,   752,   761,  -822,  -822,  -822,  -822,  -822,
+     757,  -822,   372,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   323,   607,  -822,  -822,  -822,  -822,   616,   642,  -822,
+    -822,   649,   380,  -822,   400,  -822,   652,  -822,   763,  -822,
+    -822,  -822,  -822,  -822,   426,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   378,  -822,  -822,   764,   577,  -822,
+      12,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   766,   608,   767,   161,  -822,  -822,
+     662,  -822,  -822,   769,  -822,   668,  -822,  -822,   690,  -822,
+    -822,   376,  -822,   172,   690,  -822,  -822,   772,   776,   779,
+     427,  -822,  -822,  -822,  -822,  -822,  -822,   787,   637,   654,
+     659,   172,  -822,   676,  -822,  -822,  -822,  -822,  -822
   };
 
   const unsigned short int
   Dhcp6Parser::yydefact_[] =
   {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
-      20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
+      20,    22,    24,    26,    28,    30,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
-      35,    36,    58,     5,    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,     1,    47,    40,    36,    35,    32,    33,    34,
+      39,     3,    37,    38,    60,     5,    72,     7,   115,     9,
+     256,    11,   402,    13,   427,    15,   457,    17,   327,    19,
+     335,    21,   372,    23,   221,    25,   554,    27,   629,    29,
+     619,    31,    49,    43,     0,     0,     0,     0,     0,     0,
+     459,     0,   337,   374,     0,     0,     0,     0,    51,     0,
+      50,     0,     0,    44,    70,   627,   609,   611,   613,     0,
+      69,     0,    62,    64,    66,    67,    68,    65,   615,   617,
+     113,   127,   129,   131,     0,     0,     0,     0,     0,   111,
+     248,   325,   364,   415,   417,   298,   194,   211,   202,   187,
+     494,   449,   213,   232,   515,     0,   539,   552,   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,   394,
+     419,   280,   282,   284,     0,     0,   290,   288,   286,   488,
+     279,   260,   261,   262,   263,     0,   258,   267,   268,   269,
+     272,   273,   275,   270,   271,   264,   265,   277,   278,   266,
+     274,   276,   413,   412,   408,   409,   407,     0,   404,   406,
+     410,   411,   442,     0,   445,     0,     0,   441,   435,   436,
+     434,   439,   440,     0,   429,   431,   432,   437,   438,   433,
+     486,   474,   476,   478,   480,   482,   484,   473,   470,   471,
+     472,     0,   460,   461,   465,   466,   463,   467,   468,   469,
+     464,     0,   354,   172,     0,   358,   356,   361,     0,   350,
+     351,     0,   338,   339,   341,   353,   342,   343,   344,   360,
+     345,   346,   347,   348,   349,   388,     0,     0,   386,   387,
+     390,   391,     0,   375,   376,   378,   379,   380,   381,   382,
+     383,   384,   385,   228,   230,   225,     0,   223,   226,   227,
+       0,   578,   580,     0,   583,     0,     0,   587,   591,     0,
+       0,     0,   596,   603,   605,   607,   576,   574,   575,     0,
+     556,   558,   559,   560,   561,   562,   563,   564,   565,   566,
+     567,   568,   569,   570,   571,   572,   573,   634,     0,   631,
+     633,   625,   624,     0,   621,   623,    48,     0,     0,    41,
+       0,     0,     0,     0,     0,     0,    59,     0,    61,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    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,
-       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,
+      73,     0,     0,     0,   116,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   257,     0,     0,
+     403,     0,     0,     0,     0,     0,     0,   428,     0,     0,
+       0,     0,     0,     0,     0,   458,     0,   328,     0,     0,
+       0,     0,     0,     0,     0,   336,     0,     0,     0,     0,
+     373,     0,     0,     0,     0,   222,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       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,   555,     0,     0,   630,     0,     0,   620,
+      52,    45,     0,     0,     0,     0,     0,     0,    63,     0,
+       0,     0,     0,     0,     0,   106,   107,   108,   109,   110,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       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
+       0,     0,     0,     0,     0,     0,   538,     0,     0,    75,
+       0,   126,   118,     0,     0,     0,     0,     0,   296,   297,
+       0,     0,     0,     0,   259,     0,   405,     0,   444,     0,
+     447,   448,   430,     0,     0,     0,     0,     0,     0,     0,
+     462,     0,     0,   352,     0,     0,     0,   363,   340,     0,
+     392,   393,   377,     0,     0,   224,   577,     0,     0,   582,
+       0,   585,   586,     0,     0,   593,   594,   595,     0,     0,
+       0,     0,   557,     0,   632,     0,   622,     0,     0,     0,
+     610,   612,   614,   616,     0,     0,     0,     0,   133,   112,
+     250,   329,   366,    42,   416,   418,   300,     0,    49,     0,
+       0,     0,   451,   215,     0,     0,     0,     0,    53,   125,
+     396,   421,   281,   283,   285,   292,   293,   294,   295,   291,
+     289,   287,     0,   414,   443,   446,   487,   475,   477,   479,
+     481,   483,   485,   355,   173,   359,   357,   362,   389,   229,
+     231,   579,   581,   584,   589,   590,   588,   592,   598,   599,
+     600,   601,   602,   597,   604,   606,   608,     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,   333,
+       0,   330,   331,   370,     0,   367,   368,   304,     0,   301,
+     302,   200,   201,     0,   196,   198,   199,     0,   209,   210,
+     206,     0,   204,   207,   208,   192,     0,   189,   191,   498,
+       0,   496,   455,     0,   452,   453,   219,     0,   216,   217,
+       0,     0,     0,     0,     0,     0,     0,   234,   236,   237,
+     238,   239,   240,   241,   528,   534,     0,     0,     0,   527,
+     524,   525,   526,     0,   517,   519,   522,   520,   521,   523,
+     548,   550,   547,   545,   546,     0,   541,   543,   544,     0,
+      55,   400,     0,   397,   398,   425,     0,   422,   423,   492,
+     491,     0,   490,   638,     0,   636,     0,    71,   628,   618,
+     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,   337,   326,     0,   374,
+     365,     0,     0,   299,     0,     0,   195,   212,     0,   203,
+       0,     0,   188,   500,     0,   495,   459,   450,     0,     0,
+     214,     0,     0,     0,     0,     0,     0,     0,     0,   233,
+       0,     0,     0,     0,     0,     0,   516,     0,     0,     0,
+     540,   553,    57,     0,    56,     0,   395,     0,     0,   420,
+       0,     0,   489,     0,     0,   635,   626,     0,     0,     0,
+       0,   171,   174,   175,   176,   177,     0,   184,   178,     0,
+     179,   180,   181,   140,     0,   136,     0,   253,     0,   332,
+       0,   369,   324,   319,   321,   312,   313,   308,   309,   310,
+     311,   317,   318,   316,   320,     0,   306,   314,   322,   323,
+     315,   303,   197,   205,     0,   190,   512,     0,   510,   511,
+     507,   508,   509,     0,   501,   502,   504,   505,   506,   497,
+       0,   454,     0,   218,   242,   243,   244,   245,   246,   247,
+     235,     0,     0,   533,   536,   537,   518,     0,     0,   542,
+      54,     0,     0,   399,     0,   424,     0,   652,     0,   650,
+     648,   642,   646,   647,     0,   640,   644,   645,   643,   637,
+     161,   162,   163,   164,   160,   166,   168,   170,   183,   186,
+     138,   255,   334,   371,     0,   305,   193,     0,     0,   499,
+       0,   456,   220,   530,   531,   532,   529,   535,   549,   551,
+      58,   401,   426,   493,     0,     0,     0,     0,   639,   307,
+       0,   514,   503,     0,   649,     0,   641,   513,     0,   651,
+     656,     0,   654,     0,     0,   653,   664,     0,     0,     0,
+       0,   658,   660,   661,   662,   663,   655,     0,     0,     0,
+       0,     0,   657,     0,   666,   667,   668,   659,   665
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -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
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,    33,  -822,   212,
+    -822,  -822,  -822,  -822,  -822,  -822,    22,  -822,  -343,  -822,
+    -822,  -822,   -74,  -822,  -822,  -822,   467,  -822,  -822,  -822,
+    -822,   167,   399,   -70,   -58,   -55,   -38,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   233,   439,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   169,  -822,   -16,  -822,  -573,
+       6,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   -46,  -822,  -603,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   -17,
+    -822,  -822,  -822,  -822,  -822,    -8,  -596,  -822,  -822,  -822,
+    -822,    -9,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     -21,  -822,  -822,  -822,   -14,   402,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,   -26,  -822,  -822,  -822,  -822,  -822,  -822,
+    -821,  -822,  -822,  -822,    13,  -822,  -822,  -822,    16,   446,
+    -822,  -822,  -818,  -822,  -814,  -822,   -34,  -822,   -32,  -822,
+    -812,  -822,  -822,  -822,  -804,  -822,  -822,  -822,  -822,    11,
+    -822,  -822,  -164,   786,  -822,  -822,  -822,  -822,  -822,    20,
+    -822,  -822,  -822,    24,  -822,   428,  -822,   -42,  -822,  -822,
+    -822,  -822,  -822,   -40,  -822,  -822,  -822,  -822,  -822,   -12,
+    -822,  -822,  -822,    18,  -822,  -822,  -822,    26,  -822,   429,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   -25,  -822,  -822,  -822,   -24,   454,  -822,  -822,   -62,
+    -822,   -50,  -822,  -822,  -822,  -822,  -822,   -22,  -822,  -822,
+    -822,   -19,   450,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     -35,  -822,  -822,  -822,     9,  -822,  -822,  -822,    15,  -822,
+     448,   250,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -803,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,    21,  -822,  -822,  -822,  -143,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,     3,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,     0,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   276,   424,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -344,   416,  -822,
+    -822,  -822,  -822,  -822,  -822,   309,   417,  -822,  -822,  -822,
+     -13,  -822,  -822,  -157,  -822,  -822,  -822,  -822,  -822,  -822,
+    -169,  -822,  -822,  -184,  -822,  -822,  -822,  -822,  -822
   };
 
   const short int
   Dhcp6Parser::yydefgoto_[] =
   {
-      -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     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
+      -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,   800,
+     893,   894,   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,   712,   713,   714,   840,   691,
+     692,   693,   821,  1014,   694,   822,   695,   823,   696,   824,
+     697,   698,   439,   699,   700,   701,   702,   703,   704,   705,
+     706,   707,   830,   708,   709,   833,   151,   390,   746,   747,
+     748,   860,   152,   387,   733,   734,   735,   736,   153,   389,
+     741,   742,   743,   744,   154,   388,   155,   393,   757,   758,
+     759,   869,    65,    84,   306,   307,   308,   452,   309,   453,
+     156,   394,   766,   767,   768,   769,   770,   771,   772,   773,
+     157,   381,   716,   717,   718,   843,    51,    77,   195,   196,
+     197,   407,   198,   408,   199,   409,   200,   414,   201,   413,
+     202,   412,   629,   203,   204,   158,   386,   728,   729,   730,
+     852,   945,   946,   159,   382,    59,    81,   720,   721,   722,
+     846,    61,    82,   271,   272,   273,   274,   275,   276,   277,
+     438,   278,   442,   279,   441,   280,   281,   443,   282,   160,
+     383,   724,   725,   726,   849,    63,    83,   292,   293,   294,
+     295,   296,   447,   297,   298,   299,   300,   206,   405,   802,
+     803,   804,   895,    53,    78,   217,   218,   219,   418,   161,
+     384,   162,   385,   209,   406,   806,   807,   808,   898,    55,
+      79,   233,   234,   235,   421,   236,   237,   423,   238,   239,
+     163,   392,   753,   754,   755,   866,    57,    80,   251,   252,
+     253,   254,   429,   255,   430,   256,   431,   257,   432,   258,
+     433,   259,   434,   260,   428,   211,   415,   811,   812,   901,
+     164,   391,   750,   751,   863,   963,   964,   965,   966,   967,
+    1027,   968,   165,   395,   783,   784,   785,   880,  1036,   786,
+     787,   881,   788,   789,   166,   167,   397,   795,   796,   797,
+     887,   798,   888,   168,   398,    67,    85,   329,   330,   331,
+     332,   457,   333,   458,   334,   335,   460,   336,   337,   338,
+     463,   656,   339,   464,   340,   341,   342,   343,   468,   663,
+     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,   814,
+     815,   903,  1004,  1005,  1006,  1007,  1046,  1008,  1044,  1061,
+    1062,  1063,  1070,  1071,  1072,  1077,  1073,  1074,  1075
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-      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,
+     100,   138,   172,   190,   213,   227,   247,   191,   269,   288,
+     305,   326,   780,   740,   177,   207,   220,   231,   249,   192,
+     283,   301,   193,   327,   710,   489,   178,   208,   221,   232,
+     250,   938,   284,   302,   939,   328,   270,   289,   940,   194,
+     943,   290,   210,   291,   214,   228,   215,   229,   944,   950,
+      40,    33,   108,    34,    94,    35,   109,    32,   110,   122,
+     263,   111,   112,   113,   351,   205,   216,   230,   248,   170,
+     171,   731,   262,    44,   367,   303,   304,   123,   124,   368,
+     658,   659,   660,   661,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   241,   399,   303,   304,   956,   957,   400,
+     809,   263,   855,   264,   265,   856,    91,   266,   267,   268,
+     123,   124,   122,    46,   731,   738,   662,   739,   123,   124,
+     123,   124,   125,   126,   127,   128,   129,   403,   130,   416,
+     123,   124,   404,   131,   417,   654,   655,   774,   419,   426,
+     123,   124,   132,   420,   427,   133,   679,    99,   240,    48,
+     732,    50,   134,    52,   241,   242,   243,   244,   245,   246,
+     135,   136,   674,   858,   137,    54,   859,   675,   676,   677,
+     678,   679,   680,   681,   682,   683,   684,   685,   686,   687,
+     688,   689,    99,   123,   124,   454,    56,    95,   630,   472,
+     455,   263,   790,   791,   473,    58,    96,    97,    98,   475,
+     636,   637,   638,   938,   476,    60,   939,   347,   478,   263,
+     940,    62,   943,   479,    99,    99,    36,    37,    38,    39,
+     944,   950,    99,    99,   122,    99,   123,   124,   478,   775,
+     776,   777,   778,   593,    64,    99,    66,   222,   223,   224,
+     225,   226,   123,   124,   399,    99,    68,   122,   121,   817,
+     672,   263,   285,   264,   265,   286,   287,   864,   212,    70,
+     865,   187,   740,   356,   188,   123,   124,   924,   123,   124,
+     475,   114,   115,   116,   117,   818,   478,   357,   403,   122,
+     837,   819,   780,   820,   187,   838,   358,   188,    99,   179,
+     837,   180,   359,   100,   360,   839,   366,   123,   124,   181,
+     182,   183,   184,   185,   186,   861,   997,   878,   998,   999,
+     862,   904,   879,    99,   905,   375,   187,   376,  1066,   188,
+     131,  1067,  1068,  1069,   377,   138,   378,   189,   379,   172,
+     396,    99,   760,   761,   762,   763,   764,   765,   885,   889,
+     435,   177,   190,   886,   890,   213,   191,    99,   402,   410,
+     472,   837,   227,   178,   207,   891,  1020,   220,   192,   411,
+     416,   193,   247,  1024,   231,  1021,   208,   436,  1025,   221,
+      99,   422,   269,    99,   249,   454,   232,   288,   194,  1064,
+    1032,   210,  1065,   419,   283,   214,   250,   215,  1041,   301,
+     480,   481,   228,   424,   229,   425,   284,   440,   326,   444,
+     270,   302,    99,   426,   205,   289,   437,   216,  1042,   290,
+     327,   291,   445,   446,   230,   448,   449,   114,   115,   116,
+     117,   451,   328,   120,   248,   122,   263,   123,   124,  1047,
+    1081,  1033,  1034,  1035,  1048,  1082,   625,   626,   627,   628,
+     450,   456,   459,   123,   124,   461,   182,   183,   462,   185,
+     186,  1010,  1011,  1012,  1013,   465,   466,   467,   482,   483,
+     484,   485,   187,   486,   487,   188,   490,   491,   492,   493,
+     494,   495,   496,   189,   497,   500,   498,   499,   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,   138,   523,   524,   525,   590,   591,
+     592,   172,   690,   690,   526,   527,   529,   528,   530,   531,
+     532,   533,    99,   177,   535,   537,   538,   539,   543,   540,
+     541,   779,   792,   326,   544,   178,   545,   546,    99,   547,
+     548,   549,   551,   781,   793,   327,   552,   553,   554,   555,
+     556,   557,   559,   560,   563,   782,   794,   328,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,   564,   567,   568,   570,   561,   566,   573,
+     569,   571,   572,   574,   578,   575,   576,   650,   577,   579,
+     580,   581,   583,   585,   587,   599,   605,   912,   588,   589,
+     594,   595,   596,   597,   598,   600,   601,   602,   606,   622,
+     669,    34,   607,   608,   609,   842,   611,   610,   612,   613,
+     737,   623,   614,   615,   616,   617,   618,   620,   621,   624,
+     631,   632,   633,   634,   667,   657,   668,   711,   635,   639,
+     640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
+     651,   652,   715,   719,   723,   727,   745,   749,   752,   653,
+     664,   756,   801,   805,   813,   665,   825,   826,   827,   828,
+     666,   829,   831,   832,   834,   835,   836,   892,   845,   841,
+     844,   848,   847,   850,   851,   853,   854,  1060,   857,   868,
+     867,   870,   871,   896,   872,   873,   874,   875,   876,   877,
+     882,   883,   884,   897,   900,   899,   603,   914,   907,   906,
+     902,   908,   909,   910,   911,   916,   919,   954,   913,   981,
+     915,   982,   917,   918,   920,   921,   987,   974,   922,   975,
+     976,   977,   978,   979,   983,   984,   985,   988,   990,   991,
+    1051,   996,  1022,  1015,  1028,   670,  1016,  1017,  1018,  1023,
+    1029,  1019,  1026,   690,  1030,  1031,   690,  1045,  1050,   190,
+    1053,  1055,   269,   191,  1058,   288,  1078,  1037,   932,  1054,
+    1079,   207,   933,  1080,   283,   192,  1038,   301,   193,   958,
+     948,  1083,   247,   208,   934,   305,   284,   935,   519,   302,
+     270,   961,   949,   289,   249,   194,   937,   290,   210,   291,
+    1084,   779,  1039,   962,   936,   792,   250,   959,   941,  1040,
+     942,   213,  1043,   781,   227,  1085,   925,   793,   673,  1000,
+    1086,   205,  1057,   220,   488,   782,   231,   816,  1059,   794,
+     947,  1002,   522,   923,   955,   221,  1088,   952,   232,   953,
+     973,   960,   980,  1003,   248,   972,   565,  1001,   927,   926,
+    1049,   214,   534,   215,   228,   951,   229,   261,   929,   931,
+     928,   992,   993,   536,   558,   930,   542,   971,   995,   994,
+     562,   970,   810,   216,   550,   969,   230,  1052,   986,   989,
+    1056,  1009,   584,   799,   586,  1076,   582,  1087,   671,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     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
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     932,     0,     0,     0,   933,     0,   958,     0,     0,     0,
+       0,     0,   948,     0,     0,     0,   934,     0,   961,   935,
+       0,     0,     0,  1000,   949,     0,     0,     0,   937,     0,
+     962,     0,     0,     0,   959,  1002,   936,     0,     0,     0,
+     941,     0,   942,     0,     0,     0,     0,  1003,     0,     0,
+       0,  1001,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   947,     0,     0,     0,     0,     0,   960
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
-      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,
+      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,   852,    82,    83,   852,    85,    82,    83,   852,    77,
+     852,    83,    77,    83,    78,    79,    78,    79,   852,   852,
+      17,     5,     7,     7,    10,     9,    11,     0,    13,    47,
+      48,    16,    17,    18,    12,    77,    78,    79,    80,    14,
+      15,    91,    19,     7,     3,    98,    99,    65,    66,     8,
+     137,   138,   139,   140,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    89,     3,    98,    99,    85,    86,     8,
+      96,    48,     3,    50,    51,     6,   170,    54,    55,    56,
+      65,    66,    47,     7,    91,    92,   173,    94,    65,    66,
+      65,    66,    77,    78,    79,    80,    81,     3,    83,     3,
+      65,    66,     8,    88,     8,   134,   135,    19,     3,     3,
+      65,    66,    97,     8,     8,   100,    28,   170,    83,     7,
+     170,     7,   107,     7,    89,    90,    91,    92,    93,    94,
+     115,   116,    19,     3,   119,     7,     6,    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,
+      37,    38,   170,    65,    66,     3,     7,   143,   531,     3,
+       8,    48,   117,   118,     8,     7,   152,   153,   154,     3,
+     543,   544,   545,  1024,     8,     7,  1024,   144,     3,    48,
+    1024,     7,  1024,     8,   170,   170,   170,   171,   172,   173,
+    1024,  1024,   170,   170,    47,   170,    65,    66,     3,   111,
+     112,   113,   114,     8,     7,   170,     7,    60,    61,    62,
+      63,    64,    65,    66,     3,   170,     7,    47,    46,     8,
+     594,    48,    49,    50,    51,    52,    53,     3,    58,     7,
+       6,    84,   858,     6,    87,    65,    66,   840,    65,    66,
+       3,    39,    40,    41,    42,     8,     3,     3,     3,    47,
+       3,     8,   885,     8,    84,     8,     4,    87,   170,    57,
+       3,    59,     8,   367,     3,     8,     4,    65,    66,    67,
+      68,    69,    70,    71,    72,     3,   145,     3,   147,   148,
+       8,     3,     8,   170,     6,     4,    84,     4,   146,    87,
+      88,   149,   150,   151,     4,   399,     4,    95,     4,   403,
+       4,   170,   101,   102,   103,   104,   105,   106,     3,     3,
+       8,   403,   416,     8,     8,   419,   416,   170,     4,     4,
+       3,     3,   426,   403,   416,     8,     8,   419,   416,     4,
+       3,   416,   436,     3,   426,     8,   416,     3,     8,   419,
+     170,     4,   446,   170,   436,     3,   426,   451,   416,     3,
+       8,   416,     6,     3,   446,   419,   436,   419,     8,   451,
+     357,   358,   426,     4,   426,     4,   446,     4,   472,     4,
+     446,   451,   170,     3,   416,   451,     8,   419,     8,   451,
+     472,   451,     8,     3,   426,     4,     4,    39,    40,    41,
+      42,     3,   472,    45,   436,    47,    48,    65,    66,     3,
+       3,   108,   109,   110,     8,     8,    73,    74,    75,    76,
+       8,     4,     4,    65,    66,     4,    68,    69,     4,    71,
+      72,    20,    21,    22,    23,     4,     4,     4,   170,     4,
+       4,     4,    84,     4,     4,    87,     4,     4,     4,     4,
+       4,   171,   171,    95,   171,     4,   171,   171,     4,     4,
+       4,     4,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,     4,     4,     4,     4,
+       4,     4,     4,   141,   142,     4,     4,     4,     4,   171,
+       4,     4,     4,   173,   588,     4,     4,     4,   485,   486,
+     487,   595,   596,   597,     4,     4,   173,   171,     4,     4,
+       4,     4,   170,   595,     4,     4,   171,     4,     4,   171,
+     171,   615,   616,   617,     4,   595,     4,     4,   170,     4,
+       4,     4,     4,   615,   616,   617,     4,   171,     4,     4,
+       4,   173,     4,   173,     4,   615,   616,   617,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,     4,     4,     4,     4,   173,   173,     4,
+     171,   171,   171,     4,     4,   173,   173,   564,   173,     4,
+       4,     4,     4,     4,     4,   170,   170,   173,     7,     7,
+       7,     7,     7,     7,     5,     5,     5,     5,     5,   170,
+     587,     7,     5,     5,     5,     3,     5,     7,     5,     5,
+     608,   170,     7,     7,     7,     7,     5,     5,     5,   170,
+     170,     7,   170,   170,     5,   136,     5,     7,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     170,   170,     7,     7,     7,     7,    82,     7,     7,   170,
+     170,     7,     7,     7,     7,   170,     4,     4,     4,     4,
+     170,     4,     4,     4,     4,     4,     4,   170,     3,     6,
+       6,     3,     6,     6,     3,     6,     3,     7,     6,     3,
+       6,     6,     3,     6,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     3,     3,     6,   504,   173,     4,     6,
+       8,     4,     4,     4,   171,     4,     4,     4,   171,     4,
+     171,     4,   171,   171,   171,   171,     4,   171,   173,   171,
+     171,   171,   171,   171,   171,   171,   171,     4,     6,     3,
+     173,     4,     8,   170,     4,   588,   170,   170,   170,     8,
+       8,   170,   170,   837,     3,     8,   840,     4,     4,   843,
+       4,     4,   846,   843,     5,   849,     4,   170,   852,   171,
+       4,   843,   852,     4,   846,   843,   170,   849,   843,   863,
+     852,     4,   866,   843,   852,   869,   846,   852,   399,   849,
+     846,   863,   852,   849,   866,   843,   852,   849,   843,   849,
+     173,   885,   170,   863,   852,   889,   866,   863,   852,   170,
+     852,   895,   170,   885,   898,   171,   842,   889,   595,   903,
+     171,   843,   170,   895,   367,   885,   898,   668,   170,   889,
+     852,   903,   403,   837,   861,   895,   170,   855,   898,   858,
+     871,   863,   878,   903,   866,   869,   454,   903,   845,   843,
+    1024,   895,   416,   895,   898,   854,   898,    81,   848,   851,
+     846,   895,   897,   419,   446,   849,   426,   868,   900,   898,
+     451,   866,   632,   895,   436,   864,   898,  1030,   885,   889,
+    1047,   904,   475,   617,   478,  1064,   472,  1081,   589,    -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,
-     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
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1024,    -1,    -1,    -1,  1024,    -1,  1030,    -1,    -1,    -1,
+      -1,    -1,  1024,    -1,    -1,    -1,  1024,    -1,  1030,  1024,
+      -1,    -1,    -1,  1047,  1024,    -1,    -1,    -1,  1024,    -1,
+    1030,    -1,    -1,    -1,  1030,  1047,  1024,    -1,    -1,    -1,
+    1024,    -1,  1024,    -1,    -1,    -1,    -1,  1047,    -1,    -1,
+      -1,  1047,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1024,    -1,    -1,    -1,    -1,    -1,  1030
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       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,
+       0,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,     0,     5,     7,     9,   170,   171,   172,   173,
+     191,   192,   193,   198,     7,   207,     7,   213,     7,   226,
+       7,   320,     7,   397,     7,   413,     7,   430,     7,   349,
+       7,   355,     7,   379,     7,   296,     7,   489,     7,   537,
+       7,   529,   199,   194,   208,   214,   227,   321,   398,   414,
+     431,   350,   356,   380,   297,   490,   538,   530,   191,   200,
+     201,   170,   196,   197,    10,   143,   152,   153,   154,   170,
+     206,   209,   210,   211,   520,   522,   524,   535,     7,    11,
+      13,    16,    17,    18,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    65,    66,    77,    78,    79,    80,    81,
+      83,    88,    97,   100,   107,   115,   116,   119,   206,   215,
+     216,   217,   218,   219,   220,   221,   222,   224,   233,   235,
+     237,   270,   276,   282,   288,   290,   304,   314,   339,   347,
+     373,   403,   405,   424,   454,   466,   478,   479,   487,   526,
+      14,    15,   206,   228,   229,   230,   232,   403,   405,    57,
+      59,    67,    68,    69,    70,    71,    72,    84,    87,    95,
+     206,   217,   218,   219,   220,   322,   323,   324,   326,   328,
+     330,   332,   334,   337,   338,   373,   391,   403,   405,   407,
+     424,   449,    58,   206,   330,   332,   373,   399,   400,   401,
+     403,   405,    60,    61,    62,    63,    64,   206,   330,   332,
+     373,   403,   405,   415,   416,   417,   419,   420,   422,   423,
+      83,    89,    90,    91,    92,    93,    94,   206,   373,   403,
+     405,   432,   433,   434,   435,   437,   439,   441,   443,   445,
+     447,   347,    19,    48,    50,    51,    54,    55,    56,   206,
+     255,   357,   358,   359,   360,   361,   362,   363,   365,   367,
+     369,   370,   372,   403,   405,    49,    52,    53,   206,   255,
+     361,   367,   381,   382,   383,   384,   385,   387,   388,   389,
+     390,   403,   405,    98,    99,   206,   298,   299,   300,   302,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   141,   142,   206,   403,   405,   491,
+     492,   493,   494,   496,   498,   499,   501,   502,   503,   506,
+     508,   509,   510,   511,   514,   516,   518,   144,   539,   540,
+     541,    12,   206,   531,   532,   533,     6,     3,     4,     8,
+       3,   212,   536,   521,   523,   525,     4,     3,     8,   527,
+     528,   225,   234,   236,   238,     4,     4,     4,     4,     4,
+     223,   315,   348,   374,   404,   406,   340,   277,   289,   283,
+     271,   455,   425,   291,   305,   467,     4,   480,   488,     3,
+       8,   231,     4,     3,     8,   392,   408,   325,   327,   329,
+       4,     4,   335,   333,   331,   450,     3,     8,   402,     3,
+       8,   418,     4,   421,     4,     4,     3,     8,   448,   436,
+     438,   440,   442,   444,   446,     8,     3,     8,   364,   256,
+       4,   368,   366,   371,     4,     8,     3,   386,     4,     4,
+       8,     3,   301,   303,     3,     8,     4,   495,   497,     4,
+     500,     4,     4,   504,   507,     4,     4,     4,   512,   515,
+     517,   519,     3,     8,   542,     3,     8,   534,     3,     8,
+     191,   191,   170,     4,     4,     4,     4,     4,   210,   531,
+       4,     4,     4,     4,     4,   171,   171,   171,   171,   171,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       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
+       4,     4,     4,     4,     4,     4,   171,     4,     4,   216,
+       4,   173,   229,     4,     4,     4,     4,     4,   171,   173,
+       4,     4,     4,     4,   323,     4,   400,     4,   171,     4,
+     171,   171,   416,     4,     4,     4,     4,     4,     4,     4,
+     434,     4,     4,   171,     4,     4,     4,   173,   359,     4,
+     173,   173,   383,     4,     4,   299,   173,     4,     4,   171,
+       4,   171,   171,     4,     4,   173,   173,   173,     4,     4,
+       4,     4,   492,     4,   540,     4,   532,     4,     7,     7,
+     191,   191,   191,     8,     7,     7,     7,     7,     5,   170,
+       5,     5,     5,   193,   195,   170,     5,     5,     5,     5,
+       7,     5,     5,     5,     7,     7,     7,     7,     5,   202,
+       5,     5,   170,   170,   170,    73,    74,    75,    76,   336,
+     202,   170,     7,   170,   170,   170,   202,   202,   202,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     191,   170,   170,   170,   134,   135,   505,   136,   137,   138,
+     139,   140,   173,   513,   170,   170,   170,     5,     5,   191,
+     215,   539,   531,   228,    19,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+     206,   243,   244,   245,   248,   250,   252,   254,   255,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   267,   268,
+     243,     7,   239,   240,   241,     7,   316,   317,   318,     7,
+     351,   352,   353,     7,   375,   376,   377,     7,   341,   342,
+     343,    91,   170,   278,   279,   280,   281,   200,    92,    94,
+     280,   284,   285,   286,   287,    82,   272,   273,   274,     7,
+     456,   457,     7,   426,   427,   428,     7,   292,   293,   294,
+     101,   102,   103,   104,   105,   106,   306,   307,   308,   309,
+     310,   311,   312,   313,    19,   111,   112,   113,   114,   206,
+     257,   403,   405,   468,   469,   470,   473,   474,   476,   477,
+     117,   118,   206,   403,   405,   481,   482,   483,   485,   491,
+     203,     7,   393,   394,   395,     7,   409,   410,   411,    96,
+     435,   451,   452,     7,   543,   544,   239,     8,     8,     8,
+       8,   246,   249,   251,   253,     4,     4,     4,     4,     4,
+     266,     4,     4,   269,     4,     4,     4,     3,     8,     8,
+     242,     6,     3,   319,     6,     3,   354,     6,     3,   378,
+       6,     3,   344,     6,     3,     3,     6,     6,     3,     6,
+     275,     3,     8,   458,     3,     6,   429,     6,     3,   295,
+       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
+     471,   475,     4,     4,     4,     3,     8,   484,   486,     3,
+       8,     8,   170,   204,   205,   396,     6,     3,   412,     6,
+       3,   453,     8,   545,     3,     6,     6,     4,     4,     4,
+       4,   171,   173,   171,   173,   171,     4,   171,   171,     4,
+     171,   171,   173,   244,   243,   241,   322,   318,   357,   353,
+     381,   377,   206,   217,   218,   219,   220,   255,   314,   326,
+     328,   330,   332,   334,   338,   345,   346,   373,   403,   405,
+     449,   343,   279,   285,     4,   273,    85,    86,   206,   255,
+     373,   403,   405,   459,   460,   461,   462,   463,   465,   457,
+     432,   428,   298,   294,   171,   171,   171,   171,   171,   171,
+     307,     4,     4,   171,   171,   171,   469,     4,     4,   482,
+       6,     3,   399,   395,   415,   411,     4,   145,   147,   148,
+     206,   255,   403,   405,   546,   547,   548,   549,   551,   544,
+      20,    21,    22,    23,   247,   170,   170,   170,   170,   170,
+       8,     8,     8,     8,     3,     8,   170,   464,     4,     8,
+       3,     8,     8,   108,   109,   110,   472,   170,   170,   170,
+     170,     8,     8,   170,   552,     4,   550,     3,     8,   346,
+       4,   173,   461,     4,   171,     4,   547,   170,     5,   170,
+       7,   553,   554,   555,     3,     6,   146,   149,   150,   151,
+     556,   557,   558,   560,   561,   562,   554,   559,     4,     4,
+       4,     3,     8,     4,   173,   171,   171,   557,   170
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       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
+       0,   174,   176,   175,   177,   175,   178,   175,   179,   175,
+     180,   175,   181,   175,   182,   175,   183,   175,   184,   175,
+     185,   175,   186,   175,   187,   175,   188,   175,   189,   175,
+     190,   175,   191,   191,   191,   191,   191,   191,   191,   192,
+     194,   193,   195,   196,   196,   197,   197,   199,   198,   200,
+     200,   201,   201,   203,   202,   204,   204,   205,   205,   206,
+     208,   207,   209,   209,   210,   210,   210,   210,   210,   210,
+     212,   211,   214,   213,   215,   215,   216,   216,   216,   216,
+     216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
+     216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
+     216,   216,   216,   216,   216,   216,   217,   218,   219,   220,
+     221,   223,   222,   225,   224,   227,   226,   228,   228,   229,
+     229,   229,   229,   229,   231,   230,   232,   234,   233,   236,
+     235,   238,   237,   239,   239,   240,   240,   242,   241,   243,
+     243,   244,   244,   244,   244,   244,   244,   244,   244,   244,
+     244,   244,   244,   244,   244,   244,   244,   244,   244,   246,
+     245,   247,   247,   247,   247,   249,   248,   251,   250,   253,
+     252,   254,   256,   255,   257,   258,   259,   260,   261,   262,
+     263,   264,   266,   265,   267,   269,   268,   271,   270,   272,
+     272,   273,   275,   274,   277,   276,   278,   278,   279,   279,
+     280,   281,   283,   282,   284,   284,   285,   285,   285,   286,
+     287,   289,   288,   291,   290,   292,   292,   293,   293,   295,
+     294,   297,   296,   298,   298,   298,   299,   299,   301,   300,
+     303,   302,   305,   304,   306,   306,   307,   307,   307,   307,
+     307,   307,   308,   309,   310,   311,   312,   313,   315,   314,
+     316,   316,   317,   317,   319,   318,   321,   320,   322,   322,
+     323,   323,   323,   323,   323,   323,   323,   323,   323,   323,
+     323,   323,   323,   323,   323,   323,   323,   323,   323,   323,
+     325,   324,   327,   326,   329,   328,   331,   330,   333,   332,
+     335,   334,   336,   336,   336,   336,   337,   338,   340,   339,
+     341,   341,   342,   342,   344,   343,   345,   345,   346,   346,
+     346,   346,   346,   346,   346,   346,   346,   346,   346,   346,
+     346,   346,   346,   346,   346,   348,   347,   350,   349,   351,
+     351,   352,   352,   354,   353,   356,   355,   357,   357,   358,
+     358,   359,   359,   359,   359,   359,   359,   359,   359,   359,
+     359,   360,   361,   362,   364,   363,   366,   365,   368,   367,
+     369,   371,   370,   372,   374,   373,   375,   375,   376,   376,
+     378,   377,   380,   379,   381,   381,   382,   382,   383,   383,
+     383,   383,   383,   383,   383,   383,   383,   384,   386,   385,
+     387,   388,   389,   390,   392,   391,   393,   393,   394,   394,
+     396,   395,   398,   397,   399,   399,   400,   400,   400,   400,
+     400,   400,   400,   402,   401,   404,   403,   406,   405,   408,
+     407,   409,   409,   410,   410,   412,   411,   414,   413,   415,
+     415,   416,   416,   416,   416,   416,   416,   416,   416,   416,
+     416,   416,   418,   417,   419,   421,   420,   422,   423,   425,
+     424,   426,   426,   427,   427,   429,   428,   431,   430,   432,
+     432,   433,   433,   434,   434,   434,   434,   434,   434,   434,
+     434,   434,   434,   434,   436,   435,   438,   437,   440,   439,
+     442,   441,   444,   443,   446,   445,   448,   447,   450,   449,
+     451,   451,   453,   452,   455,   454,   456,   456,   458,   457,
+     459,   459,   460,   460,   461,   461,   461,   461,   461,   461,
+     461,   462,   464,   463,   465,   467,   466,   468,   468,   469,
+     469,   469,   469,   469,   469,   469,   469,   469,   471,   470,
+     472,   472,   472,   473,   475,   474,   476,   477,   478,   480,
+     479,   481,   481,   482,   482,   482,   482,   482,   484,   483,
+     486,   485,   488,   487,   490,   489,   491,   491,   492,   492,
+     492,   492,   492,   492,   492,   492,   492,   492,   492,   492,
+     492,   492,   492,   492,   492,   492,   492,   493,   495,   494,
+     497,   496,   498,   500,   499,   501,   502,   504,   503,   505,
+     505,   507,   506,   508,   509,   510,   512,   511,   513,   513,
+     513,   513,   513,   515,   514,   517,   516,   519,   518,   521,
+     520,   523,   522,   525,   524,   527,   526,   528,   526,   530,
+     529,   531,   531,   532,   532,   534,   533,   536,   535,   538,
+     537,   539,   539,   540,   542,   541,   543,   543,   545,   544,
+     546,   546,   547,   547,   547,   547,   547,   547,   547,   548,
+     550,   549,   552,   551,   553,   553,   555,   554,   556,   556,
+     557,   557,   557,   557,   559,   558,   560,   561,   562
   };
 
   const unsigned char
@@ -4539,69 +4659,70 @@ 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,
-       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,     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,
        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,     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,
+       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,
        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,
+       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,
        0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       4,     3,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     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,
+       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,     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
+       1,     1,     1,     1,     1,     0,     6,     0,     4,     0,
+       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     1,     0,     4,     0,     4,     0,     4,
+       1,     0,     4,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       1,     1,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     3,     0,     4,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
+       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     6,
+       1,     1,     0,     4,     0,     6,     1,     3,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     3,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     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
   };
 
 
@@ -4612,19 +4733,19 @@ namespace isc { namespace dhcp {
   const Dhcp6Parser::yytname_[] =
   {
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
-  "\"]\"", "\"{\"", "\"}\"", "\"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\"",
+  "\"]\"", "\"{\"", "\"}\"", "\"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\"",
   "\"reconnect-wait-time\"", "\"keyspace\"", "\"request-timeout\"",
   "\"tcp-keepalive\"", "\"tcp-nodelay\"", "\"preferred-lifetime\"",
   "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
-  "\"decline-probation-period\"", "\"subnet6\"", "\"option-def\"",
-  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
-  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"decline-probation-period\"", "\"server-tag\"", "\"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\"",
@@ -4659,169 +4780,173 @@ namespace isc { namespace dhcp {
   "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",
-  "\"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",
+  "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",
   "valid_lifetime", "renew_timer", "rebind_timer",
-  "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",
+  "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",
   "reconnect_wait_time", "request_timeout", "tcp_keepalive", "tcp_nodelay",
-  "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",
+  "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",
   "mac_sources_value", "duid_id", "string_id",
-  "host_reservation_identifiers", "$@38",
+  "host_reservation_identifiers", "$@40",
   "host_reservation_identifiers_list", "host_reservation_identifier",
-  "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",
+  "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",
   "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", "$@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",
+  "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",
   "shared_networks_content", "shared_networks_list", "shared_network",
-  "$@56", "shared_network_params", "shared_network_param",
-  "option_def_list", "$@57", "sub_option_def_list", "$@58",
+  "$@58", "shared_network_params", "shared_network_param",
+  "option_def_list", "$@59", "sub_option_def_list", "$@60",
   "option_def_list_content", "not_empty_option_def_list",
-  "option_def_entry", "$@59", "sub_option_def", "$@60",
+  "option_def_entry", "$@61", "sub_option_def", "$@62",
   "option_def_params", "not_empty_option_def_params", "option_def_param",
-  "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_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_data_params", "not_empty_option_data_params",
-  "option_data_param", "option_data_name", "option_data_data", "$@68",
+  "option_data_param", "option_data_name", "option_data_data", "$@70",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "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",
+  "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",
   "pd_pools_list_content", "not_empty_pd_pools_list", "pd_pool_entry",
-  "$@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",
+  "$@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",
   "reservations_list", "not_empty_reservations_list", "reservation",
-  "$@81", "sub_reservation", "$@82", "reservation_params",
+  "$@83", "sub_reservation", "$@84", "reservation_params",
   "not_empty_reservation_params", "reservation_param", "ip_addresses",
-  "$@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",
+  "$@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",
   "not_empty_client_class_params", "client_class_param",
-  "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",
+  "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",
   "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates",
-  "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",
+  "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",
   "always_include_fqdn", "override_no_update", "override_client_update",
-  "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
+  "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
   };
 
 #if PARSER6_DEBUG
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       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
+       0,   256,   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,
+     270,   270,   278,   279,   280,   281,   282,   283,   284,   287,
+     292,   292,   303,   306,   307,   310,   314,   321,   321,   328,
+     329,   332,   336,   343,   343,   350,   351,   354,   358,   369,
+     379,   379,   394,   395,   399,   400,   401,   402,   403,   404,
+     407,   407,   422,   422,   431,   432,   437,   438,   439,   440,
+     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
+     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
+     461,   462,   463,   464,   465,   466,   469,   474,   479,   484,
+     489,   494,   494,   502,   502,   513,   513,   522,   523,   526,
+     527,   528,   529,   530,   533,   533,   543,   549,   549,   561,
+     561,   573,   573,   583,   584,   587,   588,   591,   591,   601,
+     602,   605,   606,   607,   608,   609,   610,   611,   612,   613,
+     614,   615,   616,   617,   618,   619,   620,   621,   622,   625,
+     625,   632,   633,   634,   635,   638,   638,   646,   646,   654,
+     654,   662,   667,   667,   675,   680,   685,   690,   695,   700,
+     705,   710,   715,   715,   723,   728,   728,   736,   736,   746,
+     747,   749,   751,   751,   769,   769,   779,   780,   783,   784,
+     787,   792,   797,   797,   807,   808,   811,   812,   813,   816,
+     821,   828,   828,   838,   838,   848,   849,   852,   853,   856,
+     856,   866,   866,   876,   877,   878,   881,   882,   885,   885,
+     893,   893,   901,   901,   912,   913,   916,   917,   918,   919,
+     920,   921,   924,   929,   934,   939,   944,   949,   957,   957,
+     970,   971,   974,   975,   982,   982,  1008,  1008,  1019,  1020,
+    1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,
+    1034,  1035,  1036,  1037,  1038,  1039,  1040,  1041,  1042,  1043,
+    1046,  1046,  1054,  1054,  1062,  1062,  1070,  1070,  1078,  1078,
+    1088,  1088,  1095,  1096,  1097,  1098,  1101,  1106,  1114,  1114,
+    1125,  1126,  1130,  1131,  1134,  1134,  1142,  1143,  1146,  1147,
+    1148,  1149,  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1157,
+    1158,  1159,  1160,  1161,  1162,  1169,  1169,  1182,  1182,  1191,
+    1192,  1195,  1196,  1201,  1201,  1216,  1216,  1230,  1231,  1234,
+    1235,  1238,  1239,  1240,  1241,  1242,  1243,  1244,  1245,  1246,
+    1247,  1250,  1252,  1257,  1259,  1259,  1267,  1267,  1275,  1275,
+    1283,  1285,  1285,  1293,  1302,  1302,  1314,  1315,  1320,  1321,
+    1326,  1326,  1338,  1338,  1350,  1351,  1356,  1357,  1362,  1363,
+    1364,  1365,  1366,  1367,  1368,  1369,  1370,  1373,  1375,  1375,
+    1383,  1385,  1387,  1392,  1400,  1400,  1412,  1413,  1416,  1417,
+    1420,  1420,  1430,  1430,  1439,  1440,  1443,  1444,  1445,  1446,
+    1447,  1448,  1449,  1452,  1452,  1460,  1460,  1485,  1485,  1515,
+    1515,  1527,  1528,  1531,  1532,  1535,  1535,  1547,  1547,  1559,
+    1560,  1563,  1564,  1565,  1566,  1567,  1568,  1569,  1570,  1571,
+    1572,  1573,  1576,  1576,  1584,  1589,  1589,  1597,  1602,  1610,
+    1610,  1620,  1621,  1624,  1625,  1628,  1628,  1637,  1637,  1646,
+    1647,  1650,  1651,  1655,  1656,  1657,  1658,  1659,  1660,  1661,
+    1662,  1663,  1664,  1665,  1668,  1668,  1678,  1678,  1688,  1688,
+    1696,  1696,  1704,  1704,  1712,  1712,  1720,  1720,  1733,  1733,
+    1743,  1744,  1747,  1747,  1758,  1758,  1768,  1769,  1772,  1772,
+    1782,  1783,  1786,  1787,  1790,  1791,  1792,  1793,  1794,  1795,
+    1796,  1799,  1801,  1801,  1809,  1817,  1817,  1829,  1830,  1833,
+    1834,  1835,  1836,  1837,  1838,  1839,  1840,  1841,  1844,  1844,
+    1851,  1852,  1853,  1856,  1861,  1861,  1869,  1874,  1881,  1888,
+    1888,  1898,  1899,  1902,  1903,  1904,  1905,  1906,  1909,  1909,
+    1917,  1917,  1927,  1927,  1939,  1939,  1949,  1950,  1953,  1954,
+    1955,  1956,  1957,  1958,  1959,  1960,  1961,  1962,  1963,  1964,
+    1965,  1966,  1967,  1968,  1969,  1970,  1971,  1974,  1979,  1979,
+    1987,  1987,  1995,  2000,  2000,  2008,  2013,  2018,  2018,  2026,
+    2027,  2030,  2030,  2038,  2043,  2048,  2053,  2053,  2061,  2064,
+    2067,  2070,  2073,  2079,  2079,  2087,  2087,  2095,  2095,  2105,
+    2105,  2112,  2112,  2119,  2119,  2128,  2128,  2137,  2137,  2148,
+    2148,  2158,  2159,  2163,  2164,  2167,  2167,  2182,  2182,  2192,
+    2192,  2203,  2204,  2208,  2212,  2212,  2224,  2225,  2229,  2229,
+    2237,  2238,  2241,  2242,  2243,  2244,  2245,  2246,  2247,  2250,
+    2255,  2255,  2263,  2263,  2273,  2274,  2277,  2277,  2285,  2286,
+    2289,  2290,  2291,  2292,  2295,  2295,  2303,  2308,  2313
   };
 
   // Print the state stack on the debug stream.
@@ -4856,8 +4981,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4860 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 2253 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4985 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 2318 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index f653c272549187c89dc5d0621bb28461529041b9..5a4bbb1e74dc067c6c676277d02856ffde4436f7 100644 (file)
@@ -355,165 +355,169 @@ namespace isc { namespace dhcp {
         TOKEN_RCURLY_BRACKET = 263,
         TOKEN_NULL_TYPE = 264,
         TOKEN_DHCP6 = 265,
-        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
+        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_GLOBAL = 330,
+        TOKEN_ALL = 331,
+        TOKEN_SHARED_NETWORKS = 332,
+        TOKEN_MAC_SOURCES = 333,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 334,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 335,
+        TOKEN_SANITY_CHECKS = 336,
+        TOKEN_LEASE_CHECKS = 337,
+        TOKEN_CLIENT_CLASSES = 338,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 339,
+        TOKEN_TEST = 340,
+        TOKEN_ONLY_IF_REQUIRED = 341,
+        TOKEN_CLIENT_CLASS = 342,
+        TOKEN_RESERVATIONS = 343,
+        TOKEN_IP_ADDRESSES = 344,
+        TOKEN_PREFIXES = 345,
+        TOKEN_DUID = 346,
+        TOKEN_HW_ADDRESS = 347,
+        TOKEN_HOSTNAME = 348,
+        TOKEN_FLEX_ID = 349,
+        TOKEN_RELAY = 350,
+        TOKEN_IP_ADDRESS = 351,
+        TOKEN_HOOKS_LIBRARIES = 352,
+        TOKEN_LIBRARY = 353,
+        TOKEN_PARAMETERS = 354,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 355,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 356,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 357,
+        TOKEN_HOLD_RECLAIMED_TIME = 358,
+        TOKEN_MAX_RECLAIM_LEASES = 359,
+        TOKEN_MAX_RECLAIM_TIME = 360,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 361,
+        TOKEN_SERVER_ID = 362,
+        TOKEN_LLT = 363,
+        TOKEN_EN = 364,
+        TOKEN_LL = 365,
+        TOKEN_IDENTIFIER = 366,
+        TOKEN_HTYPE = 367,
+        TOKEN_TIME = 368,
+        TOKEN_ENTERPRISE_ID = 369,
+        TOKEN_DHCP4O6_PORT = 370,
+        TOKEN_CONTROL_SOCKET = 371,
+        TOKEN_SOCKET_TYPE = 372,
+        TOKEN_SOCKET_NAME = 373,
+        TOKEN_DHCP_DDNS = 374,
+        TOKEN_ENABLE_UPDATES = 375,
+        TOKEN_QUALIFYING_SUFFIX = 376,
+        TOKEN_SERVER_IP = 377,
+        TOKEN_SERVER_PORT = 378,
+        TOKEN_SENDER_IP = 379,
+        TOKEN_SENDER_PORT = 380,
+        TOKEN_MAX_QUEUE_SIZE = 381,
+        TOKEN_NCR_PROTOCOL = 382,
+        TOKEN_NCR_FORMAT = 383,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 384,
+        TOKEN_OVERRIDE_NO_UPDATE = 385,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 386,
+        TOKEN_REPLACE_CLIENT_NAME = 387,
+        TOKEN_GENERATED_PREFIX = 388,
+        TOKEN_UDP = 389,
+        TOKEN_TCP = 390,
+        TOKEN_JSON = 391,
+        TOKEN_WHEN_PRESENT = 392,
+        TOKEN_NEVER = 393,
+        TOKEN_ALWAYS = 394,
+        TOKEN_WHEN_NOT_PRESENT = 395,
+        TOKEN_HOSTNAME_CHAR_SET = 396,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 397,
+        TOKEN_LOGGING = 398,
+        TOKEN_LOGGERS = 399,
+        TOKEN_OUTPUT_OPTIONS = 400,
+        TOKEN_OUTPUT = 401,
+        TOKEN_DEBUGLEVEL = 402,
+        TOKEN_SEVERITY = 403,
+        TOKEN_FLUSH = 404,
+        TOKEN_MAXSIZE = 405,
+        TOKEN_MAXVER = 406,
+        TOKEN_DHCP4 = 407,
+        TOKEN_DHCPDDNS = 408,
+        TOKEN_CONTROL_AGENT = 409,
+        TOKEN_TOPLEVEL_JSON = 410,
+        TOKEN_TOPLEVEL_DHCP6 = 411,
+        TOKEN_SUB_DHCP6 = 412,
+        TOKEN_SUB_INTERFACES6 = 413,
+        TOKEN_SUB_SUBNET6 = 414,
+        TOKEN_SUB_POOL6 = 415,
+        TOKEN_SUB_PD_POOL = 416,
+        TOKEN_SUB_RESERVATION = 417,
+        TOKEN_SUB_OPTION_DEFS = 418,
+        TOKEN_SUB_OPTION_DEF = 419,
+        TOKEN_SUB_OPTION_DATA = 420,
+        TOKEN_SUB_HOOKS_LIBRARY = 421,
+        TOKEN_SUB_DHCP_DDNS = 422,
+        TOKEN_SUB_LOGGING = 423,
+        TOKEN_SUB_CONFIG_CONTROL = 424,
+        TOKEN_STRING = 425,
+        TOKEN_INTEGER = 426,
+        TOKEN_FLOAT = 427,
+        TOKEN_BOOLEAN = 428
       };
     };
 
@@ -664,6 +668,14 @@ 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);
@@ -788,6 +800,10 @@ 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);
@@ -1284,6 +1300,10 @@ 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);
@@ -1505,12 +1525,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 988,     ///< Last index in yytable_.
-      yynnts_ = 377,  ///< Number of nonterminal symbols.
-      yyfinal_ = 30, ///< Termination state number.
+      yylast_ = 1018,     ///< Last index in yytable_.
+      yynnts_ = 389,  ///< Number of nonterminal symbols.
+      yyfinal_ = 32, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 170  ///< Number of tokens.
+      yyntokens_ = 174  ///< Number of tokens.
     };
 
 
@@ -1569,9 +1589,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
+     165,   166,   167,   168,   169,   170,   171,   172,   173
     };
-    const unsigned int user_token_number_max_ = 424;
+    const unsigned int user_token_number_max_ = 428;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1604,29 +1624,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 166: // "constant string"
+      case 170: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1647,29 +1667,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 166: // "constant string"
+      case 170: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1749,29 +1769,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 166: // "constant string"
+      case 170: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1798,29 +1818,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      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
+      case 191: // value
+      case 195: // map_value
+      case 247: // db_type
+      case 336: // hr_mode
+      case 472: // duid_type
+      case 505: // ncr_protocol_value
+      case 513: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 169: // "boolean"
+      case 173: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 168: // "floating point"
+      case 172: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 167: // "integer"
+      case 171: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 166: // "constant string"
+      case 170: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1895,7 +1915,8 @@ 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
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1954,6 +1975,18 @@ 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)
   {
@@ -2140,6 +2173,12 @@ 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)
   {
@@ -2884,6 +2923,12 @@ 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)
   {
@@ -2911,7 +2956,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2915 "dhcp6_parser.h" // lalr1.cc:377
+#line 2960 "dhcp6_parser.h" // lalr1.cc:377