]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5241] Added syntax, doc, parser, etc, but not the function
authorFrancis Dupont <fdupont@isc.org>
Fri, 7 Jul 2017 13:44:32 +0000 (15:44 +0200)
committerFrancis Dupont <fdupont@isc.org>
Fri, 7 Jul 2017 13:44:32 +0000 (15:44 +0200)
24 files changed:
doc/examples/kea4/multiple-options.json
doc/examples/kea6/multiple-options.json
doc/guide/dhcp4-srv.xml
doc/guide/dhcp6-srv.xml
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/simple_parser4.cc
src/bin/dhcp4/tests/get_config_unittest.cc
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/simple_parser6.cc
src/bin/dhcp6/tests/get_config_unittest.cc
src/lib/dhcpsrv/cfg_option.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.h
src/lib/dhcpsrv/tests/cfg_option_unittest.cc
src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc

index a68b65e93c955e7f4abbcc1d78e905bd5ece34c3..3256bf951c8aad8ff63612d37dc16bc84738e829 100644 (file)
          {
             "name": "default-ip-ttl",
             "data": "0xf0"
+         },
+            // At a few exceptions options are added to response only when
+            // the client requests them. The persistent flag should be used
+            // to enforce a particular option.
+         {
+            "name": "vendor-class-identifier",
+            "data": "isc",
+            "persistent": true
          }
        ],
 
index 685e18a1afc86974fc8f389d543828358eff98b9..0cbfdd0679e3f0e499a76fd2df3ffa8e791cd61f 100644 (file)
             {
                 "name": "bootfile-param",
                 "data": "root=/dev/sda2, quiet, splash"
+            },
+
+            // At a few exceptions options are added to response only when
+            // the client requests them. The persistent flag should be used
+            // to enforce a particular option.
+            {
+                "name": "pana-agent",
+                "data": "2001:db8:2::123",
+                "persistent": true
             }
       ],
       "pools": [
index 21ebaa8052166d748e3d73b9aaa75fbc1c3006d6..86ea9c7289ebb7509af767b2ce966b3a818f46b7 100644 (file)
@@ -990,8 +990,23 @@ temporarily override a list of interface names and listen on all interfaces.
         },
         ...
     ]
-} </screen>
-
+}
+        </screen>
+        Defined options are added to response when the client requests them
+        at a few exceptions which are always added. To enforce the addition
+        of a particular option set the persistent flag to true as in:
+        <screen>
+"Dhcp4": {
+    "option-data": [
+        {
+           <userinput>"name": "domain-name-servers",
+           "data": "192.0.2.1, 192.0.2.2",
+           "persistent": true</userinput>
+        },
+        ...
+    ]
+}
+        </screen>
       </para>
     <para>
       The <command>name</command> parameter specifies the option name. For a
index 4890917927bf49086c8faba34672de309292a79f..84de0bcb1d389e9cdda88e5f50b7ec2ff276ba06 100644 (file)
@@ -1010,7 +1010,7 @@ temporarily override a list of interface names and listen on all interfaces.
         be skipped, unless you want to specify the option value as
         hexstring. Therefore the above example can be simplified to:
         <screen>
-"Dhcp4": {
+"Dhcp6": {
     "option-data": [
         {
            <userinput>"name": "dns-servers",
@@ -1018,11 +1018,25 @@ temporarily override a list of interface names and listen on all interfaces.
         },
         ...
     ]
-} </screen>
-
+}
+        </screen>
+        Defined options are added to response when the client requests them
+        at a few exceptions which are always added. To enforce the addition
+        of a particular option set the persistent flag to true as in:
+        <screen>
+"Dhcp6": {
+    "option-data": [
+        {
+           <userinput>"name": "dns-servers",
+           "data": "2001:db8::cafe, 2001:db8::babe",
+           "persistent": true</userinput>
+        },
+        ...
+    ]
+}
+        </screen>
       </para>
 
-
     <para>
       It is possible to override options on a per-subnet basis.  If
       clients connected to most of your subnets are expected to get the
index 56167230854731960b2a84fc1075f2702cbffbd3..79cd62a86ce5af8baa2d0b758cf5417782621d42 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 152
-#define YY_END_OF_BUFFER 153
+#define YY_NUM_RULES 153
+#define YY_END_OF_BUFFER 154
 /* 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[1212] =
+static const flex_int16_t yy_accept[1216] =
     {   0,
-      145,  145,    0,    0,    0,    0,    0,    0,    0,    0,
-      153,  151,   10,   11,  151,    1,  145,  142,  145,  145,
-      151,  144,  143,  151,  151,  151,  151,  151,  138,  139,
-      151,  151,  151,  140,  141,    5,    5,    5,  151,  151,
-      151,   10,   11,    0,    0,  134,    0,    0,    0,    0,
+      146,  146,    0,    0,    0,    0,    0,    0,    0,    0,
+      154,  152,   10,   11,  152,    1,  146,  143,  146,  146,
+      152,  145,  144,  152,  152,  152,  152,  152,  139,  140,
+      152,  152,  152,  141,  142,    5,    5,    5,  152,  152,
+      152,   10,   11,    0,    0,  135,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  145,
-      145,    0,  144,  145,    3,    2,    6,    0,  145,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  146,
+      146,    0,  145,  146,    3,    2,    6,    0,  146,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      135,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  137,    0,    0,    0,    0,    0,
+      136,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  138,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,120 +722,120 @@ static const flex_int16_t yy_accept[1212] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  136,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  137,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   51,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   52,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      150,  148,    0,  147,  146,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  116,    0,  115,    0,    0,   57,
+      151,  149,    0,  148,  147,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  117,    0,  116,    0,    0,   58,
         0,    0,    0,    0,    0,    0,    0,    0,   26,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   55,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   56,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,   15,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   16,    0,    0,    0,  149,  146,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  117,
-        0,    0,  119,    0,    0,    0,    0,    0,    0,    0,
-       58,    0,    0,    0,    0,   44,    0,    0,    0,    0,
+        0,    0,    0,    0,   16,    0,    0,    0,  150,  147,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  118,
+        0,    0,  120,    0,    0,    0,    0,    0,    0,    0,
+       59,    0,    0,    0,    0,   44,    0,    0,    0,    0,
 
-        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   74,    0,    0,    0,    0,    0,    0,    0,    0,
         0,   29,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        43,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   46,    0,   30,    0,    0,    0,    0,    0,    0,
+        0,   47,    0,   30,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   71,   22,    0,   27,    0,    0,    0,    0,
-        0,    0,    0,   12,  124,    0,  121,    0,  120,    0,
-        0,    0,   83,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   72,   22,    0,   27,    0,    0,    0,    0,
+        0,    0,    0,   12,  125,    0,  122,    0,  121,    0,
+        0,    0,   84,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   65,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,   24,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   45,    0,    0,    0,    0,    0,
-        0,    0,    0,   84,    0,    0,    0,    0,    0,    0,
-        0,   79,    0,    0,    0,    0,    7,    0,    0,  122,
+        0,    0,    0,    0,   46,    0,    0,    0,    0,    0,
+        0,    0,    0,   85,    0,    0,    0,    0,    0,    0,
+        0,   80,    0,    0,    0,    0,    7,    0,    0,  123,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,   67,    0,    0,    0,    0,    0,    0,   63,
+        0,    0,   68,    0,    0,    0,    0,    0,    0,   64,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       48,    0,    0,    0,    0,    0,    0,    0,   60,    0,
+       49,    0,    0,    0,    0,    0,    0,    0,   61,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       77,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   88,   61,    0,    0,    0,   66,
+       78,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   89,   62,    0,    0,    0,   67,
        23,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        31,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       40,    0,    0,    0,    0,    0,  125,    0,    0,    0,
+        0,   40,    0,    0,    0,    0,    0,  126,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   54,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,    0,    0,    0,    0,   34,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   28,    0,    0,    0,    0,   21,    0,
+        0,    0,    0,    0,   55,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   79,    0,    0,    0,    0,   34,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       68,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   75,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   28,    0,    0,    0,    0,    0,
+       21,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   69,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   76,    0,    0,    0,
 
-        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   49,    0,    0,    0,    0,
+        0,    0,    0,  101,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   50,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   18,    0,    0,
-        0,    0,    0,    0,  105,    0,    0,  103,    0,    0,
-        0,    0,    0,    0,    0,  128,    0,    0,    0,    0,
-       76,    0,    0,    0,    0,   80,   64,    0,    0,    0,
+       18,    0,    0,    0,    0,    0,    0,  106,    0,    0,
+      104,    0,    0,    0,    0,    0,    0,    0,  129,    0,
+        0,    0,    0,   77,    0,    0,    0,    0,   81,   65,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       74,    0,   17,    0,   85,    0,    0,    0,    0,    0,
-      109,    0,    0,    0,   41,    0,    0,    0,    0,   87,
+        0,    0,    0,   75,    0,   17,    0,   86,    0,    0,
+        0,    0,    0,  110,    0,    0,    0,   41,    0,    0,
 
-       25,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   88,   45,   25,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   82,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  131,   42,   56,
-        0,    0,    0,    0,    0,    0,    0,    0,   37,    0,
-        0,    0,  106,    0,  104,   99,   98,    0,    0,    0,
-        0,    0,  118,    0,    0,   70,    0,    0,    0,    0,
-        0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   50,    0,    0,   32,    0,    0,    0,    0,
-
-      108,    0,    0,    0,    0,   52,   38,    0,   81,    0,
-        0,   72,    0,    0,   47,    0,  126,    0,    0,    0,
+        0,    0,    0,    0,    0,   83,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  132,   42,   57,    0,    0,    0,    0,    0,    0,
+        0,    0,   37,    0,    0,    0,  107,    0,  105,  100,
+       99,    0,    0,    0,    0,    0,  119,    0,    0,   71,
+        0,    0,    0,    0,    0,    0,   97,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   51,    0,    0,   32,
+
+        0,    0,    0,    0,  109,    0,    0,    0,    0,   53,
+       38,    0,   82,    0,    0,   73,    0,    0,   48,    0,
+      127,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  133,   69,    0,   35,   97,
-        0,    0,  129,  101,    0,    0,    0,    0,    0,    0,
-       20,    0,   19,    0,  107,    0,    0,   62,    0,    0,
-        0,    0,    0,    0,    0,    0,   36,    0,    0,    0,
-       33,    0,    0,    0,    0,    0,    0,   86,    0,    0,
-
-      130,    0,    0,    0,    0,    0,    0,    0,    0,  132,
-        0,  127,  123,    0,    0,   14,    0,    0,  114,    0,
-        0,    0,    0,   94,    0,    0,    0,    0,    0,   53,
-        0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
-        0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   93,    0,  111,    0,    0,    0,  110,    0,    0,
-        0,   92,    0,    0,    0,  113,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  134,
+       70,    0,   35,   98,    0,    0,  130,  102,    0,    0,
+        0,    0,    0,    0,   20,    0,   19,    0,  108,    0,
+        0,   63,    0,    0,    0,    0,    0,    0,    0,    0,
+       36,    0,    0,    0,   33,    0,    0,    0,    0,    0,
+
+        0,   87,    0,    0,  131,    0,    0,    0,    0,    0,
+        0,    0,    0,  133,    0,  128,  124,    0,    0,   14,
+        0,    0,  115,    0,    0,    0,    0,   95,    0,    0,
+        0,    0,    0,   54,    0,    0,    0,    0,    0,    0,
+        0,   13,    0,    0,    0,  103,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   94,    0,  112,    0,    0,
+        0,  111,    0,    0,    0,   93,    0,    0,    0,  114,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  112,    0,    0,    0,    0,
-        0,    0,   90,   95,   39,    0,    0,    0,   89,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  113,
+        0,    0,    0,    0,    0,    0,   91,   96,   39,    0,
 
-        0,    0,    0,    0,    0,    0,   59,    0,    0,   91,
-        0
+        0,    0,   90,    0,    0,    0,    0,    0,    0,    0,
+       60,    0,    0,   92,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -882,292 +882,292 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1224] =
+static const flex_int16_t yy_base[1228] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1573, 1574,   32, 1569,  141,    0,  201, 1574,  206,   88,
-       11,  213, 1574, 1551,  114,   25,    2,    6, 1574, 1574,
-       73,   11,   17, 1574, 1574, 1574,  104, 1557, 1512,    0,
-     1549,  107, 1564,  217,  247, 1574, 1508,  185, 1514,   93,
-       58, 1506,   91,  209,  200,   14,  273,  190, 1505,  181,
-      208,  200,  209, 1514,   66,  231, 1513,  267,  221,  295,
-      268,  280, 1496,   78,  287,  317,  297, 1515,    0,  333,
-      341,  353,  358,  361, 1574,    0, 1574,  376,  379,  208,
-      219,  316,  332,  342,  324, 1574, 1512, 1551, 1574,  373,
-
-     1574,  390, 1540,  344, 1509,  369,  353, 1504,  362,  369,
-      366,  373,  375, 1547,    0,  441,  370, 1491, 1493, 1489,
-     1497,   74, 1493, 1482, 1483,   89, 1499, 1482, 1491, 1491,
-      285, 1482,  186, 1483,  357, 1528, 1532, 1474, 1525, 1467,
-     1490, 1487, 1487, 1481,  217, 1474, 1467, 1472, 1466,  376,
-     1477, 1462, 1461, 1475,  355, 1461,  360, 1477,  367,  437,
-      377, 1474, 1475, 1473, 1455, 1457,  412, 1449, 1466, 1458,
-        0,  406,  391,  404,  411,  420,  412, 1457, 1574,    0,
-     1500,  440, 1451,  416,  440, 1459,  447, 1502,  452, 1501,
-      444, 1500, 1574,  488, 1499,  472, 1460, 1440, 1456, 1453,
-
-     1452,  224, 1493, 1487, 1453, 1432, 1440, 1435, 1449, 1445,
-     1433, 1445, 1445, 1436, 1420, 1424, 1437, 1437, 1429, 1419,
-     1437, 1574, 1432, 1435, 1416, 1415, 1465, 1414, 1424, 1427,
-      458, 1423, 1411, 1422, 1458, 1405, 1461, 1414,    9, 1404,
-     1420, 1401, 1400, 1406, 1397, 1396, 1403, 1405, 1450, 1408,
-     1407, 1401,  268, 1408, 1403, 1395, 1401, 1401, 1382, 1398,
-     1391, 1398, 1386, 1379, 1393, 1434, 1395, 1377, 1385,  473,
-     1574, 1574,  480, 1574, 1574, 1372,    0,  455,  440,  503,
-      481, 1429, 1382,  482, 1574, 1427, 1574, 1421,  530, 1574,
-      491, 1363, 1419, 1365, 1371, 1421, 1378,  415, 1574, 1376,
-
-     1418, 1373, 1370,  511, 1376, 1414, 1408, 1363, 1358, 1355,
-     1404, 1363, 1352, 1401, 1349,  536, 1363, 1348, 1361, 1348,
-     1358, 1353, 1360, 1355, 1351,  464, 1349, 1352, 1347, 1343,
-     1391,  482, 1385, 1574, 1337, 1336, 1329, 1331, 1335, 1324,
-     1337,  532, 1382, 1337, 1334, 1338, 1574, 1336, 1325, 1325,
-     1337, 1319, 1311, 1312, 1333, 1315, 1327, 1326, 1312, 1324,
-     1323, 1322, 1363, 1362, 1574, 1306,  551, 1319, 1574, 1574,
-     1318,    0, 1307, 1299,  505, 1356, 1355, 1313, 1353, 1574,
-     1301, 1351, 1574,  528,  585,  506, 1350, 1306, 1302, 1290,
-     1574, 1306, 1305, 1292, 1291, 1574, 1293, 1290,  501, 1288,
-
-     1290, 1574, 1298, 1295, 1280, 1293, 1288,  555, 1295, 1277,
-     1326, 1574, 1275, 1291, 1323, 1286, 1283, 1284, 1286, 1318,
-     1271, 1266, 1265, 1314, 1260, 1275, 1253, 1260, 1265, 1313,
-     1574, 1260, 1256, 1254, 1258, 1265, 1250, 1260, 1263, 1252,
-     1247, 1574, 1302, 1574, 1246, 1257, 1294, 1241, 1246, 1255,
-     1249, 1253, 1293, 1287, 1251, 1231, 1234, 1233, 1241, 1229,
-     1285, 1227, 1574, 1574, 1232, 1574, 1242, 1276, 1238,    0,
-     1222, 1239, 1277, 1574, 1574, 1225, 1574, 1231, 1574,  533,
-      536,  559, 1574, 1228, 1216, 1267, 1214, 1213, 1220, 1213,
-     1225, 1224, 1224, 1212, 1253, 1220, 1212, 1255, 1201, 1217,
-
-     1216, 1574, 1201, 1198, 1212, 1204, 1210, 1201, 1209, 1194,
-     1210, 1192, 1206, 1204, 1187, 1181, 1186, 1201, 1198, 1199,
-     1196, 1237, 1194, 1574, 1180, 1182, 1191, 1227, 1226,  543,
-     1189, 1172, 1173, 1170, 1574, 1184, 1163, 1184, 1181, 1173,
-     1216, 1170, 1214, 1574, 1161, 1175, 1178, 1210, 1209, 1156,
-     1207, 1574,  229, 1169, 1158, 1160, 1574, 1166, 1156, 1574,
-     1150, 1205,  549,  525, 1158, 1154, 1197,  536, 1196, 1195,
-     1194, 1148, 1138, 1191, 1144, 1154, 1188, 1151, 1145, 1132,
-     1140, 1183, 1187, 1144, 1143, 1144, 1137, 1126, 1139, 1142,
-     1137, 1138, 1135, 1134, 1137, 1132, 1173, 1172, 1122, 1112,
-
-     1120, 1168, 1574, 1167, 1116, 1108, 1109, 1122, 1109, 1574,
-     1109, 1118, 1117, 1117, 1157, 1100, 1109, 1102, 1113, 1090,
-     1094, 1145, 1092, 1102, 1142, 1089,  531,  544, 1083,  556,
-     1574, 1144, 1102, 1091, 1095, 1085, 1097, 1138, 1574, 1132,
-      555, 1085, 1093, 1088, 1084, 1091, 1074, 1077, 1073, 1090,
-     1085, 1073, 1069, 1076, 1070, 1122, 1079, 1067, 1081, 1069,
-     1574, 1077, 1075, 1066, 1075, 1071, 1112, 1054, 1054, 1067,
-     1052, 1107, 1049, 1050, 1574, 1574, 1058, 1061, 1064, 1574,
-     1574, 1063, 1048, 1040,  570, 1046, 1044, 1091, 1040, 1094,
-     1574, 1039, 1041, 1041, 1033, 1089, 1042, 1030, 1024, 1035,
-
-     1044, 1037, 1029, 1029, 1028, 1026, 1026, 1077, 1038, 1013,
-     1574, 1069, 1016, 1029, 1028, 1013, 1574,  583,  556, 1029,
-       17,   12,   94,  260,  290,  346,  349,  395,  425,  430,
-      565,  524,  522, 1574,  535,  555,  542,  568,  565,  610,
-      578,  562,  563, 1574,  581,  564,  629,  565, 1574,  584,
-      571,  589,  627,  587,  578,  597,  596,  582,  597,  589,
-      585,  603,  588, 1574,  596,  602,  597,  648, 1574,  599,
-      604,  598,  610,  604,  603,  656,  602,  602,  659,  605,
-     1574,  611,  609,  608,  622,  623,  628,  667,  641,  646,
-      620,  620,  672,  617, 1574,  624,  629,  636,  677,  678,
-
-      627, 1574,  623,  626,  625,  645,  642,  648,  649,  635,
-      643,  652,  632,  653,  693, 1574,  648,  695,  698,  660,
-      663,  651,  647,  654,  705,  654,  652,  670,  709,  661,
-      665,  663,  661,  714,  715,  711,  671, 1574,  676,  669,
-      678,  666,  676,  672, 1574,  667,  668, 1574,  669,  685,
-      686,  687,  669,  674,  692, 1574,  714,  705,  677,  698,
-     1574,  681,  696,  688,  692, 1574, 1574,  702,  737,  686,
-      739,  688,  746,  691,  702,  694,  700,  696,  714,  715,
-     1574,  713, 1574,  715, 1574,  719,  709,  702,  714,  756,
-     1574,  714,  764,  765, 1574,  766,  715,  722,  764, 1574,
-
-     1574,  714,  714,  717,  731,  718,  775,  734,  772,  778,
-      728,  780,  781,  782,  743,  727,  739,  744,  759,  788,
-      748,  740,  791,  740,  736,  752,  757,  739,  797,  752,
-      757, 1574,  758,  751,  760,  761,  758,  748,  750,  807,
-      756,  753,  810,  806,  749,  764,  814, 1574, 1574, 1574,
-      765,  775,  760,  761,  820,  822,  768,  824, 1574,  774,
-      776,  827, 1574,  791, 1574, 1574, 1574,  781,  831,  782,
-      834,  816, 1574,  794,  795, 1574,  782,  782,  785,  785,
-      786,  782, 1574,  804,  790,  791,  806,  806,  809,  809,
-      806,  811, 1574,  803,  813, 1574,  810,  815,  817,  814,
-
-     1574,  805,  811,  810,  821, 1574, 1574,  860, 1574,  809,
-      815, 1574,  818,  831, 1574,  828, 1574,  825,  848,  868,
-      874,  875,  819,  877,  878,  833,  827,  881,  882,  878,
-      843,  839,  881,  831,  836,  889,  847,  891,  851,  893,
-      856,  845,  896,  840,  857,  857,  841,  897,  862,  862,
-      859,  906,  866,  879,  866, 1574, 1574,  910, 1574, 1574,
-      859,  870, 1574, 1574,  860,  909,  854,  859,  917,  867,
-     1574,  873, 1574,  920, 1574,  865,  880, 1574,  918,  886,
-      879,  888,  876,  886,  929,  880, 1574,  931,  932,  879,
-     1574,  883,  935,  882,  881,  939,  894, 1574,  936,  898,
-
-     1574,  901,  944,  887,  889,  886,  902,  911,  950, 1574,
-      946, 1574, 1574,  911,  948, 1574,  902,  909, 1574,  906,
-      911,  958,  903, 1574,  907,  919,  962,  906,  914, 1574,
-      925,  915,  914,  928,  919,  928,  930, 1574,  972,  932,
-      974, 1574,  970,  934,  915,  978,  937,  938,  939,  982,
-      941, 1574,  946, 1574,  928,  986,  947, 1574,  933,  933,
-      935, 1574,  940,  935,  947, 1574,  945,  949,  940,  992,
-      941,  957,  950,  959,  950,  957,  944,  959, 1006,  965,
-      952,  968,  959,  973,  969, 1574, 1013, 1014, 1015,  972,
-      971,  972, 1574, 1574, 1574, 1019,  963,  979, 1574, 1017,
-
-      968,  967,  969,  980, 1027,  978, 1574,  987, 1030, 1574,
-     1574, 1036, 1041, 1046, 1051, 1056, 1061, 1066, 1069, 1043,
-     1048, 1050, 1063
+     1577, 1578,   32, 1573,  141,    0,  201, 1578,  206,   88,
+       11,  213, 1578, 1555,  114,   25,    2,    6, 1578, 1578,
+       73,   11,   17, 1578, 1578, 1578,  104, 1561, 1516,    0,
+     1553,  107, 1568,  217,  247, 1578, 1512,  185, 1518,   93,
+       58, 1510,   91,  209,  200,   14,  273,  190, 1509,  181,
+      208,  200,  209, 1518,   66,  231, 1517,  267,  221,  295,
+      268,  280, 1500,   78,  287,  317,  297, 1519,    0,  333,
+      341,  353,  358,  361, 1578,    0, 1578,  376,  379,  208,
+      219,  316,  332,  342,  324, 1578, 1516, 1555, 1578,  373,
+
+     1578,  390, 1544,  344, 1513,  369,  353, 1508,  362,  369,
+      366,  373,  375, 1551,    0,  441,  370, 1495, 1497, 1493,
+     1501,   74, 1497, 1486, 1487,   89, 1503, 1486, 1495, 1495,
+      285, 1486,  186, 1487,  357, 1532, 1536, 1478, 1529, 1471,
+     1494, 1491, 1491, 1485,  217, 1478, 1471, 1476, 1470,  376,
+     1481, 1466, 1465, 1479,  355, 1465,  360, 1481,  367,  437,
+      377, 1478, 1479, 1477, 1459, 1461,  412, 1453, 1470, 1462,
+        0,  406,  391,  404,  411,  420,  412, 1461, 1578,    0,
+     1504,  440, 1455,  416,  440, 1463,  447, 1506,  452, 1505,
+      444, 1504, 1578,  488, 1503,  472, 1464, 1444, 1460, 1457,
+
+     1456,  224, 1497, 1491, 1457, 1436, 1444, 1439, 1453, 1449,
+     1437, 1449, 1449, 1440, 1424, 1428, 1441, 1441, 1433, 1423,
+     1441, 1578, 1436, 1439, 1420, 1419, 1469, 1418, 1428, 1431,
+      458, 1427, 1415, 1426, 1462, 1409, 1465, 1418,    9, 1408,
+     1424, 1405, 1404, 1410, 1401, 1400, 1407, 1409, 1454, 1412,
+     1411, 1405,  268, 1412, 1407, 1399, 1405, 1405, 1386, 1402,
+     1395, 1402, 1390, 1383, 1397, 1438, 1399, 1381, 1389,  473,
+     1578, 1578,  480, 1578, 1578, 1376,    0,  455,  440,  503,
+      481, 1433, 1386,  482, 1578, 1431, 1578, 1425,  530, 1578,
+      491, 1367, 1423, 1369, 1375, 1425, 1382,  415, 1578, 1380,
+
+     1422, 1377, 1374,  511, 1380, 1418, 1412, 1367, 1362, 1359,
+     1408, 1367, 1356, 1405, 1353,  536, 1367, 1352, 1365, 1352,
+     1362, 1357, 1364, 1359, 1355,  464, 1353, 1356, 1351, 1347,
+     1395,  482, 1389, 1578, 1341, 1340, 1333, 1335, 1339, 1328,
+     1341,  532, 1386, 1341, 1338, 1342, 1578, 1340, 1329, 1329,
+     1341, 1323, 1315, 1316, 1337, 1319, 1331, 1330, 1316, 1328,
+     1327, 1326, 1367, 1366, 1578, 1310,  551, 1323, 1578, 1578,
+     1322,    0, 1311, 1303,  505, 1360, 1359, 1317, 1357, 1578,
+     1305, 1355, 1578,  528,  585,  506, 1354, 1310, 1306, 1294,
+     1578, 1310, 1309, 1296, 1295, 1578, 1297, 1294,  501, 1292,
+
+     1294, 1578, 1302, 1299, 1284, 1297, 1292,  555, 1299, 1281,
+     1330, 1578, 1279, 1295, 1327, 1290, 1287, 1288, 1290, 1322,
+     1275, 1270, 1269, 1318, 1264, 1279, 1257, 1264, 1269, 1317,
+     1578, 1264, 1260, 1258, 1262, 1269, 1254, 1264, 1267, 1256,
+     1251, 1578, 1306, 1578, 1250, 1261, 1298, 1245, 1250, 1259,
+     1253, 1257, 1297, 1291, 1255, 1235, 1238, 1237, 1245, 1233,
+     1289, 1231, 1578, 1578, 1236, 1578, 1246, 1280, 1242,    0,
+     1226, 1243, 1281, 1578, 1578, 1229, 1578, 1235, 1578,  533,
+      536,  559, 1578, 1232, 1220, 1271, 1218, 1217, 1224, 1217,
+     1229, 1228, 1228, 1216, 1257, 1224, 1216, 1259, 1205, 1221,
+
+     1220, 1578, 1205, 1202, 1216, 1208, 1214, 1205, 1213, 1198,
+     1214, 1196, 1210, 1208, 1191, 1185, 1190, 1205, 1202, 1203,
+     1200, 1241, 1198, 1578, 1184, 1186, 1195, 1231, 1230,  543,
+     1193, 1176, 1177, 1174, 1578, 1188, 1167, 1188, 1185, 1177,
+     1220, 1174, 1218, 1578, 1165, 1179, 1182, 1214, 1213, 1160,
+     1211, 1578,  229, 1173, 1162, 1164, 1578, 1170, 1160, 1578,
+     1154, 1209,  549,  525, 1162, 1158, 1201,  536, 1200, 1199,
+     1198, 1152, 1142, 1195, 1148, 1158, 1192, 1155, 1149, 1136,
+     1144, 1187, 1191, 1148, 1147, 1148, 1141, 1130, 1143, 1146,
+     1141, 1142, 1139, 1138, 1141, 1136, 1177, 1176, 1126, 1116,
+
+     1124, 1172, 1578, 1171, 1120, 1112, 1113, 1126, 1113, 1578,
+     1113, 1122, 1121, 1121,  565, 1105, 1114, 1107, 1118, 1095,
+     1099, 1150, 1097, 1107, 1147, 1094,  531,  544, 1088,  557,
+     1578, 1149, 1107, 1096, 1100, 1090, 1102, 1143, 1578, 1137,
+      555, 1090, 1098, 1093, 1089, 1096, 1079, 1082, 1078, 1095,
+     1090, 1078, 1074, 1081, 1075, 1127, 1084, 1072, 1086, 1074,
+     1578, 1082, 1080, 1071, 1080, 1076, 1117, 1059, 1059, 1072,
+     1057, 1112, 1054, 1055, 1578, 1578, 1063, 1066, 1069, 1578,
+     1578, 1068, 1053, 1045,  571, 1051, 1049, 1096, 1045, 1099,
+     1578, 1047, 1043, 1045, 1045, 1037, 1093, 1046, 1034, 1028,
+
+     1039, 1048, 1041, 1033, 1033, 1032, 1030, 1030, 1081, 1042,
+     1017, 1578, 1073, 1020, 1033, 1032, 1017, 1578,  584,  556,
+     1033,   17,   12,   94,  260,  290,  346,  349,  395,  425,
+      430,  566,  532,  534, 1578,  545,  558,  555,  573,  567,
+      612,  580,  564,  565, 1578,  583,  566,  629,  574, 1578,
+      593,  573,  591,  630,  590,  581,  599,  598,  584,  599,
+      591,  587,  605,  590, 1578,  590,  599,  605,  600,  651,
+     1578,  602,  607,  601,  613,  608,  606,  659,  605,  605,
+      662,  608, 1578,  614,  612,  611,  625,  626,  631,  670,
+      644,  649,  623,  623,  675,  620, 1578,  627,  632,  639,
+
+      680,  681,  630, 1578,  626,  629,  629,  649,  646,  651,
+      652,  638,  646,  655,  635,  656,  696, 1578,  651,  698,
+      701,  663,  666,  654,  650,  657,  708,  657,  655,  673,
+      712,  664,  668,  666,  664,  717,  718,  719,  715,  675,
+     1578,  680,  673,  682,  670,  680,  676, 1578,  671,  672,
+     1578,  673,  689,  690,  691,  673,  678,  696, 1578,  718,
+      709,  681,  702, 1578,  685,  700,  692,  696, 1578, 1578,
+      706,  741,  690,  743,  692,  750,  695,  706,  698,  704,
+      700,  718,  719, 1578,  717, 1578,  719, 1578,  723,  713,
+      706,  718,  760, 1578,  718,  768,  769, 1578,  770,  719,
+
+      726,  768, 1578, 1578, 1578,  718,  718,  721,  735,  722,
+      779,  738,  776,  782,  732,  784,  785,  786,  747,  731,
+      743,  748,  763,  792,  752,  744,  795,  744,  740,  756,
+      761,  743,  801,  756,  761, 1578,  762,  755,  764,  765,
+      762,  752,  754,  811,  760,  757,  814,  810,  753,  768,
+      818, 1578, 1578, 1578,  769,  779,  764,  765,  824,  826,
+      772,  828, 1578,  778,  780,  831, 1578,  795, 1578, 1578,
+     1578,  785,  835,  786,  838,  820, 1578,  798,  799, 1578,
+      786,  786,  789,  789,  790,  786, 1578,  808,  794,  795,
+      810,  810,  813,  813,  810,  815, 1578,  807,  817, 1578,
+
+      814,  819,  821,  818, 1578,  809,  815,  814,  825, 1578,
+     1578,  864, 1578,  813,  819, 1578,  822,  835, 1578,  832,
+     1578,  829,  852,  872,  878,  879,  823,  881,  882,  837,
+      831,  885,  886,  882,  847,  843,  885,  835,  840,  893,
+      851,  895,  855,  897,  860,  849,  900,  844,  861,  861,
+      845,  901,  866,  866,  863,  910,  870,  883,  870, 1578,
+     1578,  914, 1578, 1578,  863,  874, 1578, 1578,  864,  913,
+      858,  863,  921,  871, 1578,  877, 1578,  924, 1578,  869,
+      884, 1578,  922,  890,  883,  892,  880,  890,  933,  884,
+     1578,  935,  936,  883, 1578,  887,  939,  886,  885,  943,
+
+      898, 1578,  940,  902, 1578,  905,  948,  891,  893,  890,
+      906,  915,  954, 1578,  950, 1578, 1578,  915,  952, 1578,
+      906,  913, 1578,  910,  915,  962,  907, 1578,  911,  923,
+      966,  910,  918, 1578,  929,  919,  918,  932,  923,  932,
+      934, 1578,  976,  936,  978, 1578,  974,  938,  919,  982,
+      941,  942,  943,  986,  945, 1578,  950, 1578,  932,  990,
+      951, 1578,  937,  937,  939, 1578,  944,  939,  951, 1578,
+      949,  953,  944,  996,  945,  961,  954,  963,  954,  961,
+      948,  963, 1010,  969,  956,  972,  963,  977,  973, 1578,
+     1017, 1018, 1019,  976,  975,  976, 1578, 1578, 1578, 1023,
+
+      967,  983, 1578, 1021,  972,  971,  973,  984, 1031,  982,
+     1578,  991, 1034, 1578, 1578, 1040, 1045, 1050, 1055, 1060,
+     1065, 1070, 1073, 1047, 1052, 1054, 1067
     } ;
 
-static const flex_int16_t yy_def[1224] =
+static const flex_int16_t yy_def[1228] =
     {   0,
-     1212, 1212, 1213, 1213, 1212, 1212, 1212, 1212, 1212, 1212,
-     1211, 1211, 1211, 1211, 1211, 1214, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1215,
-     1211, 1211, 1211, 1216,   15, 1211,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1217,   45,   45,   45,
+     1216, 1216, 1217, 1217, 1216, 1216, 1216, 1216, 1216, 1216,
+     1215, 1215, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219,
+     1215, 1215, 1215, 1220,   15, 1215,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1221,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1214, 1211,
-     1211, 1211, 1211, 1211, 1211, 1218, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1215, 1211, 1216,
+       45,   45,   45,   45,   45,   45,   45,   45, 1218, 1215,
+     1215, 1215, 1215, 1215, 1215, 1222, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1220,
 
-     1211, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1219,   45, 1217,   45,   45,   45,   45,
+     1215, 1215,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1223,   45, 1221,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1218, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1220,
+     1222, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1224,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1219, 1211, 1217,   45,   45,   45,   45,   45,   45,
+       45, 1223, 1215, 1221,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1221,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45, 1211,   45, 1217, 1211,
-       45,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1225,   45,   45,   45,
+       45,   45,   45,   45, 1215,   45, 1215,   45, 1221, 1215,
+       45,   45,   45,   45,   45,   45,   45,   45, 1215,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
+       45,   45,   45, 1215,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1215,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45,   45, 1211, 1211,
-     1211, 1222,   45,   45,   45,   45,   45,   45,   45, 1211,
-       45,   45, 1211,   45, 1217,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45,   45,   45, 1215,   45,   45,   45, 1215, 1215,
+     1215, 1226,   45,   45,   45,   45,   45,   45,   45, 1215,
+       45,   45, 1215,   45, 1221,   45,   45,   45,   45,   45,
+     1215,   45,   45,   45,   45, 1215,   45,   45,   45,   45,
 
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45, 1211,   45,   45,   45,   45,   45,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45, 1215,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1211, 1211,   45, 1211,   45,   45, 1211, 1223,
-       45,   45,   45, 1211, 1211,   45, 1211,   45, 1211,   45,
-       45,   45, 1211,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1215, 1215,   45, 1215,   45,   45, 1215, 1227,
+       45,   45,   45, 1215, 1215,   45, 1215,   45, 1215,   45,
+       45,   45, 1215,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45, 1211,   45,   45, 1211,
+       45,   45,   45, 1215,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1215,   45,   45,   45,   45,   45,
+       45,   45,   45, 1215,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45,   45,   45,   45, 1215,   45,   45, 1215,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1211,   45,   45,   45,   45,   45,   45, 1211,
+       45,   45, 1215,   45,   45,   45,   45,   45,   45, 1215,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45, 1215,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211, 1211,   45,   45,   45, 1211,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1215, 1215,   45,   45,   45, 1215,
+     1215,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45, 1211,   45,
+       45, 1215,   45,   45,   45,   45,   45, 1215,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45, 1211,   45,
+       45,   45,   45,   45, 1215,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1215,   45,   45,   45,   45, 1215,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1215,   45,   45,   45,   45,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1215,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1215,   45,   45,   45,
 
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45,   45, 1215,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1215,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45, 1211,   45,   45,
-       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45, 1211, 1211,   45,   45,   45,
+     1215,   45,   45,   45,   45,   45,   45, 1215,   45,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45, 1215,   45,
+       45,   45,   45, 1215,   45,   45,   45,   45, 1215, 1215,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45, 1211,   45, 1211,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45, 1211,   45,   45,   45,   45, 1211,
+       45,   45,   45, 1215,   45, 1215,   45, 1215,   45,   45,
+       45,   45,   45, 1215,   45,   45,   45, 1215,   45,   45,
 
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1215, 1215, 1215,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1211, 1211, 1211,
-       45,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
-       45,   45, 1211,   45, 1211, 1211, 1211,   45,   45,   45,
-       45,   45, 1211,   45,   45, 1211,   45,   45,   45,   45,
-       45,   45, 1211,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1211,   45,   45, 1211,   45,   45,   45,   45,
-
-     1211,   45,   45,   45,   45, 1211, 1211,   45, 1211,   45,
-       45, 1211,   45,   45, 1211,   45, 1211,   45,   45,   45,
+       45,   45,   45,   45,   45, 1215,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1215, 1215, 1215,   45,   45,   45,   45,   45,   45,
+       45,   45, 1215,   45,   45,   45, 1215,   45, 1215, 1215,
+     1215,   45,   45,   45,   45,   45, 1215,   45,   45, 1215,
+       45,   45,   45,   45,   45,   45, 1215,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1215,   45,   45, 1215,
+
+       45,   45,   45,   45, 1215,   45,   45,   45,   45, 1215,
+     1215,   45, 1215,   45,   45, 1215,   45,   45, 1215,   45,
+     1215,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1211, 1211,   45, 1211, 1211,
-       45,   45, 1211, 1211,   45,   45,   45,   45,   45,   45,
-     1211,   45, 1211,   45, 1211,   45,   45, 1211,   45,   45,
-       45,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
-
-     1211,   45,   45,   45,   45,   45,   45,   45,   45, 1211,
-       45, 1211, 1211,   45,   45, 1211,   45,   45, 1211,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45, 1211,
-       45,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45, 1211,   45,   45,   45, 1211,   45,   45,
-       45, 1211,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1215,
+     1215,   45, 1215, 1215,   45,   45, 1215, 1215,   45,   45,
+       45,   45,   45,   45, 1215,   45, 1215,   45, 1215,   45,
+       45, 1215,   45,   45,   45,   45,   45,   45,   45,   45,
+     1215,   45,   45,   45, 1215,   45,   45,   45,   45,   45,
+
+       45, 1215,   45,   45, 1215,   45,   45,   45,   45,   45,
+       45,   45,   45, 1215,   45, 1215, 1215,   45,   45, 1215,
+       45,   45, 1215,   45,   45,   45,   45, 1215,   45,   45,
+       45,   45,   45, 1215,   45,   45,   45,   45,   45,   45,
+       45, 1215,   45,   45,   45, 1215,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1215,   45, 1215,   45,   45,
+       45, 1215,   45,   45,   45, 1215,   45,   45,   45, 1215,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
-       45,   45, 1211, 1211, 1211,   45,   45,   45, 1211,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1215,
+       45,   45,   45,   45,   45,   45, 1215, 1215, 1215,   45,
 
-       45,   45,   45,   45,   45,   45, 1211,   45,   45, 1211,
-        0, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211
+       45,   45, 1215,   45,   45,   45,   45,   45,   45,   45,
+     1215,   45,   45, 1215,    0, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215
     } ;
 
-static const flex_int16_t yy_nxt[1646] =
+static const flex_int16_t yy_nxt[1650] =
     {   0,
-     1211,   13,   14,   13, 1211,   15,   16, 1211,   17,   18,
+     1215,   13,   14,   13, 1215,   15,   16, 1215,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   85,  336,
-       37,   14,   37,   86,   25,   26,   38,  792, 1211,   27,
+       37,   14,   37,   86,   25,   26,   38,  794, 1215,   27,
        37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
       113,   30,   13,   14,   13,   90,   91,   25,   31,   92,
-       13,   14,   13,   13,   14,   13,   32,   40,  793,   13,
+       13,   14,   13,   13,   14,   13,   32,   40,  795,   13,
        14,   13,   33,   40,  113,   91,   92,  337,   90,   34,
        35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
@@ -1176,7 +1176,7 @@ static const flex_int16_t yy_nxt[1646] =
        39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
        42,   30,   82,  106,   41,  109,   93,   25,   31,  107,
       201,  159,   88,  135,   88,  160,   32,   89,   89,   89,
-      202,  136,   33,  206,  207,   82,  106,  794,  109,   34,
+      202,  136,   33,  206,  207,   82,  106,  796,  109,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   47,   45,   45,   45,   45,
        45,   48,   45,   45,   49,   45,   50,   45,   51,   52,
@@ -1190,7 +1190,7 @@ static const flex_int16_t yy_nxt[1646] =
        82,  110,  120,  215,  631,  121,  172,   82,  122,  104,
       123,  111,  124,  632,  117,  130,  112,  173,   82,  216,
       118,  125,  106,   82,  110,  126,  131,  102,  127,  128,
-       82,   45,  172,  133,  145,  795,  132,   45,  146,  111,
+       82,   45,  172,  133,  145,  797,  132,   45,  146,  111,
        45,  129,   45,  173,   45,   45,   45,  137,  115,  230,
       297,   45,   45,  231,   45,   45,  298,  138,  147,  139,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
@@ -1199,23 +1199,23 @@ static const flex_int16_t yy_nxt[1646] =
        45,   45,   45,   45,  141,  142,  151,   45,  143,  109,
       112,   45,  351,  155,  144,  352,  152,  156,  212,   45,
       213,  153,  154,   45,  161,   45,  116,  157,  148,  110,
-      149,  796,  150,  167,  162,  163,   84,   84,   84,  111,
+      149,  798,  150,  167,  162,  163,   84,   84,   84,  111,
       164,  174,   80,  168,   81,   81,   81,   82,  169,  174,
       172,   88,  110,   88,  165,   82,   89,   89,   89,   80,
       173,   83,   83,   83,   84,   84,   84,  111,  101,  174,
        82,  182,   82,  185,  166,   82,  175,  177,   82,   89,
        89,   89,   89,   89,   89,  100,  176,  184,  187,  191,
 
-      188,  189,  100,  797,  190,   82,  798,  182,   82,  182,
+      188,  189,  100,  799,  190,   82,  800,  182,   82,  182,
       185,  218,  187,  102,  219,  241,  242,  244,  220,  271,
       245,  246,  191,  184,  195,  248,  187,  188,  272,  189,
       100,  190,  249,  258,  100,  196,  272,  259,  100,  270,
       187,  260,  236,  190,  270,  271,  100,  250,  271,  281,
-      100,  272,  100,  180,  194,  194,  194,  799,  393,  275,
+      100,  272,  100,  180,  194,  194,  194,  801,  393,  275,
       279,  194,  194,  194,  194,  194,  194,  270,  326,  282,
-      266,  284,  273,  288,  274,  394,  286,  281,  375,  800,
+      266,  284,  273,  288,  274,  394,  286,  281,  375,  802,
       251,  252,  253,  279,  194,  194,  194,  194,  194,  194,
-      801,  254,  279,  255,  284,  256,  282,  369,  257,  286,
+      803,  254,  279,  255,  284,  256,  282,  369,  257,  286,
 
       288,  289,  289,  289,  369,  379,  373,  375,  289,  289,
       289,  289,  289,  289,  382,  291,  374,  376,  377,  327,
@@ -1224,48 +1224,48 @@ static const flex_int16_t yy_nxt[1646] =
       433,  412,  382,  385,  385,  385,  413,  493,  610,  641,
       385,  385,  385,  385,  385,  385,  466,  480,  386,  481,
       502,  467,  494,  563,  560,  503,  473,  482,  564,  565,
-      802,  803,  641,  385,  385,  385,  385,  385,  385,  804,
-      790,  645,  703,  640,  480,  611,  481,  646,  719,  704,
-      563,  805,  414,  443,  705,  706,  564,  415,   45,   45,
-
-       45,  806,  707,  790,  807,   45,   45,   45,   45,   45,
-       45,  640,  709,  758,  789,  808,  719,  759,  710,  809,
-      810,  811,  812,  813,  814,  815,  819,  820,   45,   45,
-       45,   45,   45,   45,  816,  821,  822,  823,  824,  817,
-      825,  789,  826,  827,  828,  829,  830,  831,  832,  834,
-      835,  836,  837,  838,  839,  840,  841,  842,  843,  833,
-      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
-      854,  855,  856,  857,  859,  858,  860,  861,  862,  863,
+      691,  804,  641,  385,  385,  385,  385,  385,  385,  805,
+      792,  645,  704,  640,  480,  611,  481,  646,  720,  705,
+      563,  806,  414,  443,  706,  707,  564,  415,   45,   45,
+
+       45,  807,  708,  792,  808,   45,   45,   45,   45,   45,
+       45,  640,  692,  710,  759,  791,  720,  809,  760,  711,
+      810,  811,  812,  813,  814,  815,  816,  817,   45,   45,
+       45,   45,   45,   45,  818,  821,  822,  823,  824,  819,
+      825,  826,  791,  827,  828,  829,  830,  831,  832,  833,
+      834,  836,  837,  838,  839,  840,  841,  842,  843,  844,
+      845,  835,  846,  847,  848,  849,  850,  851,  852,  853,
+      854,  855,  856,  857,  858,  859,  860,  862,  861,  863,
       864,  865,  866,  867,  868,  869,  870,  871,  872,  873,
-      818,  874,  875,  876,  877,  878,  879,  880,  881,  882,
+      820,  874,  875,  876,  877,  878,  879,  880,  881,  882,
 
-      883,  857,  858,  885,  886,  884,  887,  888,  889,  890,
+      883,  884,  885,  886,  860,  861,  888,  889,  887,  890,
       891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
       901,  902,  903,  904,  905,  906,  907,  908,  909,  910,
       911,  912,  913,  914,  915,  916,  917,  918,  919,  920,
       921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
       931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
-      941,  919,  942,  943,  944,  945,  946,  920,  947,  948,
-      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
-      959,  960,  961,  963,  964,  965,  966,  967,  968,  969,
-      970,  971,  972,  973,  974,  975,  976,  978,  979,  980,
-
-      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
-      991,  992,  993,  994,  995,  996,  997,  998,  999, 1001,
-      972, 1002, 1003, 1004, 1005, 1006, 1000, 1007, 1008, 1009,
-     1010, 1011, 1012,  962, 1013, 1014, 1015, 1016,  977, 1017,
-     1019, 1020, 1021, 1022, 1018, 1023, 1024, 1025, 1026, 1027,
+      941,  942,  943,  944,  945,  923,  946,  947,  948,  949,
+      950,  924,  951,  952,  953,  954,  955,  956,  957,  958,
+      959,  960,  961,  962,  963,  964,  965,  967,  968,  969,
+      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
+
+      980,  982,  983,  984,  985,  986,  987,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
+     1001, 1002, 1003, 1005,  976, 1006, 1007, 1008, 1009, 1010,
+     1004, 1011, 1012, 1013, 1014, 1015, 1016,  966, 1017, 1018,
+     1019, 1020,  981, 1021, 1023, 1024, 1025, 1026, 1022, 1027,
      1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
-     1038, 1039, 1040, 1019, 1041, 1042, 1043, 1044, 1045, 1046,
+     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1023, 1045, 1046,
      1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
      1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
      1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
 
-     1077, 1078, 1079, 1080, 1054, 1081, 1082, 1083, 1084, 1085,
+     1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1058, 1085,
      1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
      1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105,
      1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115,
-     1116, 1089, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
+     1116, 1117, 1118, 1119, 1120, 1093, 1121, 1122, 1123, 1124,
      1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
      1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
      1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
@@ -1275,84 +1275,84 @@ static const flex_int16_t yy_nxt[1646] =
      1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
      1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194,
      1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
-     1205, 1206, 1207, 1208, 1209, 1210,   12,   12,   12,   12,
-       12,   36,   36,   36,   36,   36,   79,  277,   79,   79,
-       79,   98,  372,   98,  470,   98,  100,  100,  100,  100,
-      100,  114,  114,  114,  114,  114,  171,  100,  171,  171,
-      171,  192,  192,  192,  791,  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,  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,  725,  724,  723,  722,
-      721,  720,  718,  717,  716,  715,  714,  713,  712,  711,
-      708,  702,  701,  700,  699,  698,  697,  696,  695,  694,
-      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
-      683,  682,  681,  680,  679,  678,  677,  676,  675,  674,
-      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
-      663,  662,  661,  660,  659,  658,  657,  656,  655,  654,
-
-      653,  652,  651,  650,  649,  648,  647,  644,  643,  642,
-      639,  638,  637,  636,  635,  634,  633,  630,  629,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  609,  608,  607,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
-      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
-      585,  584,  583,  582,  581,  580,  579,  578,  577,  576,
-      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
-      562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
-      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
-
-      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
-      532,  531,  530,  529,  528,  527,  526,  525,  524,  523,
-      522,  521,  520,  519,  518,  517,  516,  515,  514,  513,
-      512,  511,  510,  509,  508,  507,  506,  505,  504,  501,
-      500,  499,  498,  497,  496,  495,  492,  491,  490,  489,
-      488,  487,  486,  485,  484,  483,  479,  478,  477,  476,
-      475,  474,  472,  471,  469,  468,  465,  464,  463,  462,
-      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-      451,  450,  449,  448,  447,  446,  445,  444,  441,  440,
-      439,  438,  437,  436,  435,  434,  431,  430,  429,  428,
-
-      427,  424,  423,  422,  421,  420,  419,  418,  417,  416,
-      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
-      401,  398,  397,  396,  395,  392,  391,  390,  389,  388,
-      387,  384,  383,  381,  380,  371,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
-      354,  353,  350,  349,  348,  347,  346,  345,  344,  343,
-      342,  341,  340,  339,  338,  335,  334,  333,  332,  331,
-      330,  329,  325,  324,  323,  322,  321,  320,  319,  318,
-      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
-      307,  306,  305,  304,  303,  302,  301,  300,  299,  296,
-
-      295,  294,  293,  292,  290,  193,  287,  285,  283,  280,
-      278,  276,  269,  268,  267,  265,  264,  263,  262,  261,
-      247,  243,  240,  239,  238,  237,  235,  234,  233,  232,
-      229,  228,  227,  226,  225,  224,  223,  222,  221,  217,
-      214,  211,  210,  209,  208,  205,  204,  203,  200,  199,
-      198,  197,  193,  186,  183,  181,  179,  178,  170,  158,
-      140,  134,  119,  108,  105,  103,   43,   99,   97,   96,
-       87,   43, 1211,   11, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211
+     1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+       12,   12,   12,   12,   12,   36,   36,   36,   36,   36,
+       79,  277,   79,   79,   79,   98,  372,   98,  470,   98,
+      100,  100,  100,  100,  100,  114,  114,  114,  114,  114,
+      171,  100,  171,  171,  171,  192,  192,  192,  793,  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,  762,  761,  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,  725,  724,  723,  722,  721,  719,  718,  717,
+      716,  715,  714,  713,  712,  709,  703,  702,  701,  700,
+      699,  698,  697,  696,  695,  694,  693,  690,  689,  688,
+      687,  686,  685,  684,  683,  682,  681,  680,  679,  678,
+      677,  676,  675,  674,  673,  672,  671,  670,  669,  668,
+      667,  666,  665,  664,  663,  662,  661,  660,  659,  658,
+
+      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
+      647,  644,  643,  642,  639,  638,  637,  636,  635,  634,
+      633,  630,  629,  628,  627,  626,  625,  624,  623,  622,
+      621,  620,  619,  618,  617,  616,  615,  614,  613,  612,
+      609,  608,  607,  606,  605,  604,  603,  602,  601,  600,
+      599,  598,  597,  596,  595,  594,  593,  592,  591,  590,
+      589,  588,  587,  586,  585,  584,  583,  582,  581,  580,
+      579,  578,  577,  576,  575,  574,  573,  572,  571,  570,
+      569,  568,  567,  566,  562,  561,  560,  559,  558,  557,
+      556,  555,  554,  553,  552,  551,  550,  549,  548,  547,
+
+      546,  545,  544,  543,  542,  541,  540,  539,  538,  537,
+      536,  535,  534,  533,  532,  531,  530,  529,  528,  527,
+      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
+      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  501,  500,  499,  498,  497,  496,  495,
+      492,  491,  490,  489,  488,  487,  486,  485,  484,  483,
+      479,  478,  477,  476,  475,  474,  472,  471,  469,  468,
+      465,  464,  463,  462,  461,  460,  459,  458,  457,  456,
+      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
+      445,  444,  441,  440,  439,  438,  437,  436,  435,  434,
+
+      431,  430,  429,  428,  427,  424,  423,  422,  421,  420,
+      419,  418,  417,  416,  411,  410,  409,  408,  407,  406,
+      405,  404,  403,  402,  401,  398,  397,  396,  395,  392,
+      391,  390,  389,  388,  387,  384,  383,  381,  380,  371,
+      368,  367,  366,  365,  364,  363,  362,  361,  360,  359,
+      358,  357,  356,  355,  354,  353,  350,  349,  348,  347,
+      346,  345,  344,  343,  342,  341,  340,  339,  338,  335,
+      334,  333,  332,  331,  330,  329,  325,  324,  323,  322,
+      321,  320,  319,  318,  317,  316,  315,  314,  313,  312,
+      311,  310,  309,  308,  307,  306,  305,  304,  303,  302,
+
+      301,  300,  299,  296,  295,  294,  293,  292,  290,  193,
+      287,  285,  283,  280,  278,  276,  269,  268,  267,  265,
+      264,  263,  262,  261,  247,  243,  240,  239,  238,  237,
+      235,  234,  233,  232,  229,  228,  227,  226,  225,  224,
+      223,  222,  221,  217,  214,  211,  210,  209,  208,  205,
+      204,  203,  200,  199,  198,  197,  193,  186,  183,  181,
+      179,  178,  170,  158,  140,  134,  119,  108,  105,  103,
+       43,   99,   97,   96,   87,   43, 1215,   11, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215
     } ;
 
-static const flex_int16_t yy_chk[1646] =
+static const flex_int16_t yy_chk[1650] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,   21,  239,
-        3,    3,    3,   21,    1,    1,    3,  721,    0,    1,
+        3,    3,    3,   21,    1,    1,    3,  722,    0,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        56,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  722,    8,
+        6,    6,    6,    7,    7,    7,    1,    7,  723,    8,
         8,    8,    1,    8,   56,   27,   28,  239,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
@@ -1361,7 +1361,7 @@ static const flex_int16_t yy_chk[1646] =
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   50,   10,   53,   31,    2,    2,   51,
       122,   74,   25,   65,   25,   74,    2,   25,   25,   25,
-      122,   65,    2,  126,  126,   20,   50,  723,   53,    2,
+      122,   65,    2,  126,  126,   20,   50,  724,   53,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1375,7 +1375,7 @@ static const flex_int16_t yy_chk[1646] =
        19,   54,   60,  133,  553,   60,   90,   22,   60,   48,
        60,   54,   60,  553,   58,   62,   55,   91,   17,  133,
        58,   61,   63,   19,   54,   61,   62,   44,   61,   61,
-       22,   45,   90,   63,   69,  724,   62,   45,   69,   54,
+       22,   45,   90,   63,   69,  725,   62,   45,   69,   54,
        45,   61,   45,   91,   45,   45,   45,   66,   57,  145,
       202,   45,   45,  145,   45,   57,  202,   66,   69,   66,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
@@ -1384,23 +1384,23 @@ static const flex_int16_t yy_chk[1646] =
        45,   45,   45,   57,   68,   68,   71,   57,   68,   70,
        77,   57,  253,   72,   68,  253,   71,   72,  131,   57,
       131,   71,   71,   57,   75,   57,   57,   72,   70,   76,
-       70,  725,   70,   77,   75,   75,   80,   80,   80,   76,
+       70,  726,   70,   77,   75,   75,   80,   80,   80,   76,
        75,   92,   81,   77,   81,   81,   81,   80,   77,   95,
        93,   82,   76,   82,   76,   81,   82,   82,   82,   83,
        94,   83,   83,   83,   84,   84,   84,   76,  100,   92,
        80,  104,   83,  107,   76,   84,   93,   95,   81,   88,
        88,   88,   89,   89,   89,  102,   94,  106,  109,  113,
 
-      110,  111,  102,  726,  112,   83,  727,  117,   84,  104,
+      110,  111,  102,  727,  112,   83,  728,  117,   84,  104,
       107,  135,  150,  100,  135,  155,  155,  157,  135,  173,
       157,  157,  113,  106,  117,  159,  109,  110,  174,  111,
       102,  112,  159,  161,  102,  117,  177,  161,  102,  172,
       150,  161,  150,  167,  175,  173,  102,  160,  176,  184,
-      102,  174,  102,  102,  116,  116,  116,  728,  298,  177,
+      102,  174,  102,  102,  116,  116,  116,  729,  298,  177,
       182,  116,  116,  116,  116,  116,  116,  172,  231,  185,
-      167,  187,  175,  191,  176,  298,  189,  184,  279,  729,
+      167,  187,  175,  191,  176,  298,  189,  184,  279,  730,
       160,  160,  160,  182,  116,  116,  116,  116,  116,  116,
-      730,  160,  196,  160,  187,  160,  185,  270,  160,  189,
+      731,  160,  196,  160,  187,  160,  185,  270,  160,  189,
 
       191,  194,  194,  194,  273,  281,  278,  279,  194,  194,
       194,  194,  194,  194,  284,  196,  278,  280,  280,  231,
@@ -1409,125 +1409,125 @@ static const flex_int16_t yy_chk[1646] =
       332,  316,  284,  289,  289,  289,  316,  399,  530,  564,
       289,  289,  289,  289,  289,  289,  367,  384,  291,  384,
       408,  367,  399,  480,  482,  408,  375,  386,  481,  482,
-      731,  732,  564,  289,  289,  289,  289,  289,  289,  733,
-      719,  568,  627,  563,  384,  530,  384,  568,  641,  627,
-      480,  735,  316,  342,  628,  628,  481,  316,  385,  385,
-
-      385,  736,  628,  719,  737,  385,  385,  385,  385,  385,
-      385,  563,  630,  685,  718,  738,  641,  685,  630,  739,
-      740,  741,  742,  743,  745,  746,  748,  750,  385,  385,
-      385,  385,  385,  385,  747,  751,  752,  753,  754,  747,
-      755,  718,  756,  757,  758,  759,  760,  761,  762,  763,
-      765,  766,  767,  768,  770,  771,  772,  773,  774,  762,
-      775,  776,  777,  778,  779,  780,  782,  783,  784,  785,
-      786,  787,  788,  789,  791,  790,  792,  793,  794,  796,
-      797,  798,  799,  800,  801,  803,  804,  805,  806,  807,
-      747,  808,  809,  810,  811,  812,  813,  814,  815,  817,
-
-      818,  789,  790,  819,  820,  818,  821,  822,  823,  824,
-      825,  826,  827,  828,  829,  830,  831,  832,  833,  834,
-      835,  836,  837,  839,  840,  841,  842,  843,  844,  846,
-      847,  849,  850,  851,  852,  853,  854,  855,  857,  858,
-      859,  860,  862,  863,  864,  865,  868,  869,  870,  871,
-      872,  873,  874,  875,  876,  877,  878,  879,  880,  882,
-      884,  857,  886,  887,  888,  889,  890,  858,  892,  893,
-      894,  896,  897,  898,  899,  902,  903,  904,  905,  906,
+      615,  732,  564,  289,  289,  289,  289,  289,  289,  733,
+      720,  568,  627,  563,  384,  530,  384,  568,  641,  627,
+      480,  734,  316,  342,  628,  628,  481,  316,  385,  385,
+
+      385,  736,  628,  720,  737,  385,  385,  385,  385,  385,
+      385,  563,  615,  630,  685,  719,  641,  738,  685,  630,
+      739,  740,  741,  742,  743,  744,  746,  747,  385,  385,
+      385,  385,  385,  385,  748,  749,  751,  752,  753,  748,
+      754,  755,  719,  756,  757,  758,  759,  760,  761,  762,
+      763,  764,  766,  767,  768,  769,  770,  772,  773,  774,
+      775,  763,  776,  777,  778,  779,  780,  781,  782,  784,
+      785,  786,  787,  788,  789,  790,  791,  793,  792,  794,
+      795,  796,  798,  799,  800,  801,  802,  803,  805,  806,
+      748,  807,  808,  809,  810,  811,  812,  813,  814,  815,
+
+      816,  817,  819,  820,  791,  792,  821,  822,  820,  823,
+      824,  825,  826,  827,  828,  829,  830,  831,  832,  833,
+      834,  835,  836,  837,  838,  839,  840,  842,  843,  844,
+      845,  846,  847,  849,  850,  852,  853,  854,  855,  856,
+      857,  858,  860,  861,  862,  863,  865,  866,  867,  868,
+      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
+      881,  882,  883,  885,  887,  860,  889,  890,  891,  892,
+      893,  861,  895,  896,  897,  899,  900,  901,  902,  906,
       907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
       917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
 
-      927,  928,  929,  930,  931,  933,  934,  935,  936,  937,
+      927,  928,  929,  930,  931,  932,  933,  934,  935,  937,
       938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
-      919,  951,  952,  953,  954,  955,  946,  956,  957,  958,
-      960,  961,  962,  909,  964,  968,  969,  970,  923,  971,
-      972,  974,  975,  977,  971,  978,  979,  980,  981,  982,
-      984,  985,  986,  987,  988,  989,  990,  991,  992,  994,
-      995,  997,  998,  972,  999, 1000, 1002, 1003, 1004, 1005,
-     1008, 1010, 1011, 1013, 1014, 1016, 1018, 1019, 1020, 1021,
+      948,  949,  950,  951,  923,  955,  956,  957,  958,  959,
+      950,  960,  961,  962,  964,  965,  966,  913,  968,  972,
+      973,  974,  927,  975,  976,  978,  979,  981,  975,  982,
+      983,  984,  985,  986,  988,  989,  990,  991,  992,  993,
+      994,  995,  996,  998,  999, 1001, 1002,  976, 1003, 1004,
+     1006, 1007, 1008, 1009, 1012, 1014, 1015, 1017, 1018, 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, 1019, 1046, 1047, 1048, 1049, 1050,
-     1051, 1052, 1053, 1054, 1055, 1058, 1061, 1062, 1065, 1066,
-     1067, 1068, 1069, 1070, 1072, 1074, 1076, 1077, 1079, 1080,
-     1081, 1082, 1083, 1084, 1085, 1086, 1088, 1089, 1090, 1092,
-     1093, 1054, 1094, 1095, 1096, 1097, 1099, 1100, 1102, 1103,
-     1104, 1105, 1106, 1107, 1108, 1109, 1111, 1114, 1115, 1117,
-     1118, 1120, 1121, 1122, 1123, 1125, 1126, 1127, 1128, 1129,
-     1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1140, 1141,
-     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1153,
-     1155, 1156, 1157, 1159, 1160, 1161, 1163, 1164, 1165, 1167,
-
-     1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
-     1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1187, 1188,
-     1189, 1190, 1191, 1192, 1196, 1197, 1198, 1200, 1201, 1202,
-     1203, 1204, 1205, 1206, 1208, 1209, 1212, 1212, 1212, 1212,
-     1212, 1213, 1213, 1213, 1213, 1213, 1214, 1220, 1214, 1214,
-     1214, 1215, 1221, 1215, 1222, 1215, 1216, 1216, 1216, 1216,
-     1216, 1217, 1217, 1217, 1217, 1217, 1218, 1223, 1218, 1218,
-     1218, 1219, 1219, 1219,  720,  716,  715,  714,  713,  712,
-      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  697,  696,  695,  694,  693,  692,  690,
-
-      689,  688,  687,  686,  684,  683,  682,  679,  678,  677,
-      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  660,  659,  658,  657,  656,  655,  654,
-      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
-      643,  642,  640,  638,  637,  636,  635,  634,  633,  632,
-      629,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  611,  609,  608,  607,
-      606,  605,  604,  602,  601,  600,  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,  567,  566,  565,
-      562,  561,  559,  558,  556,  555,  554,  551,  550,  549,
-      548,  547,  546,  545,  543,  542,  541,  540,  539,  538,
-      537,  536,  534,  533,  532,  531,  529,  528,  527,  526,
-      525,  523,  522,  521,  520,  519,  518,  517,  516,  515,
-      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
-      504,  503,  501,  500,  499,  498,  497,  496,  495,  494,
-      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
-      478,  476,  473,  472,  471,  469,  468,  467,  465,  462,
-      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-
-      451,  450,  449,  448,  447,  446,  445,  443,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  430,  429,
-      428,  427,  426,  425,  424,  423,  422,  421,  420,  419,
-      418,  417,  416,  415,  414,  413,  411,  410,  409,  407,
-      406,  405,  404,  403,  401,  400,  398,  397,  395,  394,
-      393,  392,  390,  389,  388,  387,  382,  381,  379,  378,
-      377,  376,  374,  373,  371,  368,  366,  364,  363,  362,
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  346,  345,  344,  343,  341,  340,
-      339,  338,  337,  336,  335,  333,  331,  330,  329,  328,
-
-      327,  325,  324,  323,  322,  321,  320,  319,  318,  317,
-      315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
-      305,  303,  302,  301,  300,  297,  296,  295,  294,  293,
-      292,  288,  286,  283,  282,  276,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
-      255,  254,  252,  251,  250,  249,  248,  247,  246,  245,
-      244,  243,  242,  241,  240,  238,  237,  236,  235,  234,
-      233,  232,  230,  229,  228,  227,  226,  225,  224,  223,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      211,  210,  209,  208,  207,  206,  205,  204,  203,  201,
-
-      200,  199,  198,  197,  195,  192,  190,  188,  186,  183,
-      181,  178,  170,  169,  168,  166,  165,  164,  163,  162,
-      158,  156,  154,  153,  152,  151,  149,  148,  147,  146,
-      144,  143,  142,  141,  140,  139,  138,  137,  136,  134,
-      132,  130,  129,  128,  127,  125,  124,  123,  121,  120,
-      119,  118,  114,  108,  105,  103,   98,   97,   78,   73,
-       67,   64,   59,   52,   49,   47,   43,   41,   39,   38,
-       24,   14,   11, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211
+     1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1023, 1050,
+     1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1062,
+     1065, 1066, 1069, 1070, 1071, 1072, 1073, 1074, 1076, 1078,
+     1080, 1081, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
+     1092, 1093, 1094, 1096, 1097, 1058, 1098, 1099, 1100, 1101,
+     1103, 1104, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
+     1115, 1118, 1119, 1121, 1122, 1124, 1125, 1126, 1127, 1129,
+     1130, 1131, 1132, 1133, 1135, 1136, 1137, 1138, 1139, 1140,
+     1141, 1143, 1144, 1145, 1147, 1148, 1149, 1150, 1151, 1152,
+     1153, 1154, 1155, 1157, 1159, 1160, 1161, 1163, 1164, 1165,
+
+     1167, 1168, 1169, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
+     1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
+     1188, 1189, 1191, 1192, 1193, 1194, 1195, 1196, 1200, 1201,
+     1202, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1212, 1213,
+     1216, 1216, 1216, 1216, 1216, 1217, 1217, 1217, 1217, 1217,
+     1218, 1224, 1218, 1218, 1218, 1219, 1225, 1219, 1226, 1219,
+     1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221, 1221, 1221,
+     1222, 1227, 1222, 1222, 1222, 1223, 1223, 1223,  721,  717,
+      716,  715,  714,  713,  711,  710,  709,  708,  707,  706,
+      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
+
+      695,  694,  693,  692,  690,  689,  688,  687,  686,  684,
+      683,  682,  679,  678,  677,  674,  673,  672,  671,  670,
+      669,  668,  667,  666,  665,  664,  663,  662,  660,  659,
+      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
+      648,  647,  646,  645,  644,  643,  642,  640,  638,  637,
+      636,  635,  634,  633,  632,  629,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  617,  616,  614,  613,  612,
+      611,  609,  608,  607,  606,  605,  604,  602,  601,  600,
+      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,  567,  566,  565,  562,  561,  559,  558,  556,  555,
+      554,  551,  550,  549,  548,  547,  546,  545,  543,  542,
+      541,  540,  539,  538,  537,  536,  534,  533,  532,  531,
+      529,  528,  527,  526,  525,  523,  522,  521,  520,  519,
+      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
+      508,  507,  506,  505,  504,  503,  501,  500,  499,  498,
+      497,  496,  495,  494,  493,  492,  491,  490,  489,  488,
+      487,  486,  485,  484,  478,  476,  473,  472,  471,  469,
+      468,  467,  465,  462,  461,  460,  459,  458,  457,  456,
+
+      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
+      445,  443,  441,  440,  439,  438,  437,  436,  435,  434,
+      433,  432,  430,  429,  428,  427,  426,  425,  424,  423,
+      422,  421,  420,  419,  418,  417,  416,  415,  414,  413,
+      411,  410,  409,  407,  406,  405,  404,  403,  401,  400,
+      398,  397,  395,  394,  393,  392,  390,  389,  388,  387,
+      382,  381,  379,  378,  377,  376,  374,  373,  371,  368,
+      366,  364,  363,  362,  361,  360,  359,  358,  357,  356,
+      355,  354,  353,  352,  351,  350,  349,  348,  346,  345,
+      344,  343,  341,  340,  339,  338,  337,  336,  335,  333,
+
+      331,  330,  329,  328,  327,  325,  324,  323,  322,  321,
+      320,  319,  318,  317,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  303,  302,  301,  300,  297,
+      296,  295,  294,  293,  292,  288,  286,  283,  282,  276,
+      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
+      259,  258,  257,  256,  255,  254,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  238,
+      237,  236,  235,  234,  233,  232,  230,  229,  228,  227,
+      226,  225,  224,  223,  221,  220,  219,  218,  217,  216,
+      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
+
+      205,  204,  203,  201,  200,  199,  198,  197,  195,  192,
+      190,  188,  186,  183,  181,  178,  170,  169,  168,  166,
+      165,  164,  163,  162,  158,  156,  154,  153,  152,  151,
+      149,  148,  147,  146,  144,  143,  142,  141,  140,  139,
+      138,  137,  136,  134,  132,  130,  129,  128,  127,  125,
+      124,  123,  121,  120,  119,  118,  114,  108,  105,  103,
+       98,   97,   78,   73,   67,   64,   59,   52,   49,   47,
+       43,   41,   39,   38,   24,   14,   11, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1536,25 +1536,25 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[152] =
+static const flex_int16_t yy_rule_linenum[153] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  177,  186,  195,  204,  213,  223,  232,  241,  250,
       259,  268,  279,  288,  297,  306,  315,  325,  335,  345,
       355,  365,  375,  385,  395,  405,  415,  425,  435,  444,
       453,  462,  476,  491,  500,  509,  518,  527,  536,  545,
-      554,  563,  572,  581,  590,  599,  608,  617,  627,  636,
-      645,  654,  663,  672,  681,  690,  699,  708,  717,  727,
-      737,  747,  756,  766,  776,  786,  796,  806,  815,  825,
-      834,  843,  852,  861,  870,  880,  890,  899,  908,  917,
+      554,  563,  572,  581,  590,  599,  608,  617,  626,  636,
+      645,  654,  663,  672,  681,  690,  699,  708,  717,  726,
+      736,  746,  756,  765,  775,  785,  795,  805,  815,  824,
+      834,  843,  852,  861,  870,  879,  889,  899,  908,  917,
       926,  935,  944,  953,  962,  971,  980,  989,  998, 1007,
 
      1016, 1025, 1034, 1043, 1052, 1061, 1070, 1079, 1088, 1097,
-     1106, 1115, 1124, 1133, 1142, 1152, 1162, 1172, 1182, 1192,
-     1202, 1212, 1222, 1232, 1241, 1250, 1259, 1268, 1277, 1287,
-     1297, 1309, 1320, 1333, 1431, 1436, 1441, 1446, 1447, 1448,
-     1449, 1450, 1451, 1453, 1471, 1484, 1489, 1493, 1495, 1497,
-     1499
+     1106, 1115, 1124, 1133, 1142, 1151, 1161, 1171, 1181, 1191,
+     1201, 1211, 1221, 1231, 1241, 1250, 1259, 1268, 1277, 1286,
+     1296, 1306, 1318, 1329, 1342, 1440, 1445, 1450, 1455, 1456,
+     1457, 1458, 1459, 1460, 1462, 1480, 1493, 1498, 1502, 1504,
+     1506, 1508
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1979,13 +1979,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 >= 1212 )
+                               if ( yy_current_state >= 1216 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1211 );
+               while ( yy_current_state != 1215 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2004,13 +2004,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 < 152 )
+                       else if ( yy_act < 153 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 152 )
+                       else if ( yy_act == 153 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 153 )
+                       else if ( yy_act == 154 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2539,6 +2539,18 @@ YY_RULE_SETUP
 case 45:
 YY_RULE_SETUP
 #line 500 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::OPTION_DATA:
+        return isc::dhcp::Dhcp4Parser::make_PERSISTENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("persistent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 509 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2548,9 +2560,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 509 "dhcp4_lexer.ll"
+#line 518 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -2560,9 +2572,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 518 "dhcp4_lexer.ll"
+#line 527 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -2572,9 +2584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 527 "dhcp4_lexer.ll"
+#line 536 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2584,9 +2596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 536 "dhcp4_lexer.ll"
+#line 545 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2596,9 +2608,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 545 "dhcp4_lexer.ll"
+#line 554 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2608,9 +2620,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 554 "dhcp4_lexer.ll"
+#line 563 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2620,9 +2632,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 563 "dhcp4_lexer.ll"
+#line 572 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2632,9 +2644,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 572 "dhcp4_lexer.ll"
+#line 581 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2644,9 +2656,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 581 "dhcp4_lexer.ll"
+#line 590 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2656,9 +2668,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 590 "dhcp4_lexer.ll"
+#line 599 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2668,9 +2680,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 599 "dhcp4_lexer.ll"
+#line 608 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2680,9 +2692,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 608 "dhcp4_lexer.ll"
+#line 617 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2692,9 +2704,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 617 "dhcp4_lexer.ll"
+#line 626 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2705,9 +2717,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 627 "dhcp4_lexer.ll"
+#line 636 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2717,9 +2729,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 636 "dhcp4_lexer.ll"
+#line 645 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2729,9 +2741,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 645 "dhcp4_lexer.ll"
+#line 654 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
@@ -2741,9 +2753,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 654 "dhcp4_lexer.ll"
+#line 663 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2753,9 +2765,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 663 "dhcp4_lexer.ll"
+#line 672 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2765,9 +2777,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 672 "dhcp4_lexer.ll"
+#line 681 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2777,9 +2789,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 681 "dhcp4_lexer.ll"
+#line 690 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2789,9 +2801,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 690 "dhcp4_lexer.ll"
+#line 699 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2801,9 +2813,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 699 "dhcp4_lexer.ll"
+#line 708 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2813,9 +2825,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 708 "dhcp4_lexer.ll"
+#line 717 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2825,9 +2837,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 717 "dhcp4_lexer.ll"
+#line 726 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2838,9 +2850,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 727 "dhcp4_lexer.ll"
+#line 736 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2851,9 +2863,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 737 "dhcp4_lexer.ll"
+#line 746 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -2864,9 +2876,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 747 "dhcp4_lexer.ll"
+#line 756 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2876,9 +2888,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 756 "dhcp4_lexer.ll"
+#line 765 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2889,9 +2901,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 766 "dhcp4_lexer.ll"
+#line 775 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2902,9 +2914,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 776 "dhcp4_lexer.ll"
+#line 785 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2915,9 +2927,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 786 "dhcp4_lexer.ll"
+#line 795 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2928,9 +2940,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 796 "dhcp4_lexer.ll"
+#line 805 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2941,9 +2953,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 806 "dhcp4_lexer.ll"
+#line 815 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -2953,9 +2965,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 815 "dhcp4_lexer.ll"
+#line 824 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2966,9 +2978,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 825 "dhcp4_lexer.ll"
+#line 834 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2978,9 +2990,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 834 "dhcp4_lexer.ll"
+#line 843 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2990,9 +3002,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 843 "dhcp4_lexer.ll"
+#line 852 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3002,9 +3014,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 852 "dhcp4_lexer.ll"
+#line 861 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3014,9 +3026,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 861 "dhcp4_lexer.ll"
+#line 870 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3026,9 +3038,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 870 "dhcp4_lexer.ll"
+#line 879 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3039,9 +3051,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 880 "dhcp4_lexer.ll"
+#line 889 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3051,9 +3063,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 890 "dhcp4_lexer.ll"
+#line 899 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3063,9 +3075,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 899 "dhcp4_lexer.ll"
+#line 908 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3075,9 +3087,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 908 "dhcp4_lexer.ll"
+#line 917 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3087,9 +3099,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 917 "dhcp4_lexer.ll"
+#line 926 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3099,9 +3111,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 926 "dhcp4_lexer.ll"
+#line 935 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3111,9 +3123,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 935 "dhcp4_lexer.ll"
+#line 944 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3123,9 +3135,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 944 "dhcp4_lexer.ll"
+#line 953 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3135,9 +3147,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 953 "dhcp4_lexer.ll"
+#line 962 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3147,9 +3159,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 962 "dhcp4_lexer.ll"
+#line 971 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3159,9 +3171,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 971 "dhcp4_lexer.ll"
+#line 980 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3171,9 +3183,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 980 "dhcp4_lexer.ll"
+#line 989 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3183,9 +3195,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 989 "dhcp4_lexer.ll"
+#line 998 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3195,9 +3207,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 998 "dhcp4_lexer.ll"
+#line 1007 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3207,9 +3219,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1007 "dhcp4_lexer.ll"
+#line 1016 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3219,9 +3231,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1016 "dhcp4_lexer.ll"
+#line 1025 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3231,9 +3243,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1025 "dhcp4_lexer.ll"
+#line 1034 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3243,9 +3255,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1034 "dhcp4_lexer.ll"
+#line 1043 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3255,9 +3267,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1043 "dhcp4_lexer.ll"
+#line 1052 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3267,9 +3279,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1052 "dhcp4_lexer.ll"
+#line 1061 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3279,9 +3291,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1061 "dhcp4_lexer.ll"
+#line 1070 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3291,9 +3303,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1070 "dhcp4_lexer.ll"
+#line 1079 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3303,9 +3315,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1079 "dhcp4_lexer.ll"
+#line 1088 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3315,9 +3327,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1088 "dhcp4_lexer.ll"
+#line 1097 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3327,9 +3339,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1097 "dhcp4_lexer.ll"
+#line 1106 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3339,9 +3351,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1106 "dhcp4_lexer.ll"
+#line 1115 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3351,9 +3363,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1115 "dhcp4_lexer.ll"
+#line 1124 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3363,9 +3375,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1124 "dhcp4_lexer.ll"
+#line 1133 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3375,9 +3387,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1133 "dhcp4_lexer.ll"
+#line 1142 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3387,9 +3399,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1142 "dhcp4_lexer.ll"
+#line 1151 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3400,9 +3412,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1152 "dhcp4_lexer.ll"
+#line 1161 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3413,9 +3425,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1162 "dhcp4_lexer.ll"
+#line 1171 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -3426,9 +3438,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1172 "dhcp4_lexer.ll"
+#line 1181 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3439,9 +3451,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1182 "dhcp4_lexer.ll"
+#line 1191 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3452,9 +3464,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1192 "dhcp4_lexer.ll"
+#line 1201 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3465,9 +3477,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1202 "dhcp4_lexer.ll"
+#line 1211 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3478,9 +3490,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1212 "dhcp4_lexer.ll"
+#line 1221 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3491,9 +3503,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1222 "dhcp4_lexer.ll"
+#line 1231 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3504,9 +3516,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1232 "dhcp4_lexer.ll"
+#line 1241 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3516,9 +3528,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1241 "dhcp4_lexer.ll"
+#line 1250 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3528,9 +3540,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1250 "dhcp4_lexer.ll"
+#line 1259 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3540,9 +3552,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1259 "dhcp4_lexer.ll"
+#line 1268 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3552,9 +3564,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1268 "dhcp4_lexer.ll"
+#line 1277 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3564,9 +3576,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1277 "dhcp4_lexer.ll"
+#line 1286 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3577,9 +3589,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1287 "dhcp4_lexer.ll"
+#line 1296 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3590,9 +3602,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1297 "dhcp4_lexer.ll"
+#line 1306 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3605,9 +3617,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1309 "dhcp4_lexer.ll"
+#line 1318 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3619,9 +3631,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1320 "dhcp4_lexer.ll"
+#line 1329 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3633,9 +3645,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1333 "dhcp4_lexer.ll"
+#line 1342 "dhcp4_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -3734,65 +3746,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 135:
-/* rule 135 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 1431 "dhcp4_lexer.ll"
+#line 1440 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 136:
-/* rule 136 can match eol */
+case 137:
+/* rule 137 can match eol */
 YY_RULE_SETUP
-#line 1436 "dhcp4_lexer.ll"
+#line 1445 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1441 "dhcp4_lexer.ll"
+#line 1450 "dhcp4_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1446 "dhcp4_lexer.ll"
+#line 1455 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1447 "dhcp4_lexer.ll"
+#line 1456 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1448 "dhcp4_lexer.ll"
+#line 1457 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1449 "dhcp4_lexer.ll"
+#line 1458 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1450 "dhcp4_lexer.ll"
+#line 1459 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1451 "dhcp4_lexer.ll"
+#line 1460 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1453 "dhcp4_lexer.ll"
+#line 1462 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -3811,9 +3823,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1471 "dhcp4_lexer.ll"
+#line 1480 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -3827,43 +3839,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1484 "dhcp4_lexer.ll"
+#line 1493 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1489 "dhcp4_lexer.ll"
+#line 1498 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1493 "dhcp4_lexer.ll"
+#line 1502 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1504 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1497 "dhcp4_lexer.ll"
+#line 1506 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1499 "dhcp4_lexer.ll"
+#line 1508 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1501 "dhcp4_lexer.ll"
+#line 1510 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -3887,12 +3899,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1524 "dhcp4_lexer.ll"
+#line 1533 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3895 "dhcp4_lexer.cc"
+#line 3907 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4211,7 +4223,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 >= 1212 )
+                       if ( yy_current_state >= 1216 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4244,11 +4256,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 >= 1212 )
+               if ( yy_current_state >= 1216 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1211);
+       yy_is_jam = (yy_current_state == 1215);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4997,7 +5009,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1524 "dhcp4_lexer.ll"
+#line 1533 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 4a2eaaa55e0c2cdb73e646aa5e77b733eae1e226..689d0b51ff81aac0765ca5be49ffec32ea8655a1 100644 (file)
@@ -496,6 +496,15 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"persistent\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::OPTION_DATA:
+        return isc::dhcp::Dhcp4Parser::make_PERSISTENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("persistent", driver.loc_);
+    }
+}
+
 \"pools\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
index 51d88708fdc4379efad6692ff0e311591414da7b..f3dab5e1b4d99cb50f5cc8f61078634250e28fba 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "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 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 139: // "constant string"
+            case 140: // "constant string"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 156: // value
+      case 157: // value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 160: // map_value
+      case 161: // map_value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 198: // socket_type
+      case 199: // socket_type
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 208: // db_type
+      case 209: // db_type
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 285: // hr_mode
+      case 286: // hr_mode
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 417: // ncr_protocol_value
+      case 419: // ncr_protocol_value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 425: // replace_client_name_value
+      case 427: // replace_client_name_value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 434 "dhcp4_parser.cc" // lalr1.cc:636
         break;
@@ -630,29 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,115 +674,115 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 224 "dhcp4_parser.yy" // lalr1.cc:859
+#line 225 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 225 "dhcp4_parser.yy" // lalr1.cc:859
+#line 226 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 226 "dhcp4_parser.yy" // lalr1.cc:859
+#line 227 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 227 "dhcp4_parser.yy" // lalr1.cc:859
+#line 228 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 228 "dhcp4_parser.yy" // lalr1.cc:859
+#line 229 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 704 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 229 "dhcp4_parser.yy" // lalr1.cc:859
+#line 230 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 230 "dhcp4_parser.yy" // lalr1.cc:859
+#line 231 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 716 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 231 "dhcp4_parser.yy" // lalr1.cc:859
+#line 232 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 722 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 232 "dhcp4_parser.yy" // lalr1.cc:859
+#line 233 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 728 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 233 "dhcp4_parser.yy" // lalr1.cc:859
+#line 234 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 734 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 234 "dhcp4_parser.yy" // lalr1.cc:859
+#line 235 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 740 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 242 "dhcp4_parser.yy" // lalr1.cc:859
+#line 243 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 243 "dhcp4_parser.yy" // lalr1.cc:859
+#line 244 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 244 "dhcp4_parser.yy" // lalr1.cc:859
+#line 245 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 245 "dhcp4_parser.yy" // lalr1.cc:859
+#line 246 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 764 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 246 "dhcp4_parser.yy" // lalr1.cc:859
+#line 247 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 770 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 247 "dhcp4_parser.yy" // lalr1.cc:859
+#line 248 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 248 "dhcp4_parser.yy" // lalr1.cc:859
+#line 249 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 782 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 251 "dhcp4_parser.yy" // lalr1.cc:859
+#line 252 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -791,7 +791,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 32:
-#line 256 "dhcp4_parser.yy" // lalr1.cc:859
+#line 257 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -802,7 +802,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 33:
-#line 261 "dhcp4_parser.yy" // lalr1.cc:859
+#line 262 "dhcp4_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
@@ -812,13 +812,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 267 "dhcp4_parser.yy" // lalr1.cc:859
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 818 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 274 "dhcp4_parser.yy" // lalr1.cc:859
+#line 275 "dhcp4_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 > ());
@@ -827,7 +827,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 278 "dhcp4_parser.yy" // lalr1.cc:859
+#line 279 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -837,7 +837,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 285 "dhcp4_parser.yy" // lalr1.cc:859
+#line 286 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -846,7 +846,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 288 "dhcp4_parser.yy" // lalr1.cc:859
+#line 289 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -854,7 +854,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43:
-#line 296 "dhcp4_parser.yy" // lalr1.cc:859
+#line 297 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -863,7 +863,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 300 "dhcp4_parser.yy" // lalr1.cc:859
+#line 301 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -872,7 +872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 307 "dhcp4_parser.yy" // lalr1.cc:859
+#line 308 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -880,7 +880,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 310 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -889,7 +889,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 318 "dhcp4_parser.yy" // lalr1.cc:859
+#line 319 "dhcp4_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);
@@ -898,7 +898,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 322 "dhcp4_parser.yy" // lalr1.cc:859
+#line 323 "dhcp4_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);
@@ -907,7 +907,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 333 "dhcp4_parser.yy" // lalr1.cc:859
+#line 334 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -918,7 +918,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 343 "dhcp4_parser.yy" // lalr1.cc:859
+#line 344 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 348 "dhcp4_parser.yy" // lalr1.cc:859
+#line 349 "dhcp4_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
@@ -939,7 +939,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61:
-#line 367 "dhcp4_parser.yy" // lalr1.cc:859
+#line 368 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -952,7 +952,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 62:
-#line 374 "dhcp4_parser.yy" // lalr1.cc:859
+#line 375 "dhcp4_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
@@ -964,7 +964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 63:
-#line 384 "dhcp4_parser.yy" // lalr1.cc:859
+#line 385 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -974,7 +974,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64:
-#line 388 "dhcp4_parser.yy" // lalr1.cc:859
+#line 389 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -982,7 +982,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 88:
-#line 421 "dhcp4_parser.yy" // lalr1.cc:859
+#line 422 "dhcp4_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);
@@ -991,7 +991,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 89:
-#line 426 "dhcp4_parser.yy" // lalr1.cc:859
+#line 427 "dhcp4_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);
@@ -1000,7 +1000,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 90:
-#line 431 "dhcp4_parser.yy" // lalr1.cc:859
+#line 432 "dhcp4_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);
@@ -1009,7 +1009,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 91:
-#line 436 "dhcp4_parser.yy" // lalr1.cc:859
+#line 437 "dhcp4_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);
@@ -1018,7 +1018,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 92:
-#line 441 "dhcp4_parser.yy" // lalr1.cc:859
+#line 442 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
@@ -1027,7 +1027,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 93:
-#line 446 "dhcp4_parser.yy" // lalr1.cc:859
+#line 447 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
@@ -1036,7 +1036,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 452 "dhcp4_parser.yy" // lalr1.cc:859
+#line 453 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1047,7 +1047,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 457 "dhcp4_parser.yy" // lalr1.cc:859
+#line 458 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1056,7 +1056,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 101:
-#line 471 "dhcp4_parser.yy" // lalr1.cc:859
+#line 472 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1066,7 +1066,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 102:
-#line 475 "dhcp4_parser.yy" // lalr1.cc:859
+#line 476 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1074,7 +1074,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 103:
-#line 479 "dhcp4_parser.yy" // lalr1.cc:859
+#line 480 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1085,7 +1085,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 104:
-#line 484 "dhcp4_parser.yy" // lalr1.cc:859
+#line 485 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 105:
-#line 489 "dhcp4_parser.yy" // lalr1.cc:859
+#line 490 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
@@ -1102,7 +1102,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 106:
-#line 491 "dhcp4_parser.yy" // lalr1.cc:859
+#line 492 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1111,19 +1111,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 107:
-#line 496 "dhcp4_parser.yy" // lalr1.cc:859
+#line 497 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1117 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 108:
-#line 497 "dhcp4_parser.yy" // lalr1.cc:859
+#line 498 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1123 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 109:
-#line 500 "dhcp4_parser.yy" // lalr1.cc:859
+#line 501 "dhcp4_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);
@@ -1132,7 +1132,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 110:
-#line 506 "dhcp4_parser.yy" // lalr1.cc:859
+#line 507 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1143,7 +1143,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 111:
-#line 511 "dhcp4_parser.yy" // lalr1.cc:859
+#line 512 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1152,7 +1152,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 112:
-#line 516 "dhcp4_parser.yy" // lalr1.cc:859
+#line 517 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1163,7 +1163,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 113:
-#line 521 "dhcp4_parser.yy" // lalr1.cc:859
+#line 522 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1172,7 +1172,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 129:
-#line 545 "dhcp4_parser.yy" // lalr1.cc:859
+#line 546 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
@@ -1180,7 +1180,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 130:
-#line 547 "dhcp4_parser.yy" // lalr1.cc:859
+#line 548 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1189,31 +1189,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 131:
-#line 552 "dhcp4_parser.yy" // lalr1.cc:859
+#line 553 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1195 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 553 "dhcp4_parser.yy" // lalr1.cc:859
+#line 554 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1201 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 133:
-#line 554 "dhcp4_parser.yy" // lalr1.cc:859
+#line 555 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1207 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 134:
-#line 555 "dhcp4_parser.yy" // lalr1.cc:859
+#line 556 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1213 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 135:
-#line 558 "dhcp4_parser.yy" // lalr1.cc:859
+#line 559 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1221,7 +1221,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 136:
-#line 560 "dhcp4_parser.yy" // lalr1.cc:859
+#line 561 "dhcp4_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);
@@ -1231,7 +1231,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 137:
-#line 566 "dhcp4_parser.yy" // lalr1.cc:859
+#line 567 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1239,7 +1239,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 138:
-#line 568 "dhcp4_parser.yy" // lalr1.cc:859
+#line 569 "dhcp4_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);
@@ -1249,7 +1249,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 139:
-#line 574 "dhcp4_parser.yy" // lalr1.cc:859
+#line 575 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1257,7 +1257,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 140:
-#line 576 "dhcp4_parser.yy" // lalr1.cc:859
+#line 577 "dhcp4_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);
@@ -1267,7 +1267,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141:
-#line 582 "dhcp4_parser.yy" // lalr1.cc:859
+#line 583 "dhcp4_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);
@@ -1276,7 +1276,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142:
-#line 587 "dhcp4_parser.yy" // lalr1.cc:859
+#line 588 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1284,7 +1284,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143:
-#line 589 "dhcp4_parser.yy" // lalr1.cc:859
+#line 590 "dhcp4_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);
@@ -1294,7 +1294,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144:
-#line 595 "dhcp4_parser.yy" // lalr1.cc:859
+#line 596 "dhcp4_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);
@@ -1303,7 +1303,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145:
-#line 600 "dhcp4_parser.yy" // lalr1.cc:859
+#line 601 "dhcp4_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);
@@ -1312,7 +1312,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 146:
-#line 605 "dhcp4_parser.yy" // lalr1.cc:859
+#line 606 "dhcp4_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);
@@ -1321,7 +1321,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 147:
-#line 610 "dhcp4_parser.yy" // lalr1.cc:859
+#line 611 "dhcp4_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);
@@ -1330,7 +1330,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 148:
-#line 615 "dhcp4_parser.yy" // lalr1.cc:859
+#line 616 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1338,7 +1338,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 149:
-#line 617 "dhcp4_parser.yy" // lalr1.cc:859
+#line 618 "dhcp4_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);
@@ -1348,7 +1348,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150:
-#line 623 "dhcp4_parser.yy" // lalr1.cc:859
+#line 624 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1356,7 +1356,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 151:
-#line 625 "dhcp4_parser.yy" // lalr1.cc:859
+#line 626 "dhcp4_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);
@@ -1366,7 +1366,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 152:
-#line 632 "dhcp4_parser.yy" // lalr1.cc:859
+#line 633 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1377,7 +1377,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 153:
-#line 637 "dhcp4_parser.yy" // lalr1.cc:859
+#line 638 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1386,7 +1386,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 161:
-#line 653 "dhcp4_parser.yy" // lalr1.cc:859
+#line 654 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1395,7 +1395,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 162:
-#line 658 "dhcp4_parser.yy" // lalr1.cc:859
+#line 659 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1404,7 +1404,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 163:
-#line 663 "dhcp4_parser.yy" // lalr1.cc:859
+#line 664 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
@@ -1413,7 +1413,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164:
-#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+#line 669 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
@@ -1422,7 +1422,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 165:
-#line 673 "dhcp4_parser.yy" // lalr1.cc:859
+#line 674 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -1431,7 +1431,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 166:
-#line 678 "dhcp4_parser.yy" // lalr1.cc:859
+#line 679 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1442,7 +1442,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 167:
-#line 683 "dhcp4_parser.yy" // lalr1.cc:859
+#line 684 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1451,7 +1451,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 172:
-#line 696 "dhcp4_parser.yy" // lalr1.cc:859
+#line 697 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1461,7 +1461,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 173:
-#line 700 "dhcp4_parser.yy" // lalr1.cc:859
+#line 701 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1469,7 +1469,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 174:
-#line 704 "dhcp4_parser.yy" // lalr1.cc:859
+#line 705 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1479,7 +1479,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 175:
-#line 708 "dhcp4_parser.yy" // lalr1.cc:859
+#line 709 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1487,7 +1487,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 181:
-#line 721 "dhcp4_parser.yy" // lalr1.cc:859
+#line 722 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1495,7 +1495,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 182:
-#line 723 "dhcp4_parser.yy" // lalr1.cc:859
+#line 724 "dhcp4_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);
@@ -1505,7 +1505,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 183:
-#line 729 "dhcp4_parser.yy" // lalr1.cc:859
+#line 730 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1513,7 +1513,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 184:
-#line 731 "dhcp4_parser.yy" // lalr1.cc:859
+#line 732 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1522,7 +1522,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 185:
-#line 737 "dhcp4_parser.yy" // lalr1.cc:859
+#line 738 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1533,7 +1533,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 186:
-#line 742 "dhcp4_parser.yy" // lalr1.cc:859
+#line 743 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1542,7 +1542,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 195:
-#line 759 "dhcp4_parser.yy" // lalr1.cc:859
+#line 760 "dhcp4_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);
@@ -1551,7 +1551,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 196:
-#line 764 "dhcp4_parser.yy" // lalr1.cc:859
+#line 765 "dhcp4_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);
@@ -1560,7 +1560,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197:
-#line 769 "dhcp4_parser.yy" // lalr1.cc:859
+#line 770 "dhcp4_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);
@@ -1569,7 +1569,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 198:
-#line 774 "dhcp4_parser.yy" // lalr1.cc:859
+#line 775 "dhcp4_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);
@@ -1578,7 +1578,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 199:
-#line 779 "dhcp4_parser.yy" // lalr1.cc:859
+#line 780 "dhcp4_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);
@@ -1587,7 +1587,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 200:
-#line 784 "dhcp4_parser.yy" // lalr1.cc:859
+#line 785 "dhcp4_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);
@@ -1596,7 +1596,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 201:
-#line 792 "dhcp4_parser.yy" // lalr1.cc:859
+#line 793 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
@@ -1607,7 +1607,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 202:
-#line 797 "dhcp4_parser.yy" // lalr1.cc:859
+#line 798 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1616,7 +1616,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 207:
-#line 817 "dhcp4_parser.yy" // lalr1.cc:859
+#line 818 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1626,7 +1626,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 208:
-#line 821 "dhcp4_parser.yy" // lalr1.cc:859
+#line 822 "dhcp4_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.
@@ -1649,7 +1649,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 209:
-#line 840 "dhcp4_parser.yy" // lalr1.cc:859
+#line 841 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1659,7 +1659,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 210:
-#line 844 "dhcp4_parser.yy" // lalr1.cc:859
+#line 845 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1667,7 +1667,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233:
-#line 876 "dhcp4_parser.yy" // lalr1.cc:859
+#line 877 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1675,7 +1675,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 234:
-#line 878 "dhcp4_parser.yy" // lalr1.cc:859
+#line 879 "dhcp4_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);
@@ -1685,7 +1685,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 235:
-#line 884 "dhcp4_parser.yy" // lalr1.cc:859
+#line 885 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1693,7 +1693,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 236:
-#line 886 "dhcp4_parser.yy" // lalr1.cc:859
+#line 887 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
@@ -1703,7 +1703,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 237:
-#line 892 "dhcp4_parser.yy" // lalr1.cc:859
+#line 893 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1711,7 +1711,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 238:
-#line 894 "dhcp4_parser.yy" // lalr1.cc:859
+#line 895 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
@@ -1721,7 +1721,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 239:
-#line 900 "dhcp4_parser.yy" // lalr1.cc:859
+#line 901 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1729,7 +1729,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 240:
-#line 902 "dhcp4_parser.yy" // lalr1.cc:859
+#line 903 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
@@ -1739,7 +1739,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 241:
-#line 908 "dhcp4_parser.yy" // lalr1.cc:859
+#line 909 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1747,7 +1747,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 242:
-#line 910 "dhcp4_parser.yy" // lalr1.cc:859
+#line 911 "dhcp4_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);
@@ -1757,7 +1757,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 243:
-#line 916 "dhcp4_parser.yy" // lalr1.cc:859
+#line 917 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1765,7 +1765,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 244:
-#line 918 "dhcp4_parser.yy" // lalr1.cc:859
+#line 919 "dhcp4_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);
@@ -1775,7 +1775,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 245:
-#line 924 "dhcp4_parser.yy" // lalr1.cc:859
+#line 925 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
@@ -1783,7 +1783,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 246:
-#line 926 "dhcp4_parser.yy" // lalr1.cc:859
+#line 927 "dhcp4_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);
@@ -1793,7 +1793,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 247:
-#line 932 "dhcp4_parser.yy" // lalr1.cc:859
+#line 933 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
@@ -1801,7 +1801,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 248:
-#line 934 "dhcp4_parser.yy" // lalr1.cc:859
+#line 935 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1810,25 +1810,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 249:
-#line 939 "dhcp4_parser.yy" // lalr1.cc:859
+#line 940 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 1816 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 250:
-#line 940 "dhcp4_parser.yy" // lalr1.cc:859
+#line 941 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 1822 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 251:
-#line 941 "dhcp4_parser.yy" // lalr1.cc:859
+#line 942 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 1828 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 252:
-#line 944 "dhcp4_parser.yy" // lalr1.cc:859
+#line 945 "dhcp4_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);
@@ -1837,7 +1837,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 253:
-#line 949 "dhcp4_parser.yy" // lalr1.cc:859
+#line 950 "dhcp4_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);
@@ -1846,7 +1846,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 254:
-#line 958 "dhcp4_parser.yy" // lalr1.cc:859
+#line 959 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1857,7 +1857,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 255:
-#line 963 "dhcp4_parser.yy" // lalr1.cc:859
+#line 964 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1866,7 +1866,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 260:
-#line 980 "dhcp4_parser.yy" // lalr1.cc:859
+#line 981 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1876,7 +1876,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 261:
-#line 984 "dhcp4_parser.yy" // lalr1.cc:859
+#line 985 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1884,7 +1884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 262:
-#line 991 "dhcp4_parser.yy" // lalr1.cc:859
+#line 992 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1894,7 +1894,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 263:
-#line 995 "dhcp4_parser.yy" // lalr1.cc:859
+#line 996 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1902,7 +1902,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 277:
-#line 1021 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1022 "dhcp4_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);
@@ -1911,7 +1911,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 279:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1029 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1919,7 +1919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 280:
-#line 1030 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1031 "dhcp4_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);
@@ -1929,7 +1929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 281:
-#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1037 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1937,7 +1937,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 282:
-#line 1038 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1039 "dhcp4_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);
@@ -1947,7 +1947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 283:
-#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1045 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1955,7 +1955,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 284:
-#line 1046 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1047 "dhcp4_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);
@@ -1965,7 +1965,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 286:
-#line 1054 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1055 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1973,7 +1973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 287:
-#line 1056 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1057 "dhcp4_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);
@@ -1983,7 +1983,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 288:
-#line 1062 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1063 "dhcp4_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);
@@ -1992,7 +1992,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 289:
-#line 1071 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1072 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -2003,7 +2003,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 290:
-#line 1076 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1077 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2012,7 +2012,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 295:
-#line 1095 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1096 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2022,7 +2022,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 296:
-#line 1099 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1100 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2030,7 +2030,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 297:
-#line 1106 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1107 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2040,23 +2040,23 @@ namespace isc { namespace dhcp {
     break;
 
   case 298:
-#line 1110 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1111 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2048 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 310:
-#line 1139 "dhcp4_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1141 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2056 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1141 "dhcp4_parser.yy" // lalr1.cc:859
+  case 312:
+#line 1143 "dhcp4_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);
@@ -2065,8 +2065,8 @@ namespace isc { namespace dhcp {
 #line 2066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1151 "dhcp4_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1153 "dhcp4_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);
@@ -2074,994 +2074,1003 @@ namespace isc { namespace dhcp {
 #line 2075 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1159 "dhcp4_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1158 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("persistent", persist);
+}
+#line 2084 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 317:
+#line 1166 "dhcp4_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 2086 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2095 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
+  case 318:
+#line 1171 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2095 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2104 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1179 "dhcp4_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1186 "dhcp4_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 2105 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2114 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1183 "dhcp4_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1190 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2113 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2122 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1187 "dhcp4_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1194 "dhcp4_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 2123 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2132 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1191 "dhcp4_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1198 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2131 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2140 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1205 "dhcp4_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1212 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2139 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2148 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1207 "dhcp4_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1214 "dhcp4_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 2149 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2158 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1213 "dhcp4_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1220 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2157 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2166 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1215 "dhcp4_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1222 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2166 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2175 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1223 "dhcp4_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1230 "dhcp4_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 2177 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1228 "dhcp4_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1235 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2195 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1241 "dhcp4_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1248 "dhcp4_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 2196 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2205 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1252 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2204 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1249 "dhcp4_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1256 "dhcp4_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 2214 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2223 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 344:
-#line 1253 "dhcp4_parser.yy" // lalr1.cc:859
+  case 346:
+#line 1260 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2222 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2231 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1288 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2239 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1283 "dhcp4_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1290 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
+  case 366:
+#line 1296 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2248 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2257 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 365:
-#line 1291 "dhcp4_parser.yy" // lalr1.cc:859
+  case 367:
+#line 1298 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 2258 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2267 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
+  case 368:
+#line 1304 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2266 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2275 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1299 "dhcp4_parser.yy" // lalr1.cc:859
+  case 369:
+#line 1306 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 2276 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2285 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
+  case 370:
+#line 1312 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2284 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1307 "dhcp4_parser.yy" // lalr1.cc:859
+  case 371:
+#line 1314 "dhcp4_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 2294 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2303 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1313 "dhcp4_parser.yy" // lalr1.cc:859
+  case 372:
+#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2302 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 371:
-#line 1315 "dhcp4_parser.yy" // lalr1.cc:859
+  case 373:
+#line 1322 "dhcp4_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 2312 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2321 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1328 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2320 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2329 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1323 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1330 "dhcp4_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 2330 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2339 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1336 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2338 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2347 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1338 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 2348 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2357 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1344 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2356 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2365 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1346 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 2366 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2375 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1352 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2374 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2383 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1354 "dhcp4_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 2384 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2393 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1360 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2392 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2401 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1355 "dhcp4_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1362 "dhcp4_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 2402 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2411 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1361 "dhcp4_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1368 "dhcp4_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 2413 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2422 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1373 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2422 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2431 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1374 "dhcp4_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1381 "dhcp4_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 2433 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2442 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2451 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1384 "dhcp4_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1391 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2450 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2459 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1393 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2460 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2469 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1395 "dhcp4_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1402 "dhcp4_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 2471 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1400 "dhcp4_parser.yy" // lalr1.cc:859
+  case 391:
+#line 1407 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2480 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2489 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1409 "dhcp4_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1416 "dhcp4_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 2490 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2499 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1420 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2498 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2507 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1436 "dhcp4_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1443 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2506 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2515 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1438 "dhcp4_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1445 "dhcp4_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 2516 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2525 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1448 "dhcp4_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1455 "dhcp4_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 2525 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2534 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1455 "dhcp4_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1462 "dhcp4_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 2536 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2545 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 410:
-#line 1460 "dhcp4_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1467 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2545 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2554 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1473 "dhcp4_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1480 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2553 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2562 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1482 "dhcp4_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 2563 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2572 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1481 "dhcp4_parser.yy" // lalr1.cc:859
+  case 419:
+#line 1488 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2571 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2580 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1483 "dhcp4_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1490 "dhcp4_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 2581 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2590 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1491 "dhcp4_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1498 "dhcp4_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 2592 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2601 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 420:
-#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1503 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2601 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2610 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1501 "dhcp4_parser.yy" // lalr1.cc:859
+  case 423:
+#line 1508 "dhcp4_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 2611 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2620 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1505 "dhcp4_parser.yy" // lalr1.cc:859
+  case 424:
+#line 1512 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2619 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2628 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1530 "dhcp4_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1537 "dhcp4_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 2628 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2637 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1542 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2636 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2645 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1537 "dhcp4_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1544 "dhcp4_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 2646 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2655 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1543 "dhcp4_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1550 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2654 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2663 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1545 "dhcp4_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1552 "dhcp4_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 2664 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2673 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1551 "dhcp4_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1558 "dhcp4_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 2673 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2682 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1556 "dhcp4_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1563 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2681 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2690 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1558 "dhcp4_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1565 "dhcp4_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 2691 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2700 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1564 "dhcp4_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1571 "dhcp4_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 2700 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2709 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1569 "dhcp4_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1576 "dhcp4_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 2709 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2718 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1574 "dhcp4_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1581 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2717 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1576 "dhcp4_parser.yy" // lalr1.cc:859
+  case 453:
+#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2735 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1582 "dhcp4_parser.yy" // lalr1.cc:859
+  case 454:
+#line 1589 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2732 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2741 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 453:
-#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1590 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2738 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2747 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1593 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2746 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2755 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1588 "dhcp4_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1595 "dhcp4_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 2756 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2765 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1594 "dhcp4_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1601 "dhcp4_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 2765 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1599 "dhcp4_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1606 "dhcp4_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 2774 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2783 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 458:
-#line 1604 "dhcp4_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1611 "dhcp4_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 2783 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2792 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 459:
-#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
+  case 461:
+#line 1616 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 2791 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2800 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 460:
-#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
+  case 462:
+#line 1618 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2800 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2809 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 461:
-#line 1617 "dhcp4_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1624 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 2808 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2817 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 462:
-#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1627 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2816 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2825 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1623 "dhcp4_parser.yy" // lalr1.cc:859
+  case 465:
+#line 1630 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2824 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2833 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 464:
-#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
+  case 466:
+#line 1633 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2832 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2841 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 465:
-#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
+  case 467:
+#line 1636 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 2841 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2850 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1635 "dhcp4_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1642 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2849 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2858 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1637 "dhcp4_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1644 "dhcp4_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 2859 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2868 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1645 "dhcp4_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1652 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2867 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2876 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1647 "dhcp4_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1654 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2876 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2885 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1652 "dhcp4_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1659 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2884 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1654 "dhcp4_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1661 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2893 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2902 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1664 "dhcp4_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1671 "dhcp4_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 2904 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2913 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1669 "dhcp4_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1676 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2913 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2922 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1686 "dhcp4_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1693 "dhcp4_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 2924 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2933 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1691 "dhcp4_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1698 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2933 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2942 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1703 "dhcp4_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1710 "dhcp4_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 2943 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2952 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1707 "dhcp4_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1714 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2951 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2960 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1722 "dhcp4_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1729 "dhcp4_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 2960 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2969 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1734 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2968 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2977 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1729 "dhcp4_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1736 "dhcp4_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 2978 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2987 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1735 "dhcp4_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1742 "dhcp4_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 2989 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2998 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1747 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2998 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3007 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1749 "dhcp4_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1756 "dhcp4_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 3008 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3017 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1753 "dhcp4_parser.yy" // lalr1.cc:859
+  case 500:
+#line 1760 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3016 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3025 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 505:
-#line 1767 "dhcp4_parser.yy" // lalr1.cc:859
+  case 507:
+#line 1774 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3024 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3033 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1769 "dhcp4_parser.yy" // lalr1.cc:859
+  case 508:
+#line 1776 "dhcp4_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 3034 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3043 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1775 "dhcp4_parser.yy" // lalr1.cc:859
+  case 509:
+#line 1782 "dhcp4_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 3043 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3052 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 508:
-#line 1780 "dhcp4_parser.yy" // lalr1.cc:859
+  case 510:
+#line 1787 "dhcp4_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 3052 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3061 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 509:
-#line 1785 "dhcp4_parser.yy" // lalr1.cc:859
+  case 511:
+#line 1792 "dhcp4_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 3061 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3070 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3065 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3074 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3316,97 +3325,98 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp4Parser::yypact_ninf_ = -477;
+  const short int Dhcp4Parser::yypact_ninf_ = -479;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     105,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,    60,    19,    47,    62,    67,    85,   109,   122,
-     128,   134,   144,   156,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,    19,    35,    17,    54,
-     106,    18,   -19,    92,    76,   -18,   -35,   119,  -477,    82,
-      96,   171,   168,   185,  -477,  -477,  -477,  -477,   190,  -477,
-      53,  -477,  -477,  -477,  -477,  -477,  -477,   206,   208,  -477,
-    -477,  -477,   226,   259,   262,   266,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   270,  -477,  -477,  -477,    81,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   276,   130,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,   280,   284,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,   145,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,   146,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   243,   274,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   290,
-    -477,  -477,  -477,   292,  -477,  -477,   289,   301,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   306,
-    -477,  -477,  -477,  -477,   303,   309,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,   188,  -477,  -477,  -477,   311,
-    -477,  -477,   313,  -477,   314,   315,  -477,  -477,   316,   317,
-     318,  -477,  -477,  -477,   201,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,    19,    19,  -477,   174,   319,   321,   322,   323,  -477,
-      17,  -477,   324,   187,   191,   326,   327,   328,   194,   195,
-     196,   197,   334,   335,   336,   337,   338,   339,   340,   207,
-     341,   342,    54,  -477,   344,   345,   209,   106,  -477,    66,
-     346,   348,   351,   352,   353,   354,   355,   220,   219,   358,
-     359,   360,   361,    18,  -477,   362,   363,   -19,  -477,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,  -477,
-      92,   374,   375,   240,   377,   378,   379,   242,  -477,    76,
-     381,   246,  -477,   -18,   382,   383,   -16,  -477,   248,   385,
-     387,   252,   389,   255,   256,   390,   393,   258,   260,   263,
-     394,   395,   119,  -477,  -477,  -477,   397,   396,   399,    19,
-      19,  -477,   400,  -477,  -477,   265,   401,   402,  -477,  -477,
-    -477,  -477,   405,   406,   407,   408,   409,   410,   411,  -477,
-     412,   413,  -477,   416,   150,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   414,   420,  -477,  -477,  -477,   277,
-     278,   285,   421,   286,   288,   293,  -477,  -477,   -21,   298,
-     423,   422,  -477,   299,   427,  -477,   300,   302,   416,   304,
-     305,   307,   308,   310,   312,   320,  -477,   325,   329,  -477,
-     330,   331,   332,  -477,  -477,   333,  -477,  -477,   343,    19,
-    -477,  -477,   347,   349,  -477,   350,  -477,  -477,    15,   380,
-    -477,  -477,  -477,   -72,   356,  -477,    19,    54,   357,  -477,
-    -477,   106,  -477,   148,   148,   433,   435,   445,   -24,    31,
-     447,   112,    12,   119,  -477,  -477,  -477,  -477,  -477,   451,
-    -477,    66,  -477,  -477,  -477,   449,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   450,   384,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,   241,  -477,   244,  -477,  -477,   245,  -477,  -477,
-    -477,  -477,   454,   457,   458,   462,   463,  -477,  -477,  -477,
-     247,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   251,  -477,   467,   471,  -477,  -477,
-     470,   474,  -477,  -477,   472,   476,  -477,  -477,  -477,  -477,
-    -477,  -477,   139,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-     149,  -477,   475,   477,  -477,   479,   480,   481,   483,   486,
-     487,   254,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   257,  -477,  -477,  -477,   261,   376,   386,  -477,  -477,
-     488,   490,  -477,  -477,   491,   493,  -477,  -477,   492,  -477,
-     494,   357,  -477,  -477,   495,   497,   498,   499,   388,   391,
-     392,   398,   403,   500,   501,   148,  -477,  -477,    18,  -477,
-     433,    76,  -477,   435,   -18,  -477,   445,   -24,  -477,    31,
-    -477,   -35,  -477,   447,   404,   415,   417,   418,   419,   424,
-     112,  -477,   502,   503,    12,  -477,  -477,  -477,   504,   505,
-    -477,   -19,  -477,   449,    92,  -477,   450,   507,  -477,   508,
-    -477,   281,   426,   428,   429,  -477,  -477,  -477,  -477,  -477,
-     430,   431,  -477,   264,  -477,   506,  -477,   509,  -477,  -477,
-    -477,   273,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-     432,   434,  -477,  -477,   436,   275,  -477,   510,  -477,   437,
-     512,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,   189,  -477,    68,   512,  -477,  -477,   516,  -477,
-    -477,  -477,   287,  -477,  -477,  -477,  -477,  -477,   517,   438,
-     518,    68,  -477,   511,  -477,   440,  -477,   519,  -477,  -477,
-     205,  -477,   -15,   519,  -477,  -477,   520,   523,   525,   295,
-    -477,  -477,  -477,  -477,  -477,  -477,   526,   439,   442,   443,
-     -15,  -477,   441,  -477,  -477,  -477,  -477,  -477
+     118,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,    32,    19,    81,    87,    93,   102,   123,   124,
+     135,   148,   156,   158,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,    19,    27,    17,    28,
+     266,    16,   -17,    72,    77,    53,   -44,   120,  -479,    46,
+     177,   190,   208,   195,  -479,  -479,  -479,  -479,   238,  -479,
+      41,  -479,  -479,  -479,  -479,  -479,  -479,   239,   254,  -479,
+    -479,  -479,   267,   268,   281,   285,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,   287,  -479,  -479,  -479,    45,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,   289,    51,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,   295,   298,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,    55,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,   107,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,   261,   301,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,   302,
+    -479,  -479,  -479,   303,  -479,  -479,   290,   306,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,   307,
+     309,  -479,  -479,  -479,  -479,   308,   312,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,   116,  -479,  -479,
+    -479,   313,  -479,  -479,   315,  -479,   316,   317,  -479,  -479,
+     318,   319,   320,  -479,  -479,  -479,   138,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,    19,    19,  -479,   170,   321,   322,   324,
+     325,  -479,    17,  -479,   326,   191,   192,   327,   328,   329,
+     196,   197,   198,   199,   332,   337,   338,   339,   340,   341,
+     342,   206,   344,   345,    28,  -479,   346,   347,   209,   266,
+    -479,    64,   349,   352,   353,   354,   355,   356,   357,   221,
+     220,   360,   361,   362,   363,    16,  -479,   364,   365,   -17,
+    -479,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,  -479,    72,   376,   377,   241,   379,   380,   381,   243,
+    -479,    77,   383,   245,   246,  -479,    53,   386,   387,   -19,
+    -479,   249,   389,   390,   255,   391,   257,   260,   393,   395,
+     262,   263,   264,   396,   398,   120,  -479,  -479,  -479,   399,
+     397,   401,    19,    19,  -479,   402,  -479,  -479,   270,   404,
+     405,  -479,  -479,  -479,  -479,   408,   409,   410,   411,   412,
+     413,   414,  -479,   415,   416,  -479,   419,    58,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,   417,   423,  -479,
+    -479,  -479,   279,   288,   291,   422,   292,   293,   296,  -479,
+    -479,    49,   297,   424,   427,  -479,   305,   431,  -479,   310,
+     311,   419,   314,   323,   330,   331,   333,   334,   335,  -479,
+     336,   343,  -479,   348,   350,   351,  -479,  -479,   358,  -479,
+    -479,  -479,   359,    19,  -479,  -479,   378,   382,  -479,   384,
+    -479,  -479,    15,   388,  -479,  -479,  -479,    23,   385,  -479,
+      19,    28,   392,  -479,  -479,   266,  -479,   140,   140,   434,
+     435,   439,   125,    22,   440,    96,    -9,   120,  -479,  -479,
+    -479,  -479,  -479,   426,  -479,    64,  -479,  -479,  -479,   441,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,   446,   400,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,   150,  -479,   187,  -479,
+    -479,   188,  -479,  -479,  -479,  -479,   451,   452,   454,   455,
+     456,  -479,  -479,  -479,   189,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,   203,  -479,
+     459,   463,  -479,  -479,   461,   466,  -479,  -479,   471,   469,
+    -479,  -479,  -479,  -479,  -479,  -479,   259,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,   280,  -479,   472,   476,  -479,   458,
+     477,   480,   481,   482,   483,   229,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,   230,  -479,  -479,  -479,   232,
+     394,   403,  -479,  -479,   474,   486,  -479,  -479,   487,   489,
+    -479,  -479,   488,  -479,   490,   392,  -479,  -479,   491,   493,
+     496,   498,   406,   277,   407,   418,   421,   499,   500,   140,
+    -479,  -479,    16,  -479,   434,    77,  -479,   435,    53,  -479,
+     439,   125,  -479,    22,  -479,   -44,  -479,   440,   425,   428,
+     429,   430,   432,   433,    96,  -479,   501,   502,    -9,  -479,
+    -479,  -479,   503,   504,  -479,   -17,  -479,   441,    72,  -479,
+     446,   506,  -479,   507,  -479,   182,   420,   436,   437,  -479,
+    -479,  -479,  -479,  -479,   438,   442,  -479,   233,  -479,   505,
+    -479,   508,  -479,  -479,  -479,   236,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,   443,   444,  -479,  -479,   445,   256,
+    -479,   509,  -479,   447,   512,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,   284,  -479,    59,   512,
+    -479,  -479,   510,  -479,  -479,  -479,   258,  -479,  -479,  -479,
+    -479,  -479,   511,   448,   516,    59,  -479,   518,  -479,   450,
+    -479,   514,  -479,  -479,   294,  -479,   -88,   514,  -479,  -479,
+     522,   523,   524,   265,  -479,  -479,  -479,  -479,  -479,  -479,
+     525,   449,   453,   457,   -88,  -479,   460,  -479,  -479,  -479,
+    -479,  -479
   };
 
   const unsigned short int
@@ -3416,465 +3426,470 @@ namespace isc { namespace dhcp {
       20,    22,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     1,    39,    32,    28,    27,    24,
       25,    26,    31,     3,    29,    30,    52,     5,    63,     7,
-     101,     9,   209,    11,   323,    13,   343,    15,   262,    17,
-     297,    19,   174,    21,   421,    23,    41,    35,     0,     0,
-       0,     0,     0,   345,   264,   299,     0,     0,    43,     0,
-      42,     0,     0,    36,    61,   472,   468,   470,     0,    60,
-       0,    54,    56,    58,    59,    57,    94,     0,     0,   362,
+     101,     9,   209,    11,   325,    13,   345,    15,   262,    17,
+     297,    19,   174,    21,   423,    23,    41,    35,     0,     0,
+       0,     0,     0,   347,   264,   299,     0,     0,    43,     0,
+      42,     0,     0,    36,    61,   474,   470,   472,     0,    60,
+       0,    54,    56,    58,    59,    57,    94,     0,     0,   364,
      110,   112,     0,     0,     0,     0,   201,   254,   289,   152,
-     388,   166,   185,     0,   409,   419,    87,     0,    65,    67,
+     390,   166,   185,     0,   411,   421,    87,     0,    65,    67,
       68,    69,    70,    84,    85,    72,    73,    74,    75,    79,
       80,    71,    77,    78,    86,    76,    81,    82,    83,   103,
-     105,     0,     0,    96,    98,    99,   100,   392,   235,   237,
-     239,   315,   233,   241,   243,     0,     0,   247,   245,   335,
-     384,   232,   213,   214,   215,   227,     0,   211,   218,   229,
+     105,     0,     0,    96,    98,    99,   100,   394,   235,   237,
+     239,   317,   233,   241,   243,     0,     0,   247,   245,   337,
+     386,   232,   213,   214,   215,   227,     0,   211,   218,   229,
      230,   231,   219,   220,   223,   225,   221,   222,   216,   217,
-     224,   228,   226,   331,   333,   330,   328,     0,   325,   327,
-     329,   364,   366,   382,   370,   372,   376,   374,   380,   378,
-     368,   361,   357,     0,   346,   347,   358,   359,   360,   354,
-     349,   355,   351,   352,   353,   356,   350,   279,   142,     0,
+     224,   228,   226,   333,   335,   332,   330,     0,   327,   329,
+     331,   366,   368,   384,   372,   374,   378,   376,   382,   380,
+     370,   363,   359,     0,   348,   349,   360,   361,   362,   356,
+     351,   357,   353,   354,   355,   358,   352,   279,   142,     0,
      283,   281,   286,     0,   275,   276,     0,   265,   266,   268,
-     278,   269,   270,   271,   285,   272,   273,   274,   310,     0,
-     308,   309,   312,   313,     0,   300,   301,   303,   304,   305,
-     306,   307,   181,   183,   178,     0,   176,   179,   180,     0,
-     441,   443,     0,   446,     0,     0,   450,   454,     0,     0,
-       0,   459,   466,   439,     0,   423,   425,   426,   427,   428,
+     278,   269,   270,   271,   285,   272,   273,   274,   311,     0,
+       0,   309,   310,   313,   314,     0,   300,   301,   303,   304,
+     305,   306,   307,   308,   181,   183,   178,     0,   176,   179,
+     180,     0,   443,   445,     0,   448,     0,     0,   452,   456,
+       0,     0,     0,   461,   468,   441,     0,   425,   427,   428,
      429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
-      40,     0,     0,    33,     0,     0,     0,     0,     0,    51,
-       0,    53,     0,     0,     0,     0,     0,     0,     0,     0,
+     439,   440,    40,     0,     0,    33,     0,     0,     0,     0,
+       0,    51,     0,    53,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    64,     0,     0,     0,     0,   102,   394,
+       0,     0,     0,     0,     0,    64,     0,     0,     0,     0,
+     102,   396,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   210,     0,     0,     0,
+     326,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   346,     0,     0,     0,     0,     0,     0,     0,     0,
+     263,     0,     0,     0,     0,   298,     0,     0,     0,     0,
+     175,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   424,    44,    37,     0,
+       0,     0,     0,     0,    55,     0,    92,    93,     0,     0,
+       0,    88,    89,    90,    91,     0,     0,     0,     0,     0,
+       0,     0,   410,     0,     0,    66,     0,     0,   109,    97,
+     408,   406,   407,   402,   403,   404,   405,     0,   397,   398,
+     400,   401,     0,     0,     0,     0,     0,     0,     0,   252,
+     253,     0,     0,     0,     0,   212,     0,     0,   328,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
+       0,     0,   277,     0,     0,     0,   288,   267,     0,   315,
+     316,   302,     0,     0,   177,   442,     0,     0,   447,     0,
+     450,   451,     0,     0,   458,   459,   460,     0,     0,   426,
+       0,     0,     0,   471,   473,     0,   365,     0,     0,   203,
+     256,   291,     0,     0,   168,     0,     0,     0,    45,   104,
+     107,   108,   106,     0,   395,     0,   236,   238,   240,   319,
+     234,   242,   244,   249,   250,   251,   248,   246,   339,     0,
+     334,    34,   336,   367,   369,   385,   373,   375,   379,   377,
+     383,   381,   371,   280,   143,   284,   282,   287,   312,   182,
+     184,   444,   446,   449,   454,   455,   453,   457,   463,   464,
+     465,   466,   467,   462,   469,    38,     0,   479,     0,   476,
+     478,     0,   129,   135,   137,   139,     0,     0,     0,     0,
+       0,   148,   150,   128,     0,   114,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,     0,   207,
+       0,   204,   205,   260,     0,   257,   258,   295,     0,   292,
+     293,   161,   162,   163,   164,   165,     0,   154,   156,   157,
+     158,   159,   160,   392,     0,   172,     0,   169,   170,     0,
+       0,     0,     0,     0,     0,     0,   187,   189,   190,   191,
+     192,   193,   194,   417,   419,     0,   413,   415,   416,     0,
+      47,     0,   399,   323,     0,   320,   321,   343,     0,   340,
+     341,   388,     0,    62,     0,     0,   475,    95,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   210,     0,     0,     0,   324,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   344,
-       0,     0,     0,     0,     0,     0,     0,     0,   263,     0,
-       0,     0,   298,     0,     0,     0,     0,   175,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   422,    44,    37,     0,     0,     0,     0,
-       0,    55,     0,    92,    93,     0,     0,     0,    88,    89,
-      90,    91,     0,     0,     0,     0,     0,     0,     0,   408,
-       0,     0,    66,     0,     0,   109,    97,   406,   404,   405,
-     400,   401,   402,   403,     0,   395,   396,   398,   399,     0,
-       0,     0,     0,     0,     0,     0,   252,   253,     0,     0,
-       0,     0,   212,     0,     0,   326,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   348,     0,     0,   277,
-       0,     0,     0,   288,   267,     0,   314,   302,     0,     0,
-     177,   440,     0,     0,   445,     0,   448,   449,     0,     0,
-     456,   457,   458,     0,     0,   424,     0,     0,     0,   469,
-     471,     0,   363,     0,     0,   203,   256,   291,     0,     0,
-     168,     0,     0,     0,    45,   104,   107,   108,   106,     0,
-     393,     0,   236,   238,   240,   317,   234,   242,   244,   249,
-     250,   251,   248,   246,   337,     0,   332,    34,   334,   365,
-     367,   383,   371,   373,   377,   375,   381,   379,   369,   280,
-     143,   284,   282,   287,   311,   182,   184,   442,   444,   447,
-     452,   453,   451,   455,   461,   462,   463,   464,   465,   460,
-     467,    38,     0,   477,     0,   474,   476,     0,   129,   135,
-     137,   139,     0,     0,     0,     0,     0,   148,   150,   128,
-       0,   114,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,     0,   207,     0,   204,   205,   260,
-       0,   257,   258,   295,     0,   292,   293,   161,   162,   163,
-     164,   165,     0,   154,   156,   157,   158,   159,   160,   390,
-       0,   172,     0,   169,   170,     0,     0,     0,     0,     0,
-       0,     0,   187,   189,   190,   191,   192,   193,   194,   415,
-     417,     0,   411,   413,   414,     0,    47,     0,   397,   321,
-       0,   318,   319,   341,     0,   338,   339,   386,     0,    62,
-       0,     0,   473,    95,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   111,   113,     0,   202,
-       0,   264,   255,     0,   299,   290,     0,     0,   153,     0,
-     389,     0,   167,     0,     0,     0,     0,     0,     0,     0,
-       0,   186,     0,     0,     0,   410,   420,    49,     0,    48,
-     407,     0,   316,     0,   345,   336,     0,     0,   385,     0,
-     475,     0,     0,     0,     0,   141,   144,   145,   146,   147,
-       0,     0,   115,     0,   206,     0,   259,     0,   294,   155,
-     391,     0,   171,   195,   196,   197,   198,   199,   200,   188,
-       0,     0,   412,    46,     0,     0,   320,     0,   340,     0,
-       0,   131,   132,   133,   134,   130,   136,   138,   140,   149,
-     151,   208,   261,   296,   173,   416,   418,    50,   322,   342,
-     387,   481,     0,   479,     0,     0,   478,   493,     0,   491,
-     489,   485,     0,   483,   487,   488,   486,   480,     0,     0,
-       0,     0,   482,     0,   490,     0,   484,     0,   492,   497,
-       0,   495,     0,     0,   494,   505,     0,     0,     0,     0,
-     499,   501,   502,   503,   504,   496,     0,     0,     0,     0,
-       0,   498,     0,   507,   508,   509,   500,   506
+     111,   113,     0,   202,     0,   264,   255,     0,   299,   290,
+       0,     0,   153,     0,   391,     0,   167,     0,     0,     0,
+       0,     0,     0,     0,     0,   186,     0,     0,     0,   412,
+     422,    49,     0,    48,   409,     0,   318,     0,   347,   338,
+       0,     0,   387,     0,   477,     0,     0,     0,     0,   141,
+     144,   145,   146,   147,     0,     0,   115,     0,   206,     0,
+     259,     0,   294,   155,   393,     0,   171,   195,   196,   197,
+     198,   199,   200,   188,     0,     0,   414,    46,     0,     0,
+     322,     0,   342,     0,     0,   131,   132,   133,   134,   130,
+     136,   138,   140,   149,   151,   208,   261,   296,   173,   418,
+     420,    50,   324,   344,   389,   483,     0,   481,     0,     0,
+     480,   495,     0,   493,   491,   487,     0,   485,   489,   490,
+     488,   482,     0,     0,     0,     0,   484,     0,   492,     0,
+     486,     0,   494,   499,     0,   497,     0,     0,   496,   507,
+       0,     0,     0,     0,   501,   503,   504,   505,   506,   498,
+       0,     0,     0,     0,     0,   500,     0,   509,   510,   511,
+     502,   508
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   -36,  -477,    65,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,    64,  -477,  -477,  -477,   -58,  -477,
-    -477,  -477,   233,  -477,  -477,  -477,  -477,    44,   222,   -60,
-     -44,   -42,  -477,  -477,   -40,  -477,  -477,    45,   218,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,    43,  -137,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   -63,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -148,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -152,  -477,  -477,  -477,
-    -149,   179,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -154,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -133,  -477,  -477,  -477,  -130,   216,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -476,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -132,
-    -477,  -477,  -477,  -131,  -477,   193,  -477,   -49,  -477,  -477,
-    -477,  -477,  -477,   -47,  -477,  -477,  -477,  -477,  -477,   -51,
-    -477,  -477,  -477,  -126,  -477,  -477,  -477,  -128,  -477,   198,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -160,  -477,  -477,  -477,  -157,   225,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -153,  -477,  -477,  -477,  -142,  -477,
-     224,   -48,  -477,  -305,  -477,  -297,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,    55,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -127,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-      83,   202,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,   -76,  -477,  -477,  -477,  -198,  -477,  -477,  -213,
-    -477,  -477,  -477,  -477,  -477,  -477,  -224,  -477,  -477,  -240,
-    -477,  -477,  -477,  -477,  -477
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,   -38,  -479,    61,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,    79,  -479,  -479,  -479,   -58,  -479,
+    -479,  -479,   240,  -479,  -479,  -479,  -479,    40,   219,   -60,
+     -59,   -40,  -479,  -479,   -39,  -479,  -479,    42,   216,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,    38,  -141,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,   -54,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -152,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -157,  -479,  -479,  -479,
+    -154,   173,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -160,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -139,  -479,  -479,  -479,  -136,   214,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -478,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -137,
+    -479,  -479,  -479,  -134,  -479,   193,  -479,   -52,  -479,  -479,
+    -479,  -479,  -479,   -48,  -479,  -479,  -479,  -479,  -479,   -47,
+    -479,  -479,  -479,  -138,  -479,  -479,  -479,  -135,  -479,   201,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -162,  -479,  -479,  -479,  -159,   218,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -161,  -479,  -479,  -479,  -155,
+    -479,   212,   -51,  -479,  -302,  -479,  -301,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,    43,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -143,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,    65,   183,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+    -479,  -479,  -479,   -90,  -479,  -479,  -479,  -210,  -479,  -479,
+    -225,  -479,  -479,  -479,  -479,  -479,  -479,  -236,  -479,  -479,
+    -248,  -479,  -479,  -479,  -479,  -479
   };
 
   const short int
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    32,    33,    34,    57,   528,    72,    73,
-      35,    56,    69,    70,   505,   646,   708,   709,   106,    37,
-      58,    80,    81,    82,   285,    39,    59,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   292,   132,   133,    41,
-      60,   134,   314,   135,   315,   508,   136,   116,   296,   117,
-     297,   580,   581,   582,   664,   765,   583,   665,   584,   666,
-     585,   667,   586,   215,   352,   588,   589,   590,   591,   592,
-     673,   593,   674,   118,   305,   612,   613,   614,   615,   616,
-     617,   618,   119,   307,   622,   623,   624,   691,    53,    66,
-     245,   246,   247,   364,   248,   365,   120,   308,   631,   632,
-     633,   634,   635,   636,   637,   638,   121,   302,   596,   597,
-     598,   678,    43,    61,   156,   157,   158,   324,   159,   320,
-     160,   321,   161,   322,   162,   325,   163,   326,   164,   330,
-     165,   329,   522,   166,   167,   122,   303,   600,   601,   602,
-     681,    49,    64,   216,   217,   218,   219,   220,   221,   222,
-     351,   223,   355,   224,   354,   225,   226,   356,   227,   123,
-     304,   604,   605,   606,   684,    51,    65,   234,   235,   236,
-     237,   238,   360,   239,   240,   241,   169,   323,   650,   651,
-     652,   711,    45,    62,   177,   178,   179,   335,   180,   336,
-     170,   331,   654,   655,   656,   714,    47,    63,   193,   194,
-     195,   124,   295,   197,   339,   198,   340,   199,   348,   200,
-     342,   201,   343,   202,   345,   203,   344,   204,   347,   205,
-     346,   206,   341,   172,   332,   658,   717,   125,   306,   620,
-     319,   424,   425,   426,   427,   428,   509,   126,   127,   310,
-     641,   642,   643,   702,   644,   703,   128,   311,    55,    67,
-     264,   265,   266,   267,   369,   268,   370,   269,   270,   372,
-     271,   272,   273,   375,   552,   274,   376,   275,   276,   277,
-     278,   380,   559,   279,   381,    83,   287,    84,   288,    85,
-     286,   564,   565,   566,   660,   782,   783,   784,   792,   793,
-     794,   795,   800,   796,   798,   810,   811,   812,   819,   820,
-     821,   826,   822,   823,   824
+      21,    22,    23,    32,    33,    34,    57,   532,    72,    73,
+      35,    56,    69,    70,   509,   650,   712,   713,   106,    37,
+      58,    80,    81,    82,   287,    39,    59,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   294,   132,   133,    41,
+      60,   134,   316,   135,   317,   512,   136,   116,   298,   117,
+     299,   584,   585,   586,   668,   769,   587,   669,   588,   670,
+     589,   671,   590,   215,   354,   592,   593,   594,   595,   596,
+     677,   597,   678,   118,   307,   616,   617,   618,   619,   620,
+     621,   622,   119,   309,   626,   627,   628,   695,    53,    66,
+     247,   248,   249,   367,   250,   368,   120,   310,   635,   636,
+     637,   638,   639,   640,   641,   642,   121,   304,   600,   601,
+     602,   682,    43,    61,   156,   157,   158,   326,   159,   322,
+     160,   323,   161,   324,   162,   327,   163,   328,   164,   332,
+     165,   331,   526,   166,   167,   122,   305,   604,   605,   606,
+     685,    49,    64,   216,   217,   218,   219,   220,   221,   222,
+     353,   223,   357,   224,   356,   225,   226,   358,   227,   123,
+     306,   608,   609,   610,   688,    51,    65,   235,   236,   237,
+     238,   239,   362,   240,   241,   242,   243,   169,   325,   654,
+     655,   656,   715,    45,    62,   177,   178,   179,   337,   180,
+     338,   170,   333,   658,   659,   660,   718,    47,    63,   193,
+     194,   195,   124,   297,   197,   341,   198,   342,   199,   350,
+     200,   344,   201,   345,   202,   347,   203,   346,   204,   349,
+     205,   348,   206,   343,   172,   334,   662,   721,   125,   308,
+     624,   321,   427,   428,   429,   430,   431,   513,   126,   127,
+     312,   645,   646,   647,   706,   648,   707,   128,   313,    55,
+      67,   266,   267,   268,   269,   372,   270,   373,   271,   272,
+     375,   273,   274,   275,   378,   556,   276,   379,   277,   278,
+     279,   280,   383,   563,   281,   384,    83,   289,    84,   290,
+      85,   288,   568,   569,   570,   664,   786,   787,   788,   796,
+     797,   798,   799,   804,   800,   802,   814,   815,   816,   823,
+     824,   825,   830,   826,   827,   828
   };
 
   const unsigned short int
   Dhcp4Parser::yytable_[] =
   {
-      79,   152,   231,   151,   175,   191,   214,   230,   244,   263,
-     168,   176,   192,   171,   422,   196,   232,   153,   233,   154,
-      68,   155,   423,   619,    25,   137,    26,    74,    27,    98,
-     550,   208,   228,   209,   210,   229,    88,    89,   137,   173,
-     174,   554,   555,   556,   557,   519,   520,   521,   242,   243,
-     607,   608,   609,   610,    36,   611,   290,    92,    93,    94,
-      24,   291,   138,   139,   140,    86,    98,   242,   243,    38,
-     558,    87,    88,    89,    40,   141,    90,    91,   142,   143,
-     144,   145,   146,   147,   312,    89,   181,   182,   280,   313,
-     148,   149,    42,    92,    93,    94,    95,    96,   150,   281,
-     207,    97,    98,   148,    78,   815,   639,   640,   816,   817,
-     818,    89,   181,   182,    98,   208,    44,   208,   129,   130,
-      78,    78,   131,    99,   100,   208,   551,   209,   210,    46,
-     211,   212,   213,   317,    75,    48,   101,   417,   318,   102,
-      98,    50,   687,    76,    77,   688,   103,   104,   333,   337,
-     105,    52,   689,   334,   338,   690,    78,    78,    28,    29,
-      30,    31,   183,    54,   506,   507,   184,   185,   186,   187,
-     188,   189,   568,   190,    71,   282,   283,   569,   570,   571,
-     572,   573,   574,   575,   576,   577,   578,   787,   284,   788,
-     789,   366,   785,    78,   289,   786,   367,   208,   625,   626,
-     627,   628,   629,   630,   382,    78,   422,    78,   813,   383,
-     293,   814,   294,   740,   423,    78,   249,   250,   251,   252,
+      79,   152,   153,   151,   175,   191,   214,   231,   246,   265,
+     171,   232,   196,   233,   168,   176,   192,   234,    68,   425,
+     426,   154,   155,   137,    25,   623,    26,    74,    27,   137,
+     554,    98,    24,   819,    88,    89,   820,   821,   822,    86,
+     244,   245,   173,   174,   292,    87,    88,    89,   314,   293,
+      90,    91,   282,   315,   319,    92,    93,    94,   335,   320,
+     138,   139,   140,   336,    98,   244,   245,    92,    93,    94,
+      95,    96,   510,   511,   141,    97,    98,   142,   143,   144,
+     145,   146,   147,    89,   181,   182,   643,   644,    36,   148,
+     149,    89,   181,   182,    38,   148,    78,   150,    99,   100,
+      40,   207,   208,   228,   209,   210,   229,   230,   208,    42,
+     339,   101,    98,   208,   102,   340,   523,   524,   525,   369,
+      98,   103,   104,    78,   370,   105,   208,   555,   209,   210,
+      44,    46,   211,   212,   213,    75,   420,   558,   559,   560,
+     561,   385,    48,   183,    76,    77,   386,   184,   185,   186,
+     187,   188,   189,   314,   190,    50,    78,    78,   663,    28,
+      29,    30,    31,    52,   572,    54,   562,    71,    78,   573,
+     574,   575,   576,   577,   578,   579,   580,   581,   582,   791,
+     283,   792,   793,   629,   630,   631,   632,   633,   634,   208,
+     665,   319,   679,    78,   284,   666,   667,   680,   286,    78,
+     611,   612,   613,   614,    78,   615,   679,   765,   766,   767,
+     768,   681,    78,   425,   426,   744,   285,    78,   251,   252,
      253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     298,    78,    79,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,   312,   384,   385,   661,   317,   659,
-     675,   349,   662,   663,   675,   676,   419,   700,    78,   677,
-     704,   418,   701,   299,   382,   705,   300,   333,   420,   706,
-     301,   421,   771,   152,   309,   151,   366,   350,   337,   175,
-     316,   774,   168,   778,   327,   171,   176,    78,   328,   153,
-     801,   154,   191,   155,   353,   802,   357,   358,   830,   192,
-     231,   214,   196,   831,   359,   230,   761,   762,   763,   764,
-     361,   362,   363,   386,   232,   368,   233,   371,   373,   374,
-     377,   378,   379,   387,   263,   388,   389,   390,   392,   393,
-     395,   396,   397,   394,   398,   399,   400,   401,   402,   403,
-     404,   405,   406,   407,   408,   410,   411,   409,   413,   414,
-     429,   415,   430,   489,   490,   431,   432,   433,   434,   435,
-     436,   437,   438,   439,   440,   441,   443,   444,   446,   447,
-     448,   449,   450,   451,   452,   453,   454,   455,   457,   458,
-     459,   460,   461,   462,   463,   465,   468,   469,   466,   472,
-     471,   473,   474,   475,   478,   476,   477,   479,   483,   484,
-     480,   486,   481,   487,   492,   482,   488,   491,   493,   494,
-     495,   496,   497,   498,   499,   500,   512,   513,   501,   502,
-     503,   504,   510,   511,   514,   516,   515,   517,   524,   525,
-     587,   587,   518,   546,    26,   579,   579,   523,   526,   529,
-     595,   530,   599,   532,   533,   263,   534,   535,   419,   536,
-     561,   537,   603,   418,   621,   647,   649,   653,   668,   538,
-     420,   669,   670,   421,   539,   657,   671,   672,   540,   541,
-     542,   543,   544,   679,   680,   563,   682,   683,   685,   686,
-     693,   692,   545,   694,   695,   696,   547,   697,   548,   549,
-     698,   699,   553,   713,   712,   560,   716,   715,   719,   721,
-     718,   722,   723,   724,   730,   731,   750,   751,   754,   527,
-     753,   759,   531,   760,   772,   707,   807,   773,   779,   781,
-     799,   803,   805,   391,   827,   710,   809,   828,   725,   829,
-     832,   562,   727,   726,   412,   416,   567,   594,   732,   739,
-     728,   742,   741,   729,   743,   470,   749,   734,   733,   442,
-     735,   736,   464,   756,   755,   744,   737,   745,   746,   747,
-     738,   467,   445,   758,   748,   766,   648,   767,   768,   769,
-     770,   775,   757,   776,   456,   777,   780,   752,   804,   808,
-     837,   833,   834,   835,   485,   720,   645,   797,   806,   825,
-     836,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   587,     0,     0,     0,     0,   579,   152,     0,
-     151,   231,     0,   214,     0,     0,   230,   168,     0,     0,
-     171,     0,     0,   244,   153,   232,   154,   233,   155,     0,
+     263,   264,   704,   708,    79,   385,   335,   705,   709,   369,
+     710,   775,   291,   295,   778,   387,   388,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,   296,   339,
+      78,   805,   691,   421,   782,   692,   806,   422,   834,   351,
+     424,   300,   301,   835,   423,   152,   153,   151,   129,   130,
+      78,   175,   131,   693,   171,   302,   694,   789,   168,   303,
+     790,   311,   176,   318,   191,   154,   155,   817,   360,   329,
+     818,   196,   330,   214,   352,   192,   355,   359,   231,   361,
+     389,   363,   232,   364,   233,   366,   365,   371,   234,   374,
+     376,   377,   380,   381,   382,   390,   391,   265,   392,   393,
+     395,   398,   399,   400,   396,   397,   405,   401,   402,   403,
+     404,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     416,   417,   418,   432,   493,   494,   433,   434,   435,   436,
+     437,   438,   439,   440,   441,   442,   443,   444,   446,   447,
+     449,   450,   451,   452,   453,   454,   455,   456,   457,   458,
+     460,   461,   462,   463,   464,   465,   466,   468,   469,   470,
+     472,   473,   475,   476,   477,   479,   478,   482,   480,   483,
+     487,   481,   488,   490,   491,   484,   485,   486,   492,   495,
+     496,   497,   498,   499,   500,   501,   502,   503,   504,   516,
+     730,   505,   506,   507,   508,   514,   515,   519,   517,   528,
+     651,   518,   520,   521,   529,   550,   522,   527,    26,   583,
+     583,   599,   603,   591,   591,   530,   607,   625,   653,   265,
+     533,   534,   565,   657,   536,   672,   673,   421,   674,   675,
+     676,   422,   698,   537,   424,   683,   684,   686,   423,   687,
+     538,   539,   690,   540,   541,   542,   543,   689,   696,   697,
+     716,   699,   661,   544,   700,   701,   702,   703,   545,   717,
+     546,   547,   720,   719,   723,   725,   722,   726,   548,   549,
+     727,   557,   728,   734,   735,   754,   755,   758,   531,   757,
+     763,   567,   764,   776,   803,   807,   777,   783,   551,   785,
+     809,   813,   552,   811,   553,   564,   831,   832,   833,   836,
+     535,   566,   394,   415,   711,   419,   598,   571,   736,   743,
+     746,   745,   474,   714,   753,   738,   737,   729,   731,   445,
+     740,   739,   742,   741,   467,   760,   759,   448,   652,   762,
+     770,   732,   733,   761,   459,   756,   747,   471,   489,   748,
+     749,   750,   649,   751,   752,   724,   771,   772,   773,   801,
+     810,   829,   774,   779,   780,   781,   840,   784,     0,   808,
+     812,     0,   837,     0,   838,     0,     0,     0,   839,     0,
+     841,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   175,     0,     0,   191,     0,     0,     0,
-     176,     0,     0,   192,     0,     0,   196,     0,     0,     0,
+       0,   583,   152,   153,   151,   591,     0,   214,     0,     0,
+     231,   171,     0,     0,   232,   168,   233,   246,     0,     0,
+     234,     0,   154,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   175,     0,     0,
+     191,     0,     0,     0,     0,     0,     0,   196,   176,     0,
+       0,   192,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   791,     0,     0,     0,     0,   790,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   791,     0,
-       0,     0,     0,   790
+     794,     0,     0,     0,   795,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   794,     0,     0,
+       0,   795
   };
 
   const short int
   Dhcp4Parser::yycheck_[] =
   {
-      58,    61,    65,    61,    62,    63,    64,    65,    66,    67,
-      61,    62,    63,    61,   319,    63,    65,    61,    65,    61,
-      56,    61,   319,   499,     5,     7,     7,    10,     9,    48,
-      15,    49,    50,    51,    52,    53,    18,    19,     7,    58,
-      59,   113,   114,   115,   116,    66,    67,    68,    83,    84,
-      74,    75,    76,    77,     7,    79,     3,    39,    40,    41,
-       0,     8,    44,    45,    46,    11,    48,    83,    84,     7,
-     142,    17,    18,    19,     7,    57,    22,    23,    60,    61,
-      62,    63,    64,    65,     3,    19,    20,    21,     6,     8,
-      72,    73,     7,    39,    40,    41,    42,    43,    80,     3,
-      24,    47,    48,    72,   139,   120,    94,    95,   123,   124,
-     125,    19,    20,    21,    48,    49,     7,    49,    12,    13,
-     139,   139,    16,    69,    70,    49,   111,    51,    52,     7,
-      54,    55,    56,     3,   117,     7,    82,    71,     8,    85,
-      48,     7,     3,   126,   127,     6,    92,    93,     3,     3,
-      96,     7,     3,     8,     8,     6,   139,   139,   139,   140,
-     141,   142,    70,     7,    14,    15,    74,    75,    76,    77,
-      78,    79,    24,    81,   139,     4,     8,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,   119,     3,   121,
-     122,     3,     3,   139,     4,     6,     8,    49,    86,    87,
-      88,    89,    90,    91,     3,   139,   511,   139,     3,     8,
-       4,     6,     4,   689,   511,   139,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-       4,   139,   290,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,     3,   281,   282,     3,     3,     8,
-       3,     8,     8,     8,     3,     8,   319,     3,   139,     8,
-       3,   319,     8,     4,     3,     8,     4,     3,   319,     8,
-       4,   319,     8,   333,     4,   333,     3,     3,     3,   337,
-       4,     8,   333,     8,     4,   333,   337,   139,     4,   333,
-       3,   333,   350,   333,     4,     8,     4,     8,     3,   350,
-     363,   359,   350,     8,     3,   363,    25,    26,    27,    28,
-       4,     8,     3,   139,   363,     4,   363,     4,     4,     4,
-       4,     4,     4,     4,   382,     4,     4,     4,     4,   142,
-       4,     4,     4,   142,   140,   140,   140,   140,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   140,     4,     4,
-       4,   142,     4,   389,   390,     4,     4,     4,     4,     4,
-     140,   142,     4,     4,     4,     4,     4,     4,     4,     4,
+      58,    61,    61,    61,    62,    63,    64,    65,    66,    67,
+      61,    65,    63,    65,    61,    62,    63,    65,    56,   321,
+     321,    61,    61,     7,     5,   503,     7,    10,     9,     7,
+      15,    48,     0,   121,    18,    19,   124,   125,   126,    11,
+      84,    85,    59,    60,     3,    17,    18,    19,     3,     8,
+      22,    23,     6,     8,     3,    39,    40,    41,     3,     8,
+      44,    45,    46,     8,    48,    84,    85,    39,    40,    41,
+      42,    43,    14,    15,    58,    47,    48,    61,    62,    63,
+      64,    65,    66,    19,    20,    21,    95,    96,     7,    73,
+      74,    19,    20,    21,     7,    73,   140,    81,    70,    71,
+       7,    24,    49,    50,    51,    52,    53,    54,    49,     7,
+       3,    83,    48,    49,    86,     8,    67,    68,    69,     3,
+      48,    93,    94,   140,     8,    97,    49,   112,    51,    52,
+       7,     7,    55,    56,    57,   118,    72,   114,   115,   116,
+     117,     3,     7,    71,   127,   128,     8,    75,    76,    77,
+      78,    79,    80,     3,    82,     7,   140,   140,     8,   140,
+     141,   142,   143,     7,    24,     7,   143,   140,   140,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,   120,
+       3,   122,   123,    87,    88,    89,    90,    91,    92,    49,
+       3,     3,     3,   140,     4,     8,     8,     8,     3,   140,
+      75,    76,    77,    78,   140,    80,     3,    25,    26,    27,
+      28,     8,   140,   515,   515,   693,     8,   140,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,     3,     3,   292,     3,     3,     8,     8,     3,
+       8,     8,     4,     4,     8,   283,   284,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,     4,     3,
+     140,     3,     3,   321,     8,     6,     8,   321,     3,     8,
+     321,     4,     4,     8,   321,   335,   335,   335,    12,    13,
+     140,   339,    16,     3,   335,     4,     6,     3,   335,     4,
+       6,     4,   339,     4,   352,   335,   335,     3,     8,     4,
+       6,   352,     4,   361,     3,   352,     4,     4,   366,     3,
+     140,     4,   366,     4,   366,     3,     8,     4,   366,     4,
+       4,     4,     4,     4,     4,     4,     4,   385,     4,     4,
+       4,     4,     4,     4,   143,   143,     4,   141,   141,   141,
+     141,     4,     4,     4,     4,     4,     4,   141,     4,     4,
+       4,     4,   143,     4,   392,   393,     4,     4,     4,     4,
+       4,     4,   141,   143,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     140,     4,     4,     4,   142,     4,     4,     4,   142,     4,
-     142,     4,   140,     4,     4,   140,   140,     4,     4,     4,
-     142,     4,   142,     7,   139,   142,     7,     7,     7,     7,
-       5,     5,     5,     5,     5,     5,   139,   139,     7,     7,
-       7,     5,     8,     3,   139,   139,     5,   139,     5,     7,
-     493,   494,   139,   469,     7,   493,   494,   139,   139,   139,
-       7,   139,     7,   139,   139,   503,   139,   139,   511,   139,
-     486,   139,     7,   511,     7,     4,     7,     7,     4,   139,
-     511,     4,     4,   511,   139,    81,     4,     4,   139,   139,
-     139,   139,   139,     6,     3,   118,     6,     3,     6,     3,
-       3,     6,   139,     4,     4,     4,   139,     4,   139,   139,
-       4,     4,   112,     3,     6,   139,     3,     6,     4,     4,
-       8,     4,     4,     4,     4,     4,     4,     4,     3,   444,
-       6,     4,   448,     5,     8,   139,     5,     8,     8,     7,
-       4,     4,     4,   290,     4,   139,     7,     4,   140,     4,
-       4,   487,   140,   142,   312,   317,   491,   494,   675,   687,
-     142,   693,   691,   140,   140,   366,   700,   680,   678,   333,
-     681,   683,   359,   713,   711,   140,   684,   140,   140,   140,
-     686,   363,   337,   716,   140,   139,   511,   139,   139,   139,
-     139,   139,   714,   139,   350,   139,   139,   704,   140,   139,
-     139,   142,   140,   140,   382,   661,   503,   785,   801,   813,
-     830,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,     4,   141,     4,     4,     4,   143,     4,   143,   143,
+       4,     4,   143,     4,     4,     4,   141,     4,   141,     4,
+       4,   141,     4,     4,     7,   143,   143,   143,     7,     7,
+     140,     7,     7,     5,     5,     5,     5,     5,     5,   140,
+     143,     7,     7,     7,     5,     8,     3,     5,   140,     5,
+       4,   140,   140,   140,     7,   473,   140,   140,     7,   497,
+     498,     7,     7,   497,   498,   140,     7,     7,     7,   507,
+     140,   140,   490,     7,   140,     4,     4,   515,     4,     4,
+       4,   515,     4,   140,   515,     6,     3,     6,   515,     3,
+     140,   140,     3,   140,   140,   140,   140,     6,     6,     3,
+       6,     4,    82,   140,     4,     4,     4,     4,   140,     3,
+     140,   140,     3,     6,     4,     4,     8,     4,   140,   140,
+       4,   113,     4,     4,     4,     4,     4,     3,   447,     6,
+       4,   119,     5,     8,     4,     4,     8,     8,   140,     7,
+       4,     7,   140,     5,   140,   140,     4,     4,     4,     4,
+     451,   491,   292,   314,   140,   319,   498,   495,   679,   691,
+     697,   695,   369,   140,   704,   684,   682,   141,   141,   335,
+     687,   685,   690,   688,   361,   717,   715,   339,   515,   720,
+     140,   143,   141,   718,   352,   708,   141,   366,   385,   141,
+     141,   141,   507,   141,   141,   665,   140,   140,   140,   789,
+     805,   817,   140,   140,   140,   140,   834,   140,    -1,   141,
+     140,    -1,   143,    -1,   141,    -1,    -1,    -1,   141,    -1,
+     140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   675,    -1,    -1,    -1,    -1,   675,   678,    -1,
-     678,   684,    -1,   681,    -1,    -1,   684,   678,    -1,    -1,
-     678,    -1,    -1,   691,   678,   684,   678,   684,   678,    -1,
+      -1,   679,   682,   682,   682,   679,    -1,   685,    -1,    -1,
+     688,   682,    -1,    -1,   688,   682,   688,   695,    -1,    -1,
+     688,    -1,   682,   682,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   715,    -1,    -1,
+     718,    -1,    -1,    -1,    -1,    -1,    -1,   718,   715,    -1,
+      -1,   718,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   711,    -1,    -1,   714,    -1,    -1,    -1,
-     711,    -1,    -1,   714,    -1,    -1,   714,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   784,    -1,    -1,    -1,    -1,   784,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   801,    -1,
-      -1,    -1,    -1,   801
+     788,    -1,    -1,    -1,   788,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   805,    -1,    -1,
+      -1,   805
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,     0,     5,     7,     9,   139,   140,
-     141,   142,   156,   157,   158,   163,     7,   172,     7,   178,
-       7,   192,     7,   265,     7,   335,     7,   349,     7,   294,
-       7,   318,     7,   241,     7,   401,   164,   159,   173,   179,
-     193,   266,   336,   350,   295,   319,   242,   402,   156,   165,
-     166,   139,   161,   162,    10,   117,   126,   127,   139,   171,
-     174,   175,   176,   428,   430,   432,    11,    17,    18,    19,
-      22,    23,    39,    40,    41,    42,    43,    47,    48,    69,
-      70,    82,    85,    92,    93,    96,   171,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   200,   202,   226,   235,
-     249,   259,   288,   312,   354,   380,   390,   391,   399,    12,
-      13,    16,   190,   191,   194,   196,   199,     7,    44,    45,
-      46,    57,    60,    61,    62,    63,    64,    65,    72,    73,
-      80,   171,   182,   183,   184,   187,   267,   268,   269,   271,
-     273,   275,   277,   279,   281,   283,   286,   287,   312,   329,
-     343,   354,   376,    58,    59,   171,   312,   337,   338,   339,
-     341,    20,    21,    70,    74,    75,    76,    77,    78,    79,
-      81,   171,   312,   351,   352,   353,   354,   356,   358,   360,
-     362,   364,   366,   368,   370,   372,   374,    24,    49,    51,
-      52,    54,    55,    56,   171,   216,   296,   297,   298,   299,
-     300,   301,   302,   304,   306,   308,   309,   311,    50,    53,
-     171,   216,   300,   306,   320,   321,   322,   323,   324,   326,
-     327,   328,    83,    84,   171,   243,   244,   245,   247,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   171,   403,   404,   405,   406,   408,   410,
-     411,   413,   414,   415,   418,   420,   421,   422,   423,   426,
-       6,     3,     4,     8,     3,   177,   433,   429,   431,     4,
-       3,     8,   189,     4,     4,   355,   201,   203,     4,     4,
-       4,     4,   260,   289,   313,   227,   381,   236,   250,     4,
-     392,   400,     3,     8,   195,   197,     4,     3,     8,   383,
-     272,   274,   276,   330,   270,   278,   280,     4,     4,   284,
-     282,   344,   377,     3,     8,   340,   342,     3,     8,   357,
-     359,   375,   363,   365,   369,   367,   373,   371,   361,     8,
-       3,   303,   217,     4,   307,   305,   310,     4,     8,     3,
-     325,     4,     8,     3,   246,   248,     3,     8,     4,   407,
-     409,     4,   412,     4,     4,   416,   419,     4,     4,     4,
-     424,   427,     3,     8,   156,   156,   139,     4,     4,     4,
-       4,   175,     4,   142,   142,     4,     4,     4,   140,   140,
-     140,   140,     4,     4,     4,     4,     4,     4,     4,   140,
-       4,     4,   181,     4,     4,   142,   191,    71,   171,   216,
-     312,   354,   356,   358,   384,   385,   386,   387,   388,     4,
-       4,     4,     4,     4,     4,     4,   140,   142,     4,     4,
-       4,     4,   268,     4,     4,   338,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   353,     4,     4,   140,
-       4,     4,     4,   142,   298,     4,   142,   322,     4,     4,
-     244,   142,     4,     4,   140,     4,   140,   140,     4,     4,
-     142,   142,   142,     4,     4,   404,     4,     7,     7,   156,
-     156,     7,   139,     7,     7,     5,     5,     5,     5,     5,
-       5,     7,     7,     7,     5,   167,    14,    15,   198,   389,
-       8,     3,   139,   139,   139,     5,   139,   139,   139,    66,
-      67,    68,   285,   139,     5,     7,   139,   158,   160,   139,
-     139,   167,   139,   139,   139,   139,   139,   139,   139,   139,
-     139,   139,   139,   139,   139,   139,   156,   139,   139,   139,
-      15,   111,   417,   112,   113,   114,   115,   116,   142,   425,
-     139,   156,   180,   118,   434,   435,   436,   190,    24,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,   171,
-     204,   205,   206,   209,   211,   213,   215,   216,   218,   219,
-     220,   221,   222,   224,   204,     7,   261,   262,   263,     7,
-     290,   291,   292,     7,   314,   315,   316,    74,    75,    76,
-      77,    79,   228,   229,   230,   231,   232,   233,   234,   281,
-     382,     7,   237,   238,   239,    86,    87,    88,    89,    90,
-      91,   251,   252,   253,   254,   255,   256,   257,   258,    94,
-      95,   393,   394,   395,   397,   403,   168,     4,   386,     7,
-     331,   332,   333,     7,   345,   346,   347,    81,   378,     8,
-     437,     3,     8,     8,   207,   210,   212,   214,     4,     4,
-       4,     4,     4,   223,   225,     3,     8,     8,   264,     6,
-       3,   293,     6,     3,   317,     6,     3,     3,     6,     3,
-       6,   240,     6,     3,     4,     4,     4,     4,     4,     4,
-       3,     8,   396,   398,     3,     8,     8,   139,   169,   170,
-     139,   334,     6,     3,   348,     6,     3,   379,     8,     4,
-     435,     4,     4,     4,     4,   140,   142,   140,   142,   140,
-       4,     4,   205,   267,   263,   296,   292,   320,   316,   229,
-     281,   243,   239,   140,   140,   140,   140,   140,   140,   252,
-       4,     4,   394,     6,     3,   337,   333,   351,   347,     4,
-       5,    25,    26,    27,    28,   208,   139,   139,   139,   139,
-     139,     8,     8,     8,     8,   139,   139,   139,     8,     8,
-     139,     7,   438,   439,   440,     3,     6,   119,   121,   122,
-     171,   216,   441,   442,   443,   444,   446,   439,   447,     4,
-     445,     3,     8,     4,   140,     4,   442,     5,   139,     7,
-     448,   449,   450,     3,     6,   120,   123,   124,   125,   451,
-     452,   453,   455,   456,   457,   449,   454,     4,     4,     4,
-       3,     8,     4,   142,   140,   140,   452,   139
+       0,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,     0,     5,     7,     9,   140,   141,
+     142,   143,   157,   158,   159,   164,     7,   173,     7,   179,
+       7,   193,     7,   266,     7,   337,     7,   351,     7,   295,
+       7,   319,     7,   242,     7,   403,   165,   160,   174,   180,
+     194,   267,   338,   352,   296,   320,   243,   404,   157,   166,
+     167,   140,   162,   163,    10,   118,   127,   128,   140,   172,
+     175,   176,   177,   430,   432,   434,    11,    17,    18,    19,
+      22,    23,    39,    40,    41,    42,    43,    47,    48,    70,
+      71,    83,    86,    93,    94,    97,   172,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   201,   203,   227,   236,
+     250,   260,   289,   313,   356,   382,   392,   393,   401,    12,
+      13,    16,   191,   192,   195,   197,   200,     7,    44,    45,
+      46,    58,    61,    62,    63,    64,    65,    66,    73,    74,
+      81,   172,   183,   184,   185,   188,   268,   269,   270,   272,
+     274,   276,   278,   280,   282,   284,   287,   288,   313,   331,
+     345,   356,   378,    59,    60,   172,   313,   339,   340,   341,
+     343,    20,    21,    71,    75,    76,    77,    78,    79,    80,
+      82,   172,   313,   353,   354,   355,   356,   358,   360,   362,
+     364,   366,   368,   370,   372,   374,   376,    24,    49,    51,
+      52,    55,    56,    57,   172,   217,   297,   298,   299,   300,
+     301,   302,   303,   305,   307,   309,   310,   312,    50,    53,
+      54,   172,   217,   301,   307,   321,   322,   323,   324,   325,
+     327,   328,   329,   330,    84,    85,   172,   244,   245,   246,
+     248,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   172,   405,   406,   407,   408,
+     410,   412,   413,   415,   416,   417,   420,   422,   423,   424,
+     425,   428,     6,     3,     4,     8,     3,   178,   435,   431,
+     433,     4,     3,     8,   190,     4,     4,   357,   202,   204,
+       4,     4,     4,     4,   261,   290,   314,   228,   383,   237,
+     251,     4,   394,   402,     3,     8,   196,   198,     4,     3,
+       8,   385,   273,   275,   277,   332,   271,   279,   281,     4,
+       4,   285,   283,   346,   379,     3,     8,   342,   344,     3,
+       8,   359,   361,   377,   365,   367,   371,   369,   375,   373,
+     363,     8,     3,   304,   218,     4,   308,   306,   311,     4,
+       8,     3,   326,     4,     4,     8,     3,   247,   249,     3,
+       8,     4,   409,   411,     4,   414,     4,     4,   418,   421,
+       4,     4,     4,   426,   429,     3,     8,   157,   157,   140,
+       4,     4,     4,     4,   176,     4,   143,   143,     4,     4,
+       4,   141,   141,   141,   141,     4,     4,     4,     4,     4,
+       4,     4,   141,     4,     4,   182,     4,     4,   143,   192,
+      72,   172,   217,   313,   356,   358,   360,   386,   387,   388,
+     389,   390,     4,     4,     4,     4,     4,     4,     4,   141,
+     143,     4,     4,     4,     4,   269,     4,     4,   340,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,   355,
+       4,     4,   141,     4,     4,     4,   143,   299,     4,   143,
+     143,   323,     4,     4,   245,   143,     4,     4,   141,     4,
+     141,   141,     4,     4,   143,   143,   143,     4,     4,   406,
+       4,     7,     7,   157,   157,     7,   140,     7,     7,     5,
+       5,     5,     5,     5,     5,     7,     7,     7,     5,   168,
+      14,    15,   199,   391,     8,     3,   140,   140,   140,     5,
+     140,   140,   140,    67,    68,    69,   286,   140,     5,     7,
+     140,   159,   161,   140,   140,   168,   140,   140,   140,   140,
+     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
+     157,   140,   140,   140,    15,   112,   419,   113,   114,   115,
+     116,   117,   143,   427,   140,   157,   181,   119,   436,   437,
+     438,   191,    24,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,   172,   205,   206,   207,   210,   212,   214,
+     216,   217,   219,   220,   221,   222,   223,   225,   205,     7,
+     262,   263,   264,     7,   291,   292,   293,     7,   315,   316,
+     317,    75,    76,    77,    78,    80,   229,   230,   231,   232,
+     233,   234,   235,   282,   384,     7,   238,   239,   240,    87,
+      88,    89,    90,    91,    92,   252,   253,   254,   255,   256,
+     257,   258,   259,    95,    96,   395,   396,   397,   399,   405,
+     169,     4,   388,     7,   333,   334,   335,     7,   347,   348,
+     349,    82,   380,     8,   439,     3,     8,     8,   208,   211,
+     213,   215,     4,     4,     4,     4,     4,   224,   226,     3,
+       8,     8,   265,     6,     3,   294,     6,     3,   318,     6,
+       3,     3,     6,     3,     6,   241,     6,     3,     4,     4,
+       4,     4,     4,     4,     3,     8,   398,   400,     3,     8,
+       8,   140,   170,   171,   140,   336,     6,     3,   350,     6,
+       3,   381,     8,     4,   437,     4,     4,     4,     4,   141,
+     143,   141,   143,   141,     4,     4,   206,   268,   264,   297,
+     293,   321,   317,   230,   282,   244,   240,   141,   141,   141,
+     141,   141,   141,   253,     4,     4,   396,     6,     3,   339,
+     335,   353,   349,     4,     5,    25,    26,    27,    28,   209,
+     140,   140,   140,   140,   140,     8,     8,     8,     8,   140,
+     140,   140,     8,     8,   140,     7,   440,   441,   442,     3,
+       6,   120,   122,   123,   172,   217,   443,   444,   445,   446,
+     448,   441,   449,     4,   447,     3,     8,     4,   141,     4,
+     444,     5,   140,     7,   450,   451,   452,     3,     6,   121,
+     124,   125,   126,   453,   454,   455,   457,   458,   459,   451,
+     456,     4,     4,     4,     3,     8,     4,   143,   141,   141,
+     454,   140
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   143,   145,   144,   146,   144,   147,   144,   148,   144,
-     149,   144,   150,   144,   151,   144,   152,   144,   153,   144,
-     154,   144,   155,   144,   156,   156,   156,   156,   156,   156,
-     156,   157,   159,   158,   160,   161,   161,   162,   162,   164,
-     163,   165,   165,   166,   166,   168,   167,   169,   169,   170,
-     170,   171,   173,   172,   174,   174,   175,   175,   175,   175,
-     175,   177,   176,   179,   178,   180,   180,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   182,   183,
-     184,   185,   186,   187,   189,   188,   190,   190,   191,   191,
-     191,   193,   192,   195,   194,   197,   196,   198,   198,   199,
-     201,   200,   203,   202,   204,   204,   205,   205,   205,   205,
-     205,   205,   205,   205,   205,   205,   205,   205,   205,   207,
-     206,   208,   208,   208,   208,   210,   209,   212,   211,   214,
-     213,   215,   217,   216,   218,   219,   220,   221,   223,   222,
-     225,   224,   227,   226,   228,   228,   229,   229,   229,   229,
-     229,   230,   231,   232,   233,   234,   236,   235,   237,   237,
-     238,   238,   240,   239,   242,   241,   243,   243,   243,   244,
-     244,   246,   245,   248,   247,   250,   249,   251,   251,   252,
-     252,   252,   252,   252,   252,   253,   254,   255,   256,   257,
-     258,   260,   259,   261,   261,   262,   262,   264,   263,   266,
-     265,   267,   267,   268,   268,   268,   268,   268,   268,   268,
-     268,   268,   268,   268,   268,   268,   268,   268,   268,   268,
-     268,   268,   268,   270,   269,   272,   271,   274,   273,   276,
-     275,   278,   277,   280,   279,   282,   281,   284,   283,   285,
-     285,   285,   286,   287,   289,   288,   290,   290,   291,   291,
-     293,   292,   295,   294,   296,   296,   297,   297,   298,   298,
-     298,   298,   298,   298,   298,   298,   299,   300,   301,   303,
-     302,   305,   304,   307,   306,   308,   310,   309,   311,   313,
-     312,   314,   314,   315,   315,   317,   316,   319,   318,   320,
-     320,   321,   321,   322,   322,   322,   322,   322,   322,   323,
-     325,   324,   326,   327,   328,   330,   329,   331,   331,   332,
-     332,   334,   333,   336,   335,   337,   337,   338,   338,   338,
-     338,   340,   339,   342,   341,   344,   343,   345,   345,   346,
-     346,   348,   347,   350,   349,   351,   351,   352,   352,   353,
-     353,   353,   353,   353,   353,   353,   353,   353,   353,   353,
-     353,   353,   355,   354,   357,   356,   359,   358,   361,   360,
+       0,   144,   146,   145,   147,   145,   148,   145,   149,   145,
+     150,   145,   151,   145,   152,   145,   153,   145,   154,   145,
+     155,   145,   156,   145,   157,   157,   157,   157,   157,   157,
+     157,   158,   160,   159,   161,   162,   162,   163,   163,   165,
+     164,   166,   166,   167,   167,   169,   168,   170,   170,   171,
+     171,   172,   174,   173,   175,   175,   176,   176,   176,   176,
+     176,   178,   177,   180,   179,   181,   181,   182,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   182,   183,   184,
+     185,   186,   187,   188,   190,   189,   191,   191,   192,   192,
+     192,   194,   193,   196,   195,   198,   197,   199,   199,   200,
+     202,   201,   204,   203,   205,   205,   206,   206,   206,   206,
+     206,   206,   206,   206,   206,   206,   206,   206,   206,   208,
+     207,   209,   209,   209,   209,   211,   210,   213,   212,   215,
+     214,   216,   218,   217,   219,   220,   221,   222,   224,   223,
+     226,   225,   228,   227,   229,   229,   230,   230,   230,   230,
+     230,   231,   232,   233,   234,   235,   237,   236,   238,   238,
+     239,   239,   241,   240,   243,   242,   244,   244,   244,   245,
+     245,   247,   246,   249,   248,   251,   250,   252,   252,   253,
+     253,   253,   253,   253,   253,   254,   255,   256,   257,   258,
+     259,   261,   260,   262,   262,   263,   263,   265,   264,   267,
+     266,   268,   268,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   271,   270,   273,   272,   275,   274,   277,
+     276,   279,   278,   281,   280,   283,   282,   285,   284,   286,
+     286,   286,   287,   288,   290,   289,   291,   291,   292,   292,
+     294,   293,   296,   295,   297,   297,   298,   298,   299,   299,
+     299,   299,   299,   299,   299,   299,   300,   301,   302,   304,
+     303,   306,   305,   308,   307,   309,   311,   310,   312,   314,
+     313,   315,   315,   316,   316,   318,   317,   320,   319,   321,
+     321,   322,   322,   323,   323,   323,   323,   323,   323,   323,
+     324,   326,   325,   327,   328,   329,   330,   332,   331,   333,
+     333,   334,   334,   336,   335,   338,   337,   339,   339,   340,
+     340,   340,   340,   342,   341,   344,   343,   346,   345,   347,
+     347,   348,   348,   350,   349,   352,   351,   353,   353,   354,
+     354,   355,   355,   355,   355,   355,   355,   355,   355,   355,
+     355,   355,   355,   355,   357,   356,   359,   358,   361,   360,
      363,   362,   365,   364,   367,   366,   369,   368,   371,   370,
      373,   372,   375,   374,   377,   376,   379,   378,   381,   380,
-     382,   382,   383,   281,   384,   384,   385,   385,   386,   386,
-     386,   386,   386,   386,   386,   387,   389,   388,   390,   392,
-     391,   393,   393,   394,   394,   396,   395,   398,   397,   400,
-     399,   402,   401,   403,   403,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
-     405,   407,   406,   409,   408,   410,   412,   411,   413,   414,
-     416,   415,   417,   417,   419,   418,   420,   421,   422,   424,
-     423,   425,   425,   425,   425,   425,   427,   426,   429,   428,
-     431,   430,   433,   432,   434,   434,   435,   437,   436,   438,
-     438,   440,   439,   441,   441,   442,   442,   442,   442,   442,
-     443,   445,   444,   447,   446,   448,   448,   450,   449,   451,
-     451,   452,   452,   452,   452,   454,   453,   455,   456,   457
+     383,   382,   384,   384,   385,   282,   386,   386,   387,   387,
+     388,   388,   388,   388,   388,   388,   388,   389,   391,   390,
+     392,   394,   393,   395,   395,   396,   396,   398,   397,   400,
+     399,   402,   401,   404,   403,   405,   405,   406,   406,   406,
+     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
+     406,   406,   407,   409,   408,   411,   410,   412,   414,   413,
+     415,   416,   418,   417,   419,   419,   421,   420,   422,   423,
+     424,   426,   425,   427,   427,   427,   427,   427,   429,   428,
+     431,   430,   433,   432,   435,   434,   436,   436,   437,   439,
+     438,   440,   440,   442,   441,   443,   443,   444,   444,   444,
+     444,   444,   445,   447,   446,   449,   448,   450,   450,   452,
+     451,   453,   453,   454,   454,   454,   454,   456,   455,   457,
+     458,   459
   };
 
   const unsigned char
@@ -3911,26 +3926,27 @@ namespace isc { namespace dhcp {
        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,
-       0,     4,     1,     1,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       1,     0,     4,     0,     4,     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,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
+       1,     0,     4,     1,     1,     3,     3,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
+       1,     1,     1,     0,     4,     0,     4,     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,     1,     1,     0,     4,     0,     4,     0,     4,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     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,     0,     4,     0,     4,     0,
-       6,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     0,     4,     0,     6,     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,     0,     4,     0,
+       4,     0,     6,     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,     6,     1,     3,     1,     0,     6,     1,
-       3,     0,     4,     1,     3,     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,     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,     6,     1,     3,     1,     0,
+       6,     1,     3,     0,     4,     1,     3,     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
   };
 
 
@@ -3953,7 +3969,7 @@ namespace isc { namespace dhcp {
   "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
   "\"subnet4\"", "\"4o6-interface\"", "\"4o6-interface-id\"",
   "\"4o6-subnet\"", "\"option-def\"", "\"option-data\"", "\"name\"",
-  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
+  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", "\"persistent\"",
   "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
   "\"pool\"", "\"user-context\"", "\"subnet\"", "\"interface\"",
   "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
@@ -4025,10 +4041,10 @@ namespace isc { namespace dhcp {
   "option_data_params", "not_empty_option_data_params",
   "option_data_param", "option_data_name", "option_data_data", "$@59",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "pools_list", "$@60", "pools_list_content", "not_empty_pools_list",
-  "pool_list_entry", "$@61", "sub_pool4", "$@62", "pool_params",
-  "pool_param", "pool_entry", "$@63", "user_context", "$@64",
-  "reservations", "$@65", "reservations_list",
+  "option_data_persistent", "pools_list", "$@60", "pools_list_content",
+  "not_empty_pools_list", "pool_list_entry", "$@61", "sub_pool4", "$@62",
+  "pool_params", "pool_param", "pool_entry", "$@63", "user_context",
+  "$@64", "reservations", "$@65", "reservations_list",
   "not_empty_reservations_list", "reservation", "$@66", "sub_reservation",
   "$@67", "reservation_params", "not_empty_reservation_params",
   "reservation_param", "next_server", "$@68", "server_hostname", "$@69",
@@ -4062,57 +4078,58 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   224,   224,   224,   225,   225,   226,   226,   227,   227,
-     228,   228,   229,   229,   230,   230,   231,   231,   232,   232,
-     233,   233,   234,   234,   242,   243,   244,   245,   246,   247,
-     248,   251,   256,   256,   267,   270,   271,   274,   278,   285,
-     285,   292,   293,   296,   300,   307,   307,   314,   315,   318,
-     322,   333,   343,   343,   355,   356,   360,   361,   362,   363,
-     364,   367,   367,   384,   384,   392,   393,   398,   399,   400,
-     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,   421,   426,
-     431,   436,   441,   446,   452,   452,   462,   463,   466,   467,
-     468,   471,   471,   479,   479,   489,   489,   496,   497,   500,
-     506,   506,   516,   516,   526,   527,   530,   531,   532,   533,
-     534,   535,   536,   537,   538,   539,   540,   541,   542,   545,
-     545,   552,   553,   554,   555,   558,   558,   566,   566,   574,
-     574,   582,   587,   587,   595,   600,   605,   610,   615,   615,
-     623,   623,   632,   632,   642,   643,   646,   647,   648,   649,
-     650,   653,   658,   663,   668,   673,   678,   678,   688,   689,
-     692,   693,   696,   696,   704,   704,   712,   713,   714,   717,
-     718,   721,   721,   729,   729,   737,   737,   747,   748,   751,
-     752,   753,   754,   755,   756,   759,   764,   769,   774,   779,
-     784,   792,   792,   805,   806,   809,   810,   817,   817,   840,
-     840,   849,   850,   854,   855,   856,   857,   858,   859,   860,
-     861,   862,   863,   864,   865,   866,   867,   868,   869,   870,
-     871,   872,   873,   876,   876,   884,   884,   892,   892,   900,
-     900,   908,   908,   916,   916,   924,   924,   932,   932,   939,
-     940,   941,   944,   949,   958,   958,   970,   971,   974,   975,
-     980,   980,   991,   991,  1001,  1002,  1005,  1006,  1009,  1010,
-    1011,  1012,  1013,  1014,  1015,  1016,  1019,  1021,  1026,  1028,
-    1028,  1036,  1036,  1044,  1044,  1052,  1054,  1054,  1062,  1071,
-    1071,  1083,  1084,  1089,  1090,  1095,  1095,  1106,  1106,  1117,
-    1118,  1123,  1124,  1129,  1130,  1131,  1132,  1133,  1134,  1137,
-    1139,  1139,  1147,  1149,  1151,  1159,  1159,  1171,  1172,  1175,
-    1176,  1179,  1179,  1187,  1187,  1195,  1196,  1199,  1200,  1201,
-    1202,  1205,  1205,  1213,  1213,  1223,  1223,  1233,  1234,  1237,
-    1238,  1241,  1241,  1249,  1249,  1257,  1258,  1261,  1262,  1266,
-    1267,  1268,  1269,  1270,  1271,  1272,  1273,  1274,  1275,  1276,
-    1277,  1278,  1281,  1281,  1289,  1289,  1297,  1297,  1305,  1305,
-    1313,  1313,  1321,  1321,  1329,  1329,  1337,  1337,  1345,  1345,
-    1353,  1353,  1361,  1361,  1374,  1374,  1384,  1384,  1395,  1395,
-    1405,  1406,  1409,  1409,  1417,  1418,  1421,  1422,  1425,  1426,
-    1427,  1428,  1429,  1430,  1431,  1434,  1436,  1436,  1448,  1455,
-    1455,  1465,  1466,  1469,  1470,  1473,  1473,  1481,  1481,  1491,
-    1491,  1501,  1501,  1509,  1510,  1513,  1514,  1515,  1516,  1517,
-    1518,  1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,
-    1530,  1535,  1535,  1543,  1543,  1551,  1556,  1556,  1564,  1569,
-    1574,  1574,  1582,  1583,  1586,  1586,  1594,  1599,  1604,  1609,
-    1609,  1617,  1620,  1623,  1626,  1629,  1635,  1635,  1645,  1645,
-    1652,  1652,  1664,  1664,  1677,  1678,  1682,  1686,  1686,  1698,
-    1699,  1703,  1703,  1711,  1712,  1715,  1716,  1717,  1718,  1719,
-    1722,  1727,  1727,  1735,  1735,  1745,  1746,  1749,  1749,  1757,
-    1758,  1761,  1762,  1763,  1764,  1767,  1767,  1775,  1780,  1785
+       0,   225,   225,   225,   226,   226,   227,   227,   228,   228,
+     229,   229,   230,   230,   231,   231,   232,   232,   233,   233,
+     234,   234,   235,   235,   243,   244,   245,   246,   247,   248,
+     249,   252,   257,   257,   268,   271,   272,   275,   279,   286,
+     286,   293,   294,   297,   301,   308,   308,   315,   316,   319,
+     323,   334,   344,   344,   356,   357,   361,   362,   363,   364,
+     365,   368,   368,   385,   385,   393,   394,   399,   400,   401,
+     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
+     412,   413,   414,   415,   416,   417,   418,   419,   422,   427,
+     432,   437,   442,   447,   453,   453,   463,   464,   467,   468,
+     469,   472,   472,   480,   480,   490,   490,   497,   498,   501,
+     507,   507,   517,   517,   527,   528,   531,   532,   533,   534,
+     535,   536,   537,   538,   539,   540,   541,   542,   543,   546,
+     546,   553,   554,   555,   556,   559,   559,   567,   567,   575,
+     575,   583,   588,   588,   596,   601,   606,   611,   616,   616,
+     624,   624,   633,   633,   643,   644,   647,   648,   649,   650,
+     651,   654,   659,   664,   669,   674,   679,   679,   689,   690,
+     693,   694,   697,   697,   705,   705,   713,   714,   715,   718,
+     719,   722,   722,   730,   730,   738,   738,   748,   749,   752,
+     753,   754,   755,   756,   757,   760,   765,   770,   775,   780,
+     785,   793,   793,   806,   807,   810,   811,   818,   818,   841,
+     841,   850,   851,   855,   856,   857,   858,   859,   860,   861,
+     862,   863,   864,   865,   866,   867,   868,   869,   870,   871,
+     872,   873,   874,   877,   877,   885,   885,   893,   893,   901,
+     901,   909,   909,   917,   917,   925,   925,   933,   933,   940,
+     941,   942,   945,   950,   959,   959,   971,   972,   975,   976,
+     981,   981,   992,   992,  1002,  1003,  1006,  1007,  1010,  1011,
+    1012,  1013,  1014,  1015,  1016,  1017,  1020,  1022,  1027,  1029,
+    1029,  1037,  1037,  1045,  1045,  1053,  1055,  1055,  1063,  1072,
+    1072,  1084,  1085,  1090,  1091,  1096,  1096,  1107,  1107,  1118,
+    1119,  1124,  1125,  1130,  1131,  1132,  1133,  1134,  1135,  1136,
+    1139,  1141,  1141,  1149,  1151,  1153,  1158,  1166,  1166,  1178,
+    1179,  1182,  1183,  1186,  1186,  1194,  1194,  1202,  1203,  1206,
+    1207,  1208,  1209,  1212,  1212,  1220,  1220,  1230,  1230,  1240,
+    1241,  1244,  1245,  1248,  1248,  1256,  1256,  1264,  1265,  1268,
+    1269,  1273,  1274,  1275,  1276,  1277,  1278,  1279,  1280,  1281,
+    1282,  1283,  1284,  1285,  1288,  1288,  1296,  1296,  1304,  1304,
+    1312,  1312,  1320,  1320,  1328,  1328,  1336,  1336,  1344,  1344,
+    1352,  1352,  1360,  1360,  1368,  1368,  1381,  1381,  1391,  1391,
+    1402,  1402,  1412,  1413,  1416,  1416,  1424,  1425,  1428,  1429,
+    1432,  1433,  1434,  1435,  1436,  1437,  1438,  1441,  1443,  1443,
+    1455,  1462,  1462,  1472,  1473,  1476,  1477,  1480,  1480,  1488,
+    1488,  1498,  1498,  1508,  1508,  1516,  1517,  1520,  1521,  1522,
+    1523,  1524,  1525,  1526,  1527,  1528,  1529,  1530,  1531,  1532,
+    1533,  1534,  1537,  1542,  1542,  1550,  1550,  1558,  1563,  1563,
+    1571,  1576,  1581,  1581,  1589,  1590,  1593,  1593,  1601,  1606,
+    1611,  1616,  1616,  1624,  1627,  1630,  1633,  1636,  1642,  1642,
+    1652,  1652,  1659,  1659,  1671,  1671,  1684,  1685,  1689,  1693,
+    1693,  1705,  1706,  1710,  1710,  1718,  1719,  1722,  1723,  1724,
+    1725,  1726,  1729,  1734,  1734,  1742,  1742,  1752,  1753,  1756,
+    1756,  1764,  1765,  1768,  1769,  1770,  1771,  1774,  1774,  1782,
+    1787,  1792
   };
 
   // Print the state stack on the debug stream.
@@ -4147,8 +4164,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4151 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1790 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4168 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1797 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 7385e789920b8c4898617e3633c4c7ff26b034fc..935ee7ffa8d15762c39a9a1bb968928b0c1d015c 100644 (file)
@@ -40,7 +40,7 @@
 #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
 # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
 // //                    "%code requires" blocks.
-#line 17 "dhcp4_parser.yy" // lalr1.cc:377
+#line 17 "dhcp4_parser.yy" // lalr1.cc:392
 
 #include <string>
 #include <cc/data.h>
@@ -52,7 +52,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 56 "dhcp4_parser.h" // lalr1.cc:377
+#line 56 "dhcp4_parser.h" // lalr1.cc:392
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -135,9 +135,9 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER4_DEBUG */
 
-#line 14 "dhcp4_parser.yy" // lalr1.cc:377
+#line 14 "dhcp4_parser.yy" // lalr1.cc:392
 namespace isc { namespace dhcp {
-#line 141 "dhcp4_parser.h" // lalr1.cc:377
+#line 141 "dhcp4_parser.h" // lalr1.cc:392
 
 
 
@@ -398,95 +398,96 @@ namespace isc { namespace dhcp {
         TOKEN_CODE = 306,
         TOKEN_SPACE = 307,
         TOKEN_CSV_FORMAT = 308,
-        TOKEN_RECORD_TYPES = 309,
-        TOKEN_ENCAPSULATE = 310,
-        TOKEN_ARRAY = 311,
-        TOKEN_POOLS = 312,
-        TOKEN_POOL = 313,
-        TOKEN_USER_CONTEXT = 314,
-        TOKEN_SUBNET = 315,
-        TOKEN_INTERFACE = 316,
-        TOKEN_INTERFACE_ID = 317,
-        TOKEN_ID = 318,
-        TOKEN_RAPID_COMMIT = 319,
-        TOKEN_RESERVATION_MODE = 320,
-        TOKEN_DISABLED = 321,
-        TOKEN_OUT_OF_POOL = 322,
-        TOKEN_ALL = 323,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 324,
-        TOKEN_CLIENT_CLASSES = 325,
-        TOKEN_TEST = 326,
-        TOKEN_CLIENT_CLASS = 327,
-        TOKEN_RESERVATIONS = 328,
-        TOKEN_DUID = 329,
-        TOKEN_HW_ADDRESS = 330,
-        TOKEN_CIRCUIT_ID = 331,
-        TOKEN_CLIENT_ID = 332,
-        TOKEN_HOSTNAME = 333,
-        TOKEN_FLEX_ID = 334,
-        TOKEN_RELAY = 335,
-        TOKEN_IP_ADDRESS = 336,
-        TOKEN_HOOKS_LIBRARIES = 337,
-        TOKEN_LIBRARY = 338,
-        TOKEN_PARAMETERS = 339,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 340,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 341,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 342,
-        TOKEN_HOLD_RECLAIMED_TIME = 343,
-        TOKEN_MAX_RECLAIM_LEASES = 344,
-        TOKEN_MAX_RECLAIM_TIME = 345,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 346,
-        TOKEN_DHCP4O6_PORT = 347,
-        TOKEN_CONTROL_SOCKET = 348,
-        TOKEN_SOCKET_TYPE = 349,
-        TOKEN_SOCKET_NAME = 350,
-        TOKEN_DHCP_DDNS = 351,
-        TOKEN_ENABLE_UPDATES = 352,
-        TOKEN_QUALIFYING_SUFFIX = 353,
-        TOKEN_SERVER_IP = 354,
-        TOKEN_SERVER_PORT = 355,
-        TOKEN_SENDER_IP = 356,
-        TOKEN_SENDER_PORT = 357,
-        TOKEN_MAX_QUEUE_SIZE = 358,
-        TOKEN_NCR_PROTOCOL = 359,
-        TOKEN_NCR_FORMAT = 360,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 361,
-        TOKEN_OVERRIDE_NO_UPDATE = 362,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 363,
-        TOKEN_REPLACE_CLIENT_NAME = 364,
-        TOKEN_GENERATED_PREFIX = 365,
-        TOKEN_TCP = 366,
-        TOKEN_JSON = 367,
-        TOKEN_WHEN_PRESENT = 368,
-        TOKEN_NEVER = 369,
-        TOKEN_ALWAYS = 370,
-        TOKEN_WHEN_NOT_PRESENT = 371,
-        TOKEN_LOGGING = 372,
-        TOKEN_LOGGERS = 373,
-        TOKEN_OUTPUT_OPTIONS = 374,
-        TOKEN_OUTPUT = 375,
-        TOKEN_DEBUGLEVEL = 376,
-        TOKEN_SEVERITY = 377,
-        TOKEN_FLUSH = 378,
-        TOKEN_MAXSIZE = 379,
-        TOKEN_MAXVER = 380,
-        TOKEN_DHCP6 = 381,
-        TOKEN_DHCPDDNS = 382,
-        TOKEN_TOPLEVEL_JSON = 383,
-        TOKEN_TOPLEVEL_DHCP4 = 384,
-        TOKEN_SUB_DHCP4 = 385,
-        TOKEN_SUB_INTERFACES4 = 386,
-        TOKEN_SUB_SUBNET4 = 387,
-        TOKEN_SUB_POOL4 = 388,
-        TOKEN_SUB_RESERVATION = 389,
-        TOKEN_SUB_OPTION_DEF = 390,
-        TOKEN_SUB_OPTION_DATA = 391,
-        TOKEN_SUB_HOOKS_LIBRARY = 392,
-        TOKEN_SUB_DHCP_DDNS = 393,
-        TOKEN_STRING = 394,
-        TOKEN_INTEGER = 395,
-        TOKEN_FLOAT = 396,
-        TOKEN_BOOLEAN = 397
+        TOKEN_PERSISTENT = 309,
+        TOKEN_RECORD_TYPES = 310,
+        TOKEN_ENCAPSULATE = 311,
+        TOKEN_ARRAY = 312,
+        TOKEN_POOLS = 313,
+        TOKEN_POOL = 314,
+        TOKEN_USER_CONTEXT = 315,
+        TOKEN_SUBNET = 316,
+        TOKEN_INTERFACE = 317,
+        TOKEN_INTERFACE_ID = 318,
+        TOKEN_ID = 319,
+        TOKEN_RAPID_COMMIT = 320,
+        TOKEN_RESERVATION_MODE = 321,
+        TOKEN_DISABLED = 322,
+        TOKEN_OUT_OF_POOL = 323,
+        TOKEN_ALL = 324,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 325,
+        TOKEN_CLIENT_CLASSES = 326,
+        TOKEN_TEST = 327,
+        TOKEN_CLIENT_CLASS = 328,
+        TOKEN_RESERVATIONS = 329,
+        TOKEN_DUID = 330,
+        TOKEN_HW_ADDRESS = 331,
+        TOKEN_CIRCUIT_ID = 332,
+        TOKEN_CLIENT_ID = 333,
+        TOKEN_HOSTNAME = 334,
+        TOKEN_FLEX_ID = 335,
+        TOKEN_RELAY = 336,
+        TOKEN_IP_ADDRESS = 337,
+        TOKEN_HOOKS_LIBRARIES = 338,
+        TOKEN_LIBRARY = 339,
+        TOKEN_PARAMETERS = 340,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 341,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 342,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 343,
+        TOKEN_HOLD_RECLAIMED_TIME = 344,
+        TOKEN_MAX_RECLAIM_LEASES = 345,
+        TOKEN_MAX_RECLAIM_TIME = 346,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 347,
+        TOKEN_DHCP4O6_PORT = 348,
+        TOKEN_CONTROL_SOCKET = 349,
+        TOKEN_SOCKET_TYPE = 350,
+        TOKEN_SOCKET_NAME = 351,
+        TOKEN_DHCP_DDNS = 352,
+        TOKEN_ENABLE_UPDATES = 353,
+        TOKEN_QUALIFYING_SUFFIX = 354,
+        TOKEN_SERVER_IP = 355,
+        TOKEN_SERVER_PORT = 356,
+        TOKEN_SENDER_IP = 357,
+        TOKEN_SENDER_PORT = 358,
+        TOKEN_MAX_QUEUE_SIZE = 359,
+        TOKEN_NCR_PROTOCOL = 360,
+        TOKEN_NCR_FORMAT = 361,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 362,
+        TOKEN_OVERRIDE_NO_UPDATE = 363,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 364,
+        TOKEN_REPLACE_CLIENT_NAME = 365,
+        TOKEN_GENERATED_PREFIX = 366,
+        TOKEN_TCP = 367,
+        TOKEN_JSON = 368,
+        TOKEN_WHEN_PRESENT = 369,
+        TOKEN_NEVER = 370,
+        TOKEN_ALWAYS = 371,
+        TOKEN_WHEN_NOT_PRESENT = 372,
+        TOKEN_LOGGING = 373,
+        TOKEN_LOGGERS = 374,
+        TOKEN_OUTPUT_OPTIONS = 375,
+        TOKEN_OUTPUT = 376,
+        TOKEN_DEBUGLEVEL = 377,
+        TOKEN_SEVERITY = 378,
+        TOKEN_FLUSH = 379,
+        TOKEN_MAXSIZE = 380,
+        TOKEN_MAXVER = 381,
+        TOKEN_DHCP6 = 382,
+        TOKEN_DHCPDDNS = 383,
+        TOKEN_TOPLEVEL_JSON = 384,
+        TOKEN_TOPLEVEL_DHCP4 = 385,
+        TOKEN_SUB_DHCP4 = 386,
+        TOKEN_SUB_INTERFACES4 = 387,
+        TOKEN_SUB_SUBNET4 = 388,
+        TOKEN_SUB_POOL4 = 389,
+        TOKEN_SUB_RESERVATION = 390,
+        TOKEN_SUB_OPTION_DEF = 391,
+        TOKEN_SUB_OPTION_DATA = 392,
+        TOKEN_SUB_HOOKS_LIBRARY = 393,
+        TOKEN_SUB_DHCP_DDNS = 394,
+        TOKEN_STRING = 395,
+        TOKEN_INTEGER = 396,
+        TOKEN_FLOAT = 397,
+        TOKEN_BOOLEAN = 398
       };
     };
 
@@ -809,6 +810,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_CSV_FORMAT (const location_type& l);
 
+    static inline
+    symbol_type
+    make_PERSISTENT (const location_type& l);
+
     static inline
     symbol_type
     make_RECORD_TYPES (const location_type& l);
@@ -1370,12 +1375,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 743,     ///< Last index in yytable_.
-      yynnts_ = 315,  ///< Number of nonterminal symbols.
+      yylast_ = 751,     ///< Last index in yytable_.
+      yynnts_ = 316,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 143  ///< Number of tokens.
+      yyntokens_ = 144  ///< Number of tokens.
     };
 
 
@@ -1431,9 +1436,9 @@ namespace isc { namespace dhcp {
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142
+     135,   136,   137,   138,   139,   140,   141,   142,   143
     };
-    const unsigned int user_token_number_max_ = 397;
+    const unsigned int user_token_number_max_ = 398;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1466,29 +1471,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1509,29 +1514,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1611,29 +1616,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1660,29 +1665,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 419: // ncr_protocol_value
+      case 427: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1755,7 +1760,7 @@ namespace isc { namespace dhcp {
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397
+     395,   396,   397,   398
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2072,6 +2077,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_CSV_FORMAT, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PERSISTENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PERSISTENT, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_RECORD_TYPES (const location_type& l)
   {
@@ -2607,9 +2618,9 @@ namespace isc { namespace dhcp {
   }
 
 
-#line 14 "dhcp4_parser.yy" // lalr1.cc:377
+#line 14 "dhcp4_parser.yy" // lalr1.cc:392
 } } // isc::dhcp
-#line 2613 "dhcp4_parser.h" // lalr1.cc:377
+#line 2624 "dhcp4_parser.h" // lalr1.cc:392
 
 
 
index becb35a9563a69bb961f1e58830db7e6f53677a9..4eb767032a80401480b923e6962f101567658a1e 100644 (file)
@@ -96,6 +96,7 @@ using namespace std;
   CODE "code"
   SPACE "space"
   CSV_FORMAT "csv-format"
+  PERSISTENT "persistent"
   RECORD_TYPES "record-types"
   ENCAPSULATE "encapsulate"
   ARRAY "array"
@@ -1131,6 +1132,7 @@ option_data_param: option_data_name
                  | option_data_code
                  | option_data_space
                  | option_data_csv_format
+                 | option_data_persistent
                  | unknown_map_entry
                  ;
 
@@ -1153,6 +1155,11 @@ option_data_csv_format: CSV_FORMAT COLON BOOLEAN {
     ctx.stack_.back()->set("csv-format", space);
 };
 
+option_data_persistent: PERSISTENT COLON BOOLEAN {
+    ElementPtr persist(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("persistent", persist);
+};
+
 // ---- pools ------------------------------------
 
 // This defines the "pools": [ ... ] entry that may appear in subnet4.
index 9dfec3f14f71238fa3b01e663e054076e8e009bd..4db3c7b86a29f7c15b8362c97fd3ff5386d7ba82 100644 (file)
@@ -45,7 +45,8 @@ const SimpleDefaults SimpleParser4::OPTION4_DEF_DEFAULTS = {
 /// for those option-data declarations.
 const SimpleDefaults SimpleParser4::OPTION4_DEFAULTS = {
     { "space",        Element::string,  "dhcp4"},
-    { "csv-format",   Element::boolean, "true"}
+    { "csv-format",   Element::boolean, "true"},
+    { "persistent",   Element::boolean, "false"}
 };
 
 /// @brief This table defines default global values for DHCPv4
index c66cdbf2ca52fc908b9dd847131963fcb241e717..b09979e1db73e2fe60d36a7c64e0882cdea561e6 100644 (file)
@@ -3264,6 +3264,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"ABCDEF0105\",\n"
 "                \"name\": \"dhcp-message\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp4\"\n"
 "            },\n"
 "            {\n"
@@ -3271,6 +3272,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"01\",\n"
 "                \"name\": \"default-ip-ttl\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp4\"\n"
 "            }\n"
 "        ],\n"
@@ -3358,6 +3360,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"ABCDEF0105\",\n"
 "                        \"name\": \"dhcp-message\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp4\"\n"
 "                    },\n"
 "                    {\n"
@@ -3365,6 +3368,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"01\",\n"
 "                        \"name\": \"default-ip-ttl\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp4\"\n"
 "                    }\n"
 "                ],\n"
@@ -3430,6 +3434,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"ABCDEF0105\",\n"
 "                \"name\": \"dhcp-message\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp4\"\n"
 "            },\n"
 "            {\n"
@@ -3437,6 +3442,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            }\n"
 "        ],\n"
@@ -3523,6 +3529,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            },\n"
 "            {\n"
@@ -3530,6 +3537,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"192.168.2.1\",\n"
 "                \"name\": \"foo2\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            }\n"
 "        ],\n"
@@ -3599,6 +3607,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"11\",\n"
 "                \"name\": \"base-option\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp4\"\n"
 "            },\n"
 "            {\n"
@@ -3606,6 +3615,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            },\n"
 "            {\n"
@@ -3613,6 +3623,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"192.168.2.1\",\n"
 "                \"name\": \"foo2\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            }\n"
 "        ],\n"
@@ -3717,6 +3728,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"AB\",\n"
 "                \"name\": \"dhcp-message\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp4\"\n"
 "            }\n"
 "        ],\n"
@@ -3736,6 +3748,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"ABCDEF0105\",\n"
 "                        \"name\": \"dhcp-message\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp4\"\n"
 "                    },\n"
 "                    {\n"
@@ -3743,6 +3756,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"01\",\n"
 "                        \"name\": \"default-ip-ttl\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp4\"\n"
 "                    }\n"
 "                ],\n"
@@ -3819,6 +3833,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"0102030405060708090A\",\n"
 "                        \"name\": \"dhcp-message\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp4\"\n"
 "                    }\n"
 "                ],\n"
@@ -3852,6 +3867,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"FF\",\n"
 "                        \"name\": \"default-ip-ttl\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp4\"\n"
 "                    }\n"
 "                ],\n"
@@ -3931,6 +3947,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"ABCDEF0105\",\n"
 "                                \"name\": \"dhcp-message\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            },\n"
 "                            {\n"
@@ -3938,6 +3955,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"01\",\n"
 "                                \"name\": \"default-ip-ttl\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4014,6 +4032,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"ABCDEF0105\",\n"
 "                                \"name\": \"dhcp-message\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4026,6 +4045,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"01\",\n"
 "                                \"name\": \"default-ip-ttl\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4088,6 +4108,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-encapsulated-options-space\"\n"
 "            },\n"
 "            {\n"
@@ -4095,6 +4116,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"192.168.2.1\",\n"
 "                \"name\": \"foo2\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-encapsulated-options-space\"\n"
 "            }\n"
 "        ],\n"
@@ -4164,6 +4186,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"0104000004D20204C0A80201\",\n"
 "                \"name\": \"vendor-encapsulated-options\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp4\"\n"
 "            },\n"
 "            {\n"
@@ -4171,6 +4194,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-encapsulated-options-space\"\n"
 "            },\n"
 "            {\n"
@@ -4178,6 +4202,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"192.168.2.1\",\n"
 "                \"name\": \"foo2\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-encapsulated-options-space\"\n"
 "            }\n"
 "        ],\n"
@@ -4272,12 +4297,14 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"code\": 100,\n"
 "                \"csv-format\": false,\n"
 "                \"data\": \"1234\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-1234\"\n"
 "            },\n"
 "            {\n"
 "                \"code\": 100,\n"
 "                \"csv-format\": false,\n"
 "                \"data\": \"ABCDEF0105\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-4491\"\n"
 "            }\n"
 "        ],\n"
@@ -4354,6 +4381,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"this is a string vendor-opt\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-4491\"\n"
 "            }\n"
 "        ],\n"
@@ -4717,6 +4745,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"192.0.3.95\",\n"
 "                                \"name\": \"name-servers\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            },\n"
 "                            {\n"
@@ -4724,6 +4753,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"11\",\n"
 "                                \"name\": \"default-ip-ttl\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4742,6 +4772,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"192.0.3.15\",\n"
 "                                \"name\": \"name-servers\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            },\n"
 "                            {\n"
@@ -4749,6 +4780,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"32\",\n"
 "                                \"name\": \"default-ip-ttl\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4813,6 +4845,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"192.0.4.11\",\n"
 "                                \"name\": \"name-servers\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            },\n"
 "                            {\n"
@@ -4820,6 +4853,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"95\",\n"
 "                                \"name\": \"default-ip-ttl\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp4\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4917,6 +4951,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"123\",\n"
 "                                \"name\": \"foo\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"isc\"\n"
 "                            }\n"
 "                        ],\n"
index dc3e99042abca7ce5f7c653286e0738c5cd81c6e..98f4d9d17d0897887a2d079acb980bc57fc8ad8f 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 158
-#define YY_END_OF_BUFFER 159
+#define YY_NUM_RULES 159
+#define YY_END_OF_BUFFER 160
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,144 +700,144 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1232] =
+static const flex_int16_t yy_accept[1236] =
     {   0,
-      151,  151,    0,    0,    0,    0,    0,    0,    0,    0,
-      159,  157,   10,   11,  157,    1,  151,  148,  151,  151,
-      157,  150,  149,  157,  157,  157,  157,  157,  144,  145,
-      157,  157,  157,  146,  147,    5,    5,    5,  157,  157,
-      157,   10,   11,    0,    0,  140,    0,    0,    0,    0,
+      152,  152,    0,    0,    0,    0,    0,    0,    0,    0,
+      160,  158,   10,   11,  158,    1,  152,  149,  152,  152,
+      158,  151,  150,  158,  158,  158,  158,  158,  145,  146,
+      158,  158,  158,  147,  148,    5,    5,    5,  158,  158,
+      158,   10,   11,    0,    0,  141,    0,    0,    0,    0,
         0,    0,    0,    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,  151,  151,
-        0,  150,  151,    3,    2,    6,    0,  151,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  141,
+        0,    0,    0,    0,    0,    0,    0,    1,  152,  152,
+        0,  151,  152,    3,    2,    6,    0,  152,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  142,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  143,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  144,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    2,
         0,    0,    0,    0,    0,    0,    0,    8,    0,    0,
-        0,  120,    0,    0,  121,    0,    0,    0,    0,    0,
-        0,    0,    0,  142,    0,    0,    0,    0,    0,    0,
+        0,  121,    0,    0,  122,    0,    0,    0,    0,    0,
+        0,    0,    0,  143,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  156,  154,    0,  153,  152,    0,    0,
-        0,    0,    0,    0,  119,    0,    0,   27,    0,   26,
-        0,    0,   84,    0,    0,    0,    0,    0,    0,   46,
+        0,    0,    0,  157,  155,    0,  154,  153,    0,    0,
+        0,    0,    0,    0,  120,    0,    0,   27,    0,   26,
+        0,    0,   85,    0,    0,    0,    0,    0,    0,   46,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   82,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   83,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  155,  152,    0,    0,    0,    0,    0,
+        0,    0,    0,  156,  153,    0,    0,    0,    0,    0,
         0,    0,   28,    0,    0,   30,    0,    0,    0,    0,
-        0,   85,    0,    0,    0,    0,   65,    0,    0,    0,
+        0,   86,    0,    0,    0,    0,   65,    0,    0,    0,
 
-        0,    0,    0,  104,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  105,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,   49,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   64,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   73,    0,   50,    0,
+        0,    0,    0,    0,    0,    0,   74,    0,   50,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
-      124,   42,    0,   47,    0,    0,    0,    0,    0,  138,
-       35,    0,   32,    0,   31,    0,    0,    0,  112,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  101,
+      125,   42,    0,   47,    0,    0,    0,    0,    0,  139,
+       35,    0,   32,    0,   31,    0,    0,    0,  113,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   93,    0,    0,    0,
-        0,    0,    0,    0,  123,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   94,    0,    0,    0,
+        0,    0,    0,    0,  124,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        44,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  113,    0,    0,    0,    0,    0,    0,    0,
-        0,  108,    0,    0,    0,    0,    7,   33,    0,    0,
+        0,   67,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  114,    0,    0,    0,    0,    0,    0,    0,
+        0,  109,    0,    0,    0,    0,    7,   33,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       95,    0,    0,    0,    0,    0,   92,    0,    0,    0,
-        0,    0,    0,    0,    0,   68,    0,    0,    0,    0,
+       96,    0,    0,    0,    0,    0,   93,    0,    0,    0,
+        0,    0,    0,    0,    0,   69,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   75,    0,    0,    0,    0,    0,   89,
+        0,    0,    0,   76,    0,    0,    0,    0,    0,   90,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  107,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  108,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  117,   90,    0,    0,    0,   94,
+        0,    0,    0,    0,  118,   91,    0,    0,    0,   95,
        43,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
        51,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   61,    0,    0,    0,  139,    0,    0,
+        0,    0,    0,    0,   61,    0,    0,    0,  140,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   81,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  106,    0,    0,    0,    0,    0,   54,    0,
+        0,    0,   82,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  107,    0,    0,    0,    0,    0,   54,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   48,   67,    0,    0,    0,  103,    0,    0,
-        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   97,    0,    0,    0,    0,    0,
+        0,    0,    0,   48,   68,    0,    0,    0,    0,  104,
+        0,    0,    0,   41,    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,
-        0,  137,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   76,    0,    0,    0,
+        0,    0,    0,  138,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   77,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   38,
-        0,    0,    0,    0,    0,    0,    0,   16,    0,  118,
-       14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  109,   96,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      105,  122,    0,   37,    0,  114,    0,    0,    0,    0,
+        0,    0,   38,    0,    0,    0,    0,    0,    0,    0,
+       16,    0,  119,   14,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  110,   97,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  106,  123,    0,   37,    0,  115,    0,
 
-        0,    0,   20,    0,    0,   62,    0,    0,    0,    0,
-      116,   45,    0,   69,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   20,    0,    0,   62,    0,
+        0,    0,    0,  117,   66,   45,    0,   70,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  112,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  111,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   86,    0,    0,    0,
-       63,   83,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   58,    0,    0,    0,   17,   15,  136,  135,
-        0,    0,    0,    0,   29,    0,   99,    0,    0,    0,
-        0,    0,    0,  133,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,   77,    0,  102,    0,   52,    0,
-        0,    0,   19,    0,    0,    0,    0,    0,   79,   59,
-        0,  110,    0,    0,    0,  101,    0,   74,    0,    0,
-        0,    0,    0,    0,    0,    0,   72,    0,  125,    0,
+       87,    0,    0,    0,   63,   84,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   58,    0,    0,    0,
+       17,   15,  137,  136,    0,    0,    0,    0,   29,    0,
+      100,    0,    0,    0,    0,    0,    0,  134,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   78,    0,
+      103,    0,   52,    0,    0,    0,   19,    0,    0,    0,
+        0,    0,   80,   59,    0,  111,    0,    0,    0,  102,
+        0,   75,    0,    0,    0,    0,    0,    0,    0,    0,
+       73,    0,  126,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
+        0,   55,  135,    0,   12,    0,    0,    0,    0,    0,
+        0,    0,   40,    0,   39,   18,    0,    0,   92,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   57,    0,
+
+        0,   53,    0,   71,    0,    0,    0,    0,    0,  116,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   98,    0,   55,  134,    0,
-       12,    0,    0,    0,    0,    0,    0,    0,   40,    0,
-       39,   18,    0,    0,   91,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   57,    0,    0,   53,    0,   70,
-
-        0,    0,    0,    0,    0,  115,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
-        0,    0,    0,    0,    0,   25,    0,    0,    0,    0,
-      131,    0,    0,    0,    0,    0,    0,    0,   80,    0,
-        0,    0,    0,    0,    0,    0,    0,   36,    0,    0,
-        0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  130,    0,   22,   56,    0,    0,
-        0,    0,   21,    0,   71,    0,    0,  129,    0,    0,
-        0,    0,   24,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   34,    0,    0,    0,    0,    0,   25,
+        0,    0,    0,    0,  132,    0,    0,    0,    0,    0,
+        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
+        0,   36,    0,    0,    0,    0,   13,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  131,    0,
+       22,   56,    0,    0,    0,    0,   21,    0,   72,    0,
+        0,  130,    0,    0,    0,    0,   24,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,   23,    0,   87,    0,    0,    0,
-        0,    0,  127,  132,   60,    0,    0,    0,  126,    0,
-        0,    0,    0,    0,    0,    0,   88,    0,    0,  128,
-        0
+        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
+       88,    0,    0,    0,    0,    0,  128,  133,   60,    0,
+        0,    0,  127,    0,    0,    0,    0,    0,    0,    0,
+       89,    0,    0,  129,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -884,296 +884,296 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1244] =
+static const flex_int16_t yy_base[1248] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1594, 1595,   32, 1590,  141,    0,  201, 1595,  206,   88,
-       11,  213, 1595, 1572,  114,   25,    2,    6, 1595, 1595,
-       73,   11,   17, 1595, 1595, 1595,  104, 1578, 1533,    0,
-     1570,  107, 1585,  217,  241, 1595,  185, 1536, 1556,   93,
+     1598, 1599,   32, 1594,  141,    0,  201, 1599,  206,   88,
+       11,  213, 1599, 1576,  114,   25,    2,    6, 1599, 1599,
+       73,   11,   17, 1599, 1599, 1599,  104, 1582, 1537,    0,
+     1574,  107, 1589,  217,  241, 1599,  185, 1540, 1560,   93,
        58,  190,   91,  211,  200,   14,  267,  213,  175,  269,
-       64,  220, 1537,  187,   75, 1536,  274,  188,  238,  270,
-      292, 1519,  195,  279,  318,  301, 1538,    0,  330,  357,
-      345,  369,  373, 1595,    0, 1595,  295,  360,  223,  226,
-      278,  336,  338,  313, 1595, 1535, 1574, 1595,  277, 1595,
-
-      384,  314, 1533, 1572,  363,  337,  393, 1527,  359,  368,
-      366,  372,  378, 1570,    0,  435,  368, 1514, 1522,  300,
-     1518, 1507, 1508,  364, 1524, 1507, 1516,  369,  200,  372,
-     1510,  380, 1498, 1554,  395, 1501, 1552, 1494, 1517, 1514,
-     1514, 1508,  370, 1501, 1494, 1499, 1493, 1504, 1489, 1488,
-     1502,  346, 1538, 1487,  404, 1499, 1502, 1486,  441,  406,
-     1498, 1499, 1497, 1479, 1484, 1480, 1472, 1489, 1481,    0,
-      377,  385,  421,  410,  435,  428, 1480, 1595,    0,  433,
-     1475, 1595,  439,  438, 1595, 1527, 1482,  430, 1525,  445,
-     1524,  445, 1523, 1595,  490, 1522,  453, 1483, 1478, 1477,
-
-      431, 1518, 1512, 1478, 1457, 1465, 1471, 1459, 1473, 1469,
-     1470, 1470, 1465, 1457, 1459, 1443, 1447, 1460, 1460, 1452,
-     1442, 1445, 1459, 1595, 1445, 1453, 1456, 1437, 1436, 1486,
-     1435, 1445, 1483,  478, 1444, 1432, 1443, 1479, 1483, 1436,
-        9, 1426, 1442, 1423, 1425, 1421, 1427, 1418, 1417, 1430,
-     1423, 1425, 1429, 1428, 1422,   80, 1429, 1424, 1416, 1422,
-     1422, 1403, 1419, 1412, 1419, 1407, 1400, 1414, 1413, 1416,
-     1398, 1406,  474, 1595, 1595,  482, 1595, 1595, 1393,    0,
-      452,  493,  485, 1450, 1595, 1403,  485, 1595, 1448, 1595,
-     1442,  533, 1595,  453, 1384, 1394, 1444, 1401,  480, 1595,
-
-     1399, 1441, 1396, 1393, 1394,  508, 1398, 1436, 1386, 1381,
-     1378, 1374, 1376, 1425, 1384, 1373, 1422, 1370,  539, 1383,
-     1383, 1366, 1367, 1380, 1367, 1377, 1372, 1379, 1374, 1359,
-      465, 1368, 1371, 1366, 1362, 1410,  363, 1595, 1357, 1356,
-     1349, 1351, 1355, 1344, 1351, 1356,  521, 1401, 1356,  480,
-     1353, 1357, 1355, 1344, 1344, 1356, 1338, 1330, 1331, 1352,
-     1334, 1346, 1345, 1331, 1343, 1342, 1341, 1382, 1381, 1380,
-     1324,  554, 1337, 1595, 1595, 1336,    0,  508, 1376, 1375,
-     1333, 1373, 1595, 1321, 1371, 1595,  531,  588,  510, 1370,
-     1312, 1595, 1328, 1327, 1314, 1313, 1595, 1315, 1312, 1324,
-
-     1320, 1308, 1310, 1595, 1316, 1301, 1303, 1314, 1312, 1307,
-      556, 1314, 1296, 1345, 1595, 1294, 1310, 1342, 1346, 1304,
-     1298, 1300, 1301, 1303, 1335, 1288, 1283, 1282, 1284, 1277,
-     1292, 1270, 1277, 1282, 1330, 1595, 1277, 1273, 1276, 1283,
-     1268, 1278, 1281, 1270, 1269, 1264, 1595, 1319, 1595, 1263,
-     1262, 1255, 1272, 1309, 1256, 1261, 1270, 1264, 1268,  558,
-     1303, 1267, 1247, 1250, 1249, 1257, 1245, 1301, 1243, 1595,
-     1595, 1595, 1248, 1595, 1258, 1292, 1254,    0, 1295, 1595,
-     1595, 1243, 1595, 1249, 1595,  535,  538,  562, 1595, 1287,
-     1234, 1233, 1240, 1233, 1245, 1244, 1228, 1243, 1273, 1240,
-
-     1276, 1222, 1224, 1236, 1236, 1235, 1595, 1220, 1217, 1231,
-     1223, 1229, 1220, 1228, 1595, 1213, 1224, 1228, 1210, 1224,
-     1222, 1205, 1199, 1204, 1201, 1216, 1217, 1214, 1255, 1212,
-     1595, 1198, 1200, 1246, 1245,  546, 1208, 1191, 1192, 1197,
-     1188, 1595, 1202, 1188,  580, 1180, 1201, 1198, 1190, 1233,
-     1187, 1231, 1595, 1179, 1177, 1191, 1194, 1226, 1225, 1172,
-     1223, 1595,  568, 1185, 1174, 1176, 1595, 1595, 1168, 1223,
-      552,  528, 1176, 1181, 1215, 1214, 1213, 1167, 1157, 1210,
-     1172, 1162, 1207, 1170, 1152, 1160, 1162, 1166, 1201, 1205,
-     1162, 1161, 1162, 1155, 1144, 1157, 1160, 1155, 1150, 1155,
-
-     1152, 1151, 1154, 1149, 1190, 1189, 1133, 1129, 1137, 1185,
-     1595, 1184, 1133, 1125, 1140, 1127, 1595, 1127, 1136, 1135,
-     1135, 1119, 1174, 1117, 1130, 1595, 1122, 1114, 1123, 1116,
-     1127, 1104, 1108, 1159, 1106, 1104, 1115, 1155, 1102,  533,
-      546, 1096,  537, 1595, 1157, 1115, 1104, 1108, 1153, 1595,
-     1147,  561, 1100, 1101, 1092, 1095, 1091, 1108, 1103, 1091,
-     1102, 1086, 1088, 1140, 1086, 1100, 1081, 1131, 1086, 1595,
-     1094, 1092, 1083, 1092, 1088, 1129, 1071, 1071, 1084, 1083,
-     1068, 1123, 1065, 1066, 1595, 1595, 1080, 1077, 1080, 1595,
-     1595, 1079, 1064,  572, 1063, 1061, 1108, 1057, 1111, 1110,
-
-     1595, 1055, 1067, 1065, 1106, 1054, 1054, 1046, 1102, 1055,
-     1043, 1037, 1045, 1047, 1056, 1049, 1041, 1041,  559, 1040,
-     1091, 1052,   56, 1595,  115,  188,  211, 1595,  565,  582,
-      269,  318,  477,  473,  493,  512,  553,  556,  608,  615,
-      564, 1595,  578,  563,  579,  570,  583,  583,  628,  596,
-      580,  581, 1595,  599,  582,  584,  640,  585, 1595,  604,
-      584,  602,  641,  601,  591,  609,  593,  608,  600,  596,
-      614,  599, 1595, 1595,  607,  652,  607, 1595,  615,  610,
-      661, 1595,  612,  617,  611,  613,  625,  619,  617,  670,
-      616,  672,  673,  619, 1595,  625,  623,  622,  636,  637,
-
-      653,  658,  632,  627,  634,  639,  646,  687,  688,  637,
-      641, 1595,  636,  654,  651,  689,  640,  659,  660,  646,
-      654,  663,  643,  664,  704,  705, 1595,  660,  707,  710,
-      672,  675,  658,  659,  666,  717,  666,  681,  720,  672,
-      676,  674,  672,  725,  726,  678,  728,  724,  684, 1595,
-      689,  682,  691,  685,  680,  690,  686, 1595,  681, 1595,
-     1595,  682,  698,  699,  700,  682,  687,  726,  717,  689,
-      692,  707,  699,  703, 1595, 1595,  714,  712,  698,  699,
-      757,  712,  717,  704,  715,  707,  713,  709,  727,  728,
-     1595, 1595,  726, 1595,  729, 1595,  714,  733,  723,  773,
-
-      729,  771, 1595,  728,  778, 1595,  779,  728,  735,  777,
-     1595, 1595,  737, 1595,  728,  728,  731,  745,  732,  743,
-      790,  749,  787,  793,  794,  795,  796,  757,  741,  753,
-      772,  801,  761,  803,  752,  748,  764,  769,  757,  809,
-      768, 1595,  770,  769,  771,  764,  773,  774,  771,  761,
-      763,  820,  769,  822,  767,  824, 1595,  762,  777,  827,
-     1595, 1595,  778,  788,  773,  789,  775,  835,  836,  782,
-      838,  797, 1595,  789,  791,  842, 1595, 1595, 1595, 1595,
-      795,  846,  797,  829, 1595,  807, 1595,  794,  793,  796,
-      796,  797,  855, 1595,  800,  857,  812,  803,  818,  818,
-
-      821,  821,  818,  823, 1595,  815, 1595,  825, 1595,  826,
-      827,  824, 1595,  816,  822,  821,  833,  833, 1595, 1595,
-      872, 1595,  837,  822,  828, 1595,  843, 1595,  840,  859,
-      879,  885,  829,  887,  888,  843, 1595,  890, 1595,  830,
-      887,  852,  848,  890,  840,  845,  898,  856,  900,  901,
-      864,  853,  904,  848,  865,  850,  865,  849,  906,  907,
-      872,  868,  915,  887,  874, 1595,  918, 1595, 1595,  867,
-     1595,  920,  868,  917,  862,  867,  926,  876, 1595,  882,
-     1595, 1595,  873,  888, 1595,  926,  894,  887,  888,  897,
-      884,  886,  896,  889, 1595,  940,  887, 1595,  891, 1595,
-
-      894,  890,  889,  947,  902, 1595,  944,  906,  909,  952,
-      895,  897,  905,  895,  911,  905,  921,  960,  956, 1595,
-      921,  958,  922,  913,  920, 1595,  917,  922,  969,  914,
-     1595,  918,  930,  931,  974,  918,  919,  927, 1595,  938,
-      928,  927,  930,  942,  933,  942,  944, 1595,  986,  946,
-      988,  989, 1595,  985,  945,  950,  931,  994,  953,  996,
-      955,  956,  999,  958, 1595,  963, 1595, 1595,  945,  951,
-     1004,  965, 1595,  951, 1595,  951,  953, 1595,  958,  953,
-      965,  961, 1595,  964,  968,  959, 1011,  960,  976,  969,
-      964,  979,  970,  977,  964,  979, 1026,  985, 1028,  973,
-
-      989,  980,  994,  990, 1595, 1034, 1595, 1035, 1036,  993,
-      992,  993, 1595, 1595, 1595, 1040,  984, 1000, 1595, 1038,
-      989,  988,  990, 1001, 1048,  999, 1595, 1008, 1051, 1595,
-     1595, 1057, 1062, 1067, 1072, 1077, 1082, 1087, 1090, 1064,
-     1069, 1071, 1084
+       64,  220, 1541,  187,   75, 1540,  274,  188,  238,  270,
+      292, 1523,  195,  279,  318,  301, 1542,    0,  330,  357,
+      345,  369,  373, 1599,    0, 1599,  295,  360,  223,  226,
+      278,  336,  338,  313, 1599, 1539, 1578, 1599,  277, 1599,
+
+      384,  314, 1537, 1576,  363,  337,  393, 1531,  359,  368,
+      366,  372,  378, 1574,    0,  435,  368, 1518, 1526,  300,
+     1522, 1511, 1512,  364, 1528, 1511, 1520,  369,  200,  372,
+     1514,  380, 1502, 1558,  395, 1505, 1556, 1498, 1521, 1518,
+     1518, 1512,  370, 1505, 1498, 1503, 1497, 1508, 1493, 1492,
+     1506,  346, 1542, 1491,  404, 1503, 1506, 1490,  441,  406,
+     1502, 1503, 1501, 1483, 1488, 1484, 1476, 1493, 1485,    0,
+      377,  385,  421,  410,  435,  428, 1484, 1599,    0,  433,
+     1479, 1599,  439,  438, 1599, 1531, 1486,  430, 1529,  445,
+     1528,  445, 1527, 1599,  490, 1526,  453, 1487, 1482, 1481,
+
+      431, 1522, 1516, 1482, 1461, 1469, 1475, 1463, 1477, 1473,
+     1474, 1474, 1469, 1461, 1463, 1447, 1451, 1464, 1464, 1456,
+     1446, 1449, 1463, 1599, 1449, 1457, 1460, 1441, 1440, 1490,
+     1439, 1449, 1487,  478, 1448, 1436, 1447, 1483, 1487, 1440,
+        9, 1430, 1446, 1427, 1429, 1425, 1431, 1422, 1421, 1434,
+     1427, 1429, 1433, 1432, 1426,   80, 1433, 1428, 1420, 1426,
+     1426, 1407, 1423, 1416, 1423, 1411, 1404, 1418, 1417, 1420,
+     1402, 1410,  474, 1599, 1599,  482, 1599, 1599, 1397,    0,
+      452,  493,  485, 1454, 1599, 1407,  485, 1599, 1452, 1599,
+     1446,  533, 1599,  453, 1388, 1398, 1448, 1405,  480, 1599,
+
+     1403, 1445, 1400, 1397, 1398,  508, 1402, 1440, 1390, 1385,
+     1382, 1378, 1380, 1429, 1388, 1377, 1426, 1374,  539, 1387,
+     1387, 1370, 1371, 1384, 1371, 1381, 1376, 1383, 1378, 1363,
+      465, 1372, 1375, 1370, 1366, 1414,  363, 1599, 1361, 1360,
+     1353, 1355, 1359, 1348, 1355, 1360,  521, 1405, 1360,  480,
+     1357, 1361, 1359, 1348, 1348, 1360, 1342, 1334, 1335, 1356,
+     1338, 1350, 1349, 1335, 1347, 1346, 1345, 1386, 1385, 1384,
+     1328,  554, 1341, 1599, 1599, 1340,    0,  508, 1380, 1379,
+     1337, 1377, 1599, 1325, 1375, 1599,  531,  588,  510, 1374,
+     1316, 1599, 1332, 1331, 1318, 1317, 1599, 1319, 1316, 1328,
+
+     1324, 1312, 1314, 1599, 1320, 1305, 1307, 1318, 1316, 1311,
+      556, 1318, 1300, 1349, 1599, 1298, 1314, 1346, 1350, 1308,
+     1302, 1304, 1305, 1307, 1339, 1292, 1287, 1286, 1288, 1281,
+     1296, 1274, 1281, 1286, 1334, 1599, 1281, 1277, 1280, 1287,
+     1272, 1282, 1285, 1274, 1273, 1268, 1599, 1323, 1599, 1267,
+     1266, 1259, 1276, 1313, 1260, 1265, 1274, 1268, 1272,  558,
+     1307, 1271, 1251, 1254, 1253, 1261, 1249, 1305, 1247, 1599,
+     1599, 1599, 1252, 1599, 1262, 1296, 1258,    0, 1299, 1599,
+     1599, 1247, 1599, 1253, 1599,  535,  538,  562, 1599, 1291,
+     1238, 1237, 1244, 1237, 1249, 1248, 1232, 1247, 1277, 1244,
+
+     1280, 1226, 1228, 1240, 1240, 1239, 1599, 1224, 1221, 1235,
+     1227, 1233, 1224, 1232, 1599, 1217, 1228, 1232, 1214, 1228,
+     1226, 1209, 1203, 1208, 1205, 1220, 1221, 1218, 1259, 1216,
+     1599, 1202, 1204, 1250, 1249,  546, 1212, 1195, 1196, 1201,
+     1192, 1599, 1206, 1192,  580, 1184, 1205, 1202, 1194, 1237,
+     1191, 1235, 1599, 1183, 1181, 1195, 1198, 1230, 1229, 1176,
+     1227, 1599,  568, 1189, 1178, 1180, 1599, 1599, 1172, 1227,
+      552,  528, 1180, 1185, 1219, 1218, 1217, 1171, 1161, 1214,
+     1176, 1166, 1211, 1174, 1156, 1164, 1166, 1170, 1205, 1209,
+     1166, 1165, 1166, 1159, 1148, 1161, 1164, 1159, 1154, 1159,
+
+     1156, 1155, 1158, 1153, 1194, 1193, 1137, 1133, 1141, 1189,
+     1599, 1188, 1137, 1129, 1144, 1131, 1599, 1131, 1140, 1139,
+     1139, 1123,  569, 1122, 1135, 1599, 1127, 1119, 1128, 1121,
+     1132, 1109, 1113, 1164, 1111, 1109, 1120, 1160, 1107,  533,
+      546, 1101,  537, 1599, 1162, 1120, 1109, 1113, 1158, 1599,
+     1152,  561, 1105, 1106, 1097, 1100, 1096, 1113, 1108, 1096,
+     1107, 1091, 1093, 1145, 1091, 1105, 1086, 1136, 1091, 1599,
+     1099, 1097, 1088, 1097, 1093, 1134, 1076, 1076, 1089, 1088,
+     1073, 1128, 1070, 1071, 1599, 1599, 1085, 1082, 1085, 1599,
+     1599, 1084, 1069,  572, 1068, 1066, 1113, 1062, 1116, 1115,
+
+     1599, 1063, 1059, 1071, 1069, 1110, 1058, 1058, 1050, 1106,
+     1059, 1047, 1041, 1049, 1051, 1060, 1053, 1045, 1045,  559,
+     1044, 1095, 1056,   56, 1599,  115,  188,  211, 1599,  565,
+      582,  269,  318,  477,  473,  493,  545,  564,  560,  611,
+      619,  568, 1599,  580,  566,  583,  579,  591,  585,  630,
+      598,  582,  583, 1599,  601,  584,  586,  642,  587, 1599,
+      606,  586,  604,  643,  603,  593,  611,  595,  610,  602,
+      598,  616,  601, 1599, 1599,  601,  610,  655,  610, 1599,
+      618,  613,  664, 1599,  615,  620,  615,  616,  628,  622,
+      620,  673,  619,  675,  676,  622, 1599,  628,  626,  625,
+
+      639,  640,  656,  661,  635,  630,  637,  642,  649,  690,
+      691,  640,  644, 1599,  639,  657,  654,  692,  644,  662,
+      663,  649,  657,  666,  646,  667,  707,  708, 1599,  663,
+      710,  713,  675,  678,  661,  662,  669,  720,  669,  684,
+      723,  675,  679,  677,  675,  728,  729,  730,  682,  732,
+      728,  688, 1599,  693,  686,  695,  689,  684,  694,  690,
+     1599,  685, 1599, 1599,  686,  702,  703,  704,  686,  691,
+      730,  721,  693,  696,  711,  703,  708, 1599, 1599,  718,
+      716,  702,  703,  761,  716,  721,  708,  719,  711,  717,
+      713,  731,  732, 1599, 1599,  730, 1599,  733, 1599,  718,
+
+      737,  727,  777,  733,  775, 1599,  732,  782, 1599,  783,
+      732,  739,  781, 1599, 1599, 1599,  741, 1599,  732,  732,
+      735,  749,  736,  747,  794,  753,  791,  797,  798,  799,
+      800,  761,  745,  757,  776,  805,  765,  807,  756,  752,
+      768,  773,  761,  813,  772, 1599,  774,  773,  775,  768,
+      777,  778,  775,  765,  767,  824,  773,  826,  771,  828,
+     1599,  766,  781,  831, 1599, 1599,  782,  792,  777,  793,
+      779,  839,  840,  786,  842,  801, 1599,  793,  795,  846,
+     1599, 1599, 1599, 1599,  799,  850,  801,  833, 1599,  811,
+     1599,  798,  797,  800,  800,  801,  859, 1599,  804,  861,
+
+      816,  807,  822,  822,  825,  825,  822,  827, 1599,  819,
+     1599,  829, 1599,  830,  831,  828, 1599,  820,  826,  825,
+      837,  837, 1599, 1599,  876, 1599,  841,  826,  832, 1599,
+      847, 1599,  844,  863,  883,  889,  833,  891,  892,  847,
+     1599,  894, 1599,  834,  891,  856,  852,  894,  844,  849,
+      902,  860,  904,  905,  868,  857,  908,  852,  869,  854,
+      869,  853,  910,  911,  876,  872,  919,  891,  878, 1599,
+      922, 1599, 1599,  871, 1599,  924,  872,  921,  866,  871,
+      930,  880, 1599,  886, 1599, 1599,  877,  892, 1599,  930,
+      898,  891,  892,  901,  888,  890,  900,  893, 1599,  944,
+
+      891, 1599,  895, 1599,  898,  894,  893,  951,  906, 1599,
+      948,  910,  913,  956,  899,  901,  909,  899,  915,  909,
+      925,  964,  960, 1599,  925,  962,  926,  917,  924, 1599,
+      921,  926,  973,  918, 1599,  922,  934,  935,  978,  922,
+      923,  931, 1599,  942,  932,  931,  934,  946,  937,  946,
+      948, 1599,  990,  950,  992,  993, 1599,  989,  949,  954,
+      935,  998,  957, 1000,  959,  960, 1003,  962, 1599,  967,
+     1599, 1599,  949,  955, 1008,  969, 1599,  955, 1599,  955,
+      957, 1599,  962,  957,  969,  965, 1599,  968,  972,  963,
+     1015,  964,  980,  973,  968,  983,  974,  981,  968,  983,
+
+     1030,  989, 1032,  977,  993,  984,  998,  994, 1599, 1038,
+     1599, 1039, 1040,  997,  996,  997, 1599, 1599, 1599, 1044,
+      988, 1004, 1599, 1042,  993,  992,  994, 1005, 1052, 1003,
+     1599, 1012, 1055, 1599, 1599, 1061, 1066, 1071, 1076, 1081,
+     1086, 1091, 1094, 1068, 1073, 1075, 1088
     } ;
 
-static const flex_int16_t yy_def[1244] =
+static const flex_int16_t yy_def[1248] =
     {   0,
-     1232, 1232, 1233, 1233, 1232, 1232, 1232, 1232, 1232, 1232,
-     1231, 1231, 1231, 1231, 1231, 1234, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1235,
-     1231, 1231, 1231, 1236,   15, 1231,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1237,   45,   45,   45,
+     1236, 1236, 1237, 1237, 1236, 1236, 1236, 1236, 1236, 1236,
+     1235, 1235, 1235, 1235, 1235, 1238, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1239,
+     1235, 1235, 1235, 1240,   15, 1235,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1241,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1234, 1231, 1231,
-     1231, 1231, 1231, 1231, 1238, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1235, 1231, 1236, 1231,
+       45,   45,   45,   45,   45,   45,   45, 1238, 1235, 1235,
+     1235, 1235, 1235, 1235, 1242, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1239, 1235, 1240, 1235,
 
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1239,   45, 1237,   45,   45,   45,   45,
+     1235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1243,   45, 1241,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1238,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1240,   45,
-       45, 1231,   45,   45, 1231,   45,   45,   45,   45,   45,
-       45,   45, 1239, 1231, 1237,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1242,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1244,   45,
+       45, 1235,   45,   45, 1235,   45,   45,   45,   45,   45,
+       45,   45, 1243, 1235, 1241,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1241,
-       45,   45,   45,   45, 1231,   45,   45, 1231,   45, 1231,
-       45, 1237, 1231,   45,   45,   45,   45,   45,   45, 1231,
+       45,   45, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1245,
+       45,   45,   45,   45, 1235,   45,   45, 1235,   45, 1235,
+       45, 1241, 1235,   45,   45,   45,   45,   45,   45, 1235,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1231,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1231, 1231, 1231, 1242,   45,   45,   45,
-       45,   45, 1231,   45,   45, 1231,   45, 1237,   45,   45,
-       45, 1231,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45,   45,   45, 1235, 1235, 1235, 1246,   45,   45,   45,
+       45,   45, 1235,   45,   45, 1235,   45, 1241,   45,   45,
+       45, 1235,   45,   45,   45,   45, 1235,   45,   45,   45,
 
-       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1235,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45, 1231,   45,
+       45,   45,   45,   45,   45, 1235,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1235,   45, 1235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
-     1231, 1231,   45, 1231,   45,   45, 1231, 1243,   45, 1231,
-     1231,   45, 1231,   45, 1231,   45,   45,   45, 1231,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1235,
+     1235, 1235,   45, 1235,   45,   45, 1235, 1247,   45, 1235,
+     1235,   45, 1235,   45, 1235,   45,   45,   45, 1235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1235,   45,   45,   45,
+       45,   45,   45,   45, 1235,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45, 1231, 1231,   45,   45,
+     1235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1235,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1235,   45,   45,   45,   45,   45,   45,   45,
+       45, 1235,   45,   45,   45,   45, 1235, 1235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1231,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
+     1235,   45,   45,   45,   45,   45, 1235,   45,   45,   45,
+       45,   45,   45,   45,   45, 1235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45,   45,   45, 1231,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45, 1235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231, 1231,   45,   45,   45, 1231,
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1235, 1235,   45,   45,   45, 1235,
+     1235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45, 1231,   45,   45,
+       45,   45,   45,   45, 1235,   45,   45,   45, 1235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45, 1231,   45,
+       45,   45, 1235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45, 1235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231, 1231,   45,   45,   45, 1231,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45,   45,   45, 1235, 1235,   45,   45,   45,   45, 1235,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1235,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
-       45,   45,   45,   45,   45,   45,   45, 1231,   45, 1231,
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231, 1231,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1231, 1231,   45, 1231,   45, 1231,   45,   45,   45,   45,
+       45,   45, 1235,   45,   45,   45,   45,   45,   45,   45,
+     1235,   45, 1235, 1235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1235, 1235,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1235, 1235,   45, 1235,   45, 1235,   45,
 
-       45,   45, 1231,   45,   45, 1231,   45,   45,   45,   45,
-     1231, 1231,   45, 1231,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1235,   45,   45, 1235,   45,
+       45,   45,   45, 1235, 1235, 1235,   45, 1235,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
-     1231, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231,   45,   45,   45, 1231, 1231, 1231, 1231,
-       45,   45,   45,   45, 1231,   45, 1231,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45, 1231,   45, 1231,   45, 1231,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45, 1231, 1231,
-       45, 1231,   45,   45,   45, 1231,   45, 1231,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45, 1231,   45,
+     1235,   45,   45,   45, 1235, 1235,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1235,   45,   45,   45,
+     1235, 1235, 1235, 1235,   45,   45,   45,   45, 1235,   45,
+     1235,   45,   45,   45,   45,   45,   45, 1235,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1235,   45,
+     1235,   45, 1235,   45,   45,   45, 1235,   45,   45,   45,
+       45,   45, 1235, 1235,   45, 1235,   45,   45,   45, 1235,
+       45, 1235,   45,   45,   45,   45,   45,   45,   45,   45,
+     1235,   45, 1235,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1235,
+       45, 1235, 1235,   45, 1235,   45,   45,   45,   45,   45,
+       45,   45, 1235,   45, 1235, 1235,   45,   45, 1235,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1235,   45,
+
+       45, 1235,   45, 1235,   45,   45,   45,   45,   45, 1235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1231,   45, 1231, 1231,   45,
-     1231,   45,   45,   45,   45,   45,   45,   45, 1231,   45,
-     1231, 1231,   45,   45, 1231,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45, 1231,   45, 1231,
-
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
-     1231,   45,   45,   45,   45,   45,   45,   45, 1231,   45,
-       45,   45,   45,   45,   45,   45,   45, 1231,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45, 1231, 1231,   45,   45,
-       45,   45, 1231,   45, 1231,   45,   45, 1231,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1235,   45,   45,   45,   45,   45, 1235,
+       45,   45,   45,   45, 1235,   45,   45,   45,   45,   45,
+       45,   45, 1235,   45,   45,   45,   45,   45,   45,   45,
+       45, 1235,   45,   45,   45,   45, 1235,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1235,   45,
+     1235, 1235,   45,   45,   45,   45, 1235,   45, 1235,   45,
+       45, 1235,   45,   45,   45,   45, 1235,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45, 1231,   45, 1231,   45,   45,   45,
-       45,   45, 1231, 1231, 1231,   45,   45,   45, 1231,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45,   45, 1231,
-        0, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231
+       45,   45,   45,   45,   45,   45,   45,   45, 1235,   45,
+     1235,   45,   45,   45,   45,   45, 1235, 1235, 1235,   45,
+       45,   45, 1235,   45,   45,   45,   45,   45,   45,   45,
+     1235,   45,   45, 1235,    0, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235
     } ;
 
-static const flex_int16_t yy_nxt[1667] =
+static const flex_int16_t yy_nxt[1671] =
     {   0,
-     1231,   13,   14,   13, 1231,   15,   16, 1231,   17,   18,
+     1235,   13,   14,   13, 1235,   15,   16, 1235,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   84,  340,
-       37,   14,   37,   85,   25,   26,   38, 1231, 1231,   27,
+       37,   14,   37,   85,   25,   26,   38, 1235, 1235,   27,
        37,   14,   37,   42,   28,   42,   38,   90,   91,   29,
       113,   30,   13,   14,   13,   89,   90,   25,   31,   91,
-       13,   14,   13,   13,   14,   13,   32,   40, 1231,   13,
+       13,   14,   13,   13,   14,   13,   32,   40, 1235,   13,
        14,   13,   33,   40,  113,   90,   91,  341,   89,   34,
        35,   13,   14,   13,   93,   15,   16,   94,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
@@ -1181,7 +1181,7 @@ static const flex_int16_t yy_nxt[1667] =
 
        39,   83,   83,   83,   28,   42,   41,   42,   42,   29,
        42,   30,   81,  105,   41,  109,   92,   25,   31,  106,
-      128,  135,   87,  797,   87,  798,   32,   88,   88,   88,
+      128,  135,   87,  799,   87,  800,   32,   88,   88,   88,
       129,  136,   33,  137,  356,   81,  105,  357,  109,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
@@ -1195,19 +1195,19 @@ static const flex_int16_t yy_nxt[1667] =
        82,   82,  100,  112,   79,   81,   82,   82,   82,  119,
        81,  143,  120,  110,  121,  144,  122,   81,  158,  102,
       105,  102,  159,  111,  132,  214,  112,  108,   81,  133,
-      799,  171,  134,   81,  172,  145,  110,  101,  215,  800,
+      801,  171,  134,   81,  172,  145,  110,  101,  215,  802,
        81,   45,  109,  105,   45,   45,   45,  117,   45,   45,
        45,  111,  115,  118,  130,   45,   45,  171,   45,   45,
       172,  146,  100,  147,   45,  109,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   88,   88,
-       88,   45,  123,  173,  803,   45,  124,  101,  148,  125,
+       88,   45,  123,  173,  805,   45,  124,  101,  148,  125,
       126,  139,  140,   45,  112,  141,  160,   45,  149,   45,
       116,  142,  127,  150,  151,  152,  161,  162,  153,  154,
       110,  173,  163,   83,   83,   83,  200,  112,  173,  155,
       111,  180,  156,   87,   81,   87,  201,  167,   88,   88,
-       88,  804,  168,  110,  171,  164,  172,  184,   79,  165,
+       88,  806,  168,  110,  171,  164,  172,  184,   79,  165,
        80,   80,   80,   88,   88,   88,  176,   81,  111,  180,
        79,   81,   82,   82,   82,  166,   83,   83,   83,   99,
       174,  183,  175,   81,  184,  188,   99,   81,  185,  189,
@@ -1225,54 +1225,54 @@ static const flex_int16_t yy_nxt[1667] =
 
       283,  291,  260,  292,  292,  292,  374,  379,  380,  382,
       292,  292,  292,  292,  292,  292,  381,  385,  401,  378,
-      389,  374,  402,  394,  430,  431,  447,  451,  805,  375,
-      806,  452,  382,  292,  292,  292,  292,  292,  292,  332,
+      389,  374,  402,  394,  430,  431,  447,  451,  807,  375,
+      808,  452,  382,  292,  292,  292,  292,  292,  292,  332,
       395,  479,  333,  479,  415,  385,  388,  388,  388,  416,
-      807,  617,  652,  388,  388,  388,  388,  388,  388,  474,
+      809,  617,  652,  388,  388,  388,  388,  388,  388,  474,
       486,  507,  487,  553,  475,  571,  508,  568,  554,  479,
-      572,  488,  573,  644,  808,  652,  388,  388,  388,  388,
-      388,  388,  448,  645,  717,  626,  651,  486,  618,  487,
-      627,  718,  571,  722,  730,  417,  801,  719,  572,  723,
+      572,  488,  573,  644,  701,  652,  388,  388,  388,  388,
+      388,  388,  448,  645,  718,  626,  651,  486,  618,  487,
+      627,  719,  571,  723,  731,  417,  803,  720,  572,  724,
 
-      418,   45,   45,   45,  720,  792,  802,  809,   45,   45,
-       45,   45,   45,   45,  651,  767,  810,  793,  811,  768,
-      812,  813,  730,  801,  814,  815,  816,  628,  817,  802,
+      418,   45,   45,   45,  721,  794,  804,  810,   45,   45,
+       45,   45,   45,   45,  651,  768,  702,  795,  811,  769,
+      812,  813,  731,  803,  814,  815,  816,  628,  817,  804,
       818,   45,   45,   45,   45,   45,   45,  819,  820,  821,
-      822,  823,  824,  825,  826,  827,  830,  831,  832,  833,
-      828,  834,  835,  836,  837,  838,  839,  840,  841,  842,
-      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
-      843,  854,  855,  856,  857,  858,  859,  860,  861,  862,
-      863,  864,  865,  866,  867,  868,  870,  869,  871,  872,
-      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
-
-      883,  829,  884,  885,  886,  887,  888,  889,  890,  891,
-      892,  893,  894,  868,  869,  896,  898,  895,  899,  900,
-      901,  902,  903,  904,  905,  906,  907,  908,  909,  910,
+      822,  823,  824,  825,  826,  827,  828,  829,  832,  833,
+      834,  835,  830,  836,  837,  838,  839,  840,  841,  842,
+      843,  844,  846,  847,  848,  849,  850,  851,  852,  853,
+      854,  855,  845,  856,  857,  858,  859,  860,  861,  862,
+      863,  864,  865,  866,  867,  868,  869,  870,  871,  873,
+      872,  874,  875,  876,  877,  878,  879,  880,  881,  882,
+
+      883,  884,  885,  831,  886,  887,  888,  889,  890,  891,
+      892,  893,  894,  895,  896,  897,  871,  872,  899,  901,
+      898,  902,  903,  904,  905,  906,  907,  908,  909,  910,
       911,  912,  913,  914,  915,  916,  917,  918,  919,  920,
       921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
-      931,  932,  933,  934,  935,  936,  937,  897,  938,  939,
-      940,  941,  942,  943,  944,  945,  946,  947,  948,  949,
-      950,  951,  952,  931,  953,  954,  955,  956,  957,  932,
-      958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
-      968,  969,  970,  971,  972,  973,  974,  975,  977,  978,
-
-      979,  980,  981,  982,  983,  984,  985,  986,  987,  989,
-      990,  991,  992,  993,  994,  995,  996,  997,  998,  999,
+      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
+      900,  941,  942,  943,  944,  945,  946,  947,  948,  949,
+      950,  951,  952,  953,  954,  955,  956,  935,  957,  958,
+      959,  960,  961,  936,  962,  963,  964,  965,  966,  967,
+      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
+
+      978,  979,  981,  982,  983,  984,  985,  986,  987,  988,
+      989,  990,  991,  993,  994,  995,  996,  997,  998,  999,
      1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
-     1010, 1011, 1013,  984, 1014, 1015, 1016, 1017, 1018, 1012,
-     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026,  976, 1027,
-      988, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
+     1010, 1011, 1012, 1013, 1014, 1015, 1017,  988, 1018, 1019,
+     1020, 1021, 1022, 1016, 1023, 1024, 1025, 1026, 1027, 1028,
+     1029, 1030,  980, 1031,  992, 1032, 1033, 1034, 1035, 1036,
      1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
-     1047, 1048, 1049, 1050, 1051, 1052, 1030, 1053, 1054, 1055,
-     1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
+     1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
+     1034, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
      1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
 
      1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
-     1086, 1087, 1088, 1089, 1090, 1064, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105,
-     1101, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1096,
-     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
+     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1068,
+     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
+     1106, 1107, 1108, 1109, 1105, 1110, 1111, 1112, 1113, 1114,
+     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
+     1125, 1126, 1127, 1100, 1128, 1129, 1130, 1131, 1132, 1133,
      1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
      1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
      1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
@@ -1283,77 +1283,77 @@ static const flex_int16_t yy_nxt[1667] =
      1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
      1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
      1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
-     1224, 1225, 1226, 1227, 1228, 1229, 1230,   12,   12,   12,
-       12,   12,   36,   36,   36,   36,   36,   78,  280,   78,
-       78,   78,   97,  377,   97,  478,   97,   99,   99,   99,
-       99,   99,  114,  114,  114,  114,  114,  170,   99,  170,
-      170,  170,  193,  193,  193,  796,  795,  794,  791,  790,
-
-      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
-      779,  778,  777,  776,  775,  774,  773,  772,  771,  770,
-      769,  766,  765,  764,  763,  762,  761,  760,  759,  758,
-      757,  756,  755,  754,  753,  752,  751,  750,  749,  748,
-      747,  746,  745,  744,  743,  742,  741,  740,  739,  738,
-      737,  736,  735,  734,  733,  732,  731,  729,  728,  727,
-      726,  725,  724,  721,  716,  715,  714,  713,  712,  711,
-      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  697,  696,  695,  694,  693,  692,  691,
-      690,  689,  688,  687,  686,  685,  684,  683,  682,  681,
-
-      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
-      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
-      660,  659,  658,  657,  656,  655,  654,  653,  650,  649,
-      648,  647,  646,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  631,  630,  629,  625,  624,
-      623,  622,  621,  620,  619,  616,  615,  614,  613,  612,
-      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
-      601,  600,  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,  570,  569,
-
-      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
-      558,  557,  556,  555,  552,  551,  550,  549,  548,  547,
-      546,  545,  544,  543,  542,  541,  540,  539,  538,  537,
-      536,  535,  534,  533,  532,  531,  530,  529,  528,  527,
-      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
-      516,  515,  514,  513,  512,  511,  510,  509,  506,  505,
-      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
-      494,  493,  492,  491,  490,  489,  485,  484,  483,  482,
-      481,  480,  477,  476,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
-
-      457,  456,  455,  454,  453,  450,  449,  446,  445,  444,
-      443,  442,  441,  440,  439,  436,  435,  434,  433,  432,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-      419,  414,  413,  412,  411,  410,  409,  408,  407,  406,
-      405,  404,  403,  400,  399,  398,  397,  396,  393,  392,
-      391,  390,  387,  386,  384,  383,  376,  373,  372,  371,
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  358,  355,  354,  353,  352,  351,  350,  349,
-      348,  347,  346,  345,  344,  343,  342,  339,  338,  337,
-      336,  335,  334,  330,  329,  328,  327,  326,  325,  324,
-
-      323,  322,  321,  320,  319,  318,  317,  316,  315,  314,
-      313,  312,  311,  310,  309,  308,  307,  306,  305,  304,
-      303,  302,  301,  300,  297,  296,  295,  293,  194,  290,
-      288,  286,  285,  282,  279,  272,  271,  270,  269,  268,
-      267,  266,  265,  264,  252,  251,  250,  246,  245,  242,
-      241,  240,  239,  238,  237,  236,  235,  232,  231,  230,
-      229,  228,  227,  226,  223,  222,  218,  210,  209,  208,
-      204,  203,  202,  199,  198,  194,  187,  182,  181,  178,
-      177,  169,  157,  138,  131,  104,  103,   43,   98,   96,
-       95,   86,   43, 1231,   11, 1231, 1231, 1231, 1231, 1231,
-
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231
+     1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233,
+     1234,   12,   12,   12,   12,   12,   36,   36,   36,   36,
+       36,   78,  280,   78,   78,   78,   97,  377,   97,  478,
+       97,   99,   99,   99,   99,   99,  114,  114,  114,  114,
+      114,  170,   99,  170,  170,  170,  193,  193,  193,  798,
+
+      797,  796,  793,  792,  791,  790,  789,  788,  787,  786,
+      785,  784,  783,  782,  781,  780,  779,  778,  777,  776,
+      775,  774,  773,  772,  771,  770,  767,  766,  765,  764,
+      763,  762,  761,  760,  759,  758,  757,  756,  755,  754,
+      753,  752,  751,  750,  749,  748,  747,  746,  745,  744,
+      743,  742,  741,  740,  739,  738,  737,  736,  735,  734,
+      733,  732,  730,  729,  728,  727,  726,  725,  722,  717,
+      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
+      706,  705,  704,  703,  700,  699,  698,  697,  696,  695,
+      694,  693,  692,  691,  690,  689,  688,  687,  686,  685,
+
+      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
+      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  653,  650,  649,  648,  647,  646,  643,  642,  641,
+      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
+      630,  629,  625,  624,  623,  622,  621,  620,  619,  616,
+      615,  614,  613,  612,  611,  610,  609,  608,  607,  606,
+      605,  604,  603,  602,  601,  600,  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,  570,  569,  568,  567,  566,  565,  564,  563,
+      562,  561,  560,  559,  558,  557,  556,  555,  552,  551,
+      550,  549,  548,  547,  546,  545,  544,  543,  542,  541,
+      540,  539,  538,  537,  536,  535,  534,  533,  532,  531,
+      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
+      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
+      510,  509,  506,  505,  504,  503,  502,  501,  500,  499,
+      498,  497,  496,  495,  494,  493,  492,  491,  490,  489,
+      485,  484,  483,  482,  481,  480,  477,  476,  473,  472,
+      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
+
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  450,
+      449,  446,  445,  444,  443,  442,  441,  440,  439,  436,
+      435,  434,  433,  432,  429,  428,  427,  426,  425,  424,
+      423,  422,  421,  420,  419,  414,  413,  412,  411,  410,
+      409,  408,  407,  406,  405,  404,  403,  400,  399,  398,
+      397,  396,  393,  392,  391,  390,  387,  386,  384,  383,
+      376,  373,  372,  371,  370,  369,  368,  367,  366,  365,
+      364,  363,  362,  361,  360,  359,  358,  355,  354,  353,
+      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  339,  338,  337,  336,  335,  334,  330,  329,  328,
+
+      327,  326,  325,  324,  323,  322,  321,  320,  319,  318,
+      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
+      307,  306,  305,  304,  303,  302,  301,  300,  297,  296,
+      295,  293,  194,  290,  288,  286,  285,  282,  279,  272,
+      271,  270,  269,  268,  267,  266,  265,  264,  252,  251,
+      250,  246,  245,  242,  241,  240,  239,  238,  237,  236,
+      235,  232,  231,  230,  229,  228,  227,  226,  223,  222,
+      218,  210,  209,  208,  204,  203,  202,  199,  198,  194,
+      187,  182,  181,  178,  177,  169,  157,  138,  131,  104,
+      103,   43,   98,   96,   95,   86,   43, 1235,   11, 1235,
+
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235
     } ;
 
-static const flex_int16_t yy_chk[1667] =
+static const flex_int16_t yy_chk[1671] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,   21,  241,
@@ -1368,7 +1368,7 @@ static const flex_int16_t yy_chk[1667] =
 
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   50,   10,   53,   31,    2,    2,   51,
-       61,   65,   25,  723,   25,  725,    2,   25,   25,   25,
+       61,   65,   25,  724,   25,  726,    2,   25,   25,   25,
        61,   65,    2,   65,  256,   20,   50,  256,   53,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1382,19 +1382,19 @@ static const flex_int16_t yy_chk[1667] =
        19,   19,   44,   55,   22,   17,   22,   22,   22,   59,
        19,   68,   59,   54,   59,   68,   59,   22,   73,   47,
        62,   58,   73,   54,   64,  129,   55,   52,   17,   64,
-      726,   89,   64,   19,   90,   68,   54,   44,  129,  727,
+      727,   89,   64,   19,   90,   68,   54,   44,  129,  728,
        22,   45,   69,   62,   45,   45,   45,   58,   45,   45,
        45,   54,   57,   58,   62,   45,   45,   89,   45,   57,
        90,   69,   99,   69,   45,   69,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   57,   87,   87,
-       87,   57,   60,   91,  731,   57,   60,   99,   70,   60,
+       87,   57,   60,   91,  732,   57,   60,   99,   70,   60,
        60,   67,   67,   57,   76,   67,   74,   57,   70,   57,
        57,   67,   60,   70,   70,   71,   74,   74,   71,   71,
        75,   91,   74,   79,   79,   79,  120,   76,   94,   71,
        75,  102,   71,   81,   79,   81,  120,   76,   81,   81,
-       81,  732,   76,   75,   92,   75,   93,  106,   80,   75,
+       81,  733,   76,   75,   92,   75,   93,  106,   80,   75,
        80,   80,   80,   88,   88,   88,   94,   79,   75,  102,
        82,   80,   82,   82,   82,   75,   83,   83,   83,  101,
        92,  105,   93,   82,  106,  109,  101,   83,  107,  110,
@@ -1412,132 +1412,132 @@ static const flex_int16_t yy_chk[1667] =
 
       183,  192,  159,  195,  195,  195,  276,  282,  282,  283,
       195,  195,  195,  195,  195,  195,  282,  287,  306,  281,
-      294,  273,  306,  299,  331,  331,  347,  350,  733,  276,
-      734,  350,  283,  195,  195,  195,  195,  195,  195,  234,
+      294,  273,  306,  299,  331,  331,  347,  350,  734,  276,
+      735,  350,  283,  195,  195,  195,  195,  195,  195,  234,
       299,  378,  234,  389,  319,  287,  292,  292,  292,  319,
-      735,  536,  572,  292,  292,  292,  292,  292,  292,  372,
+      736,  536,  572,  292,  292,  292,  292,  292,  292,  372,
       387,  411,  387,  460,  372,  486,  411,  488,  460,  378,
-      487,  389,  488,  563,  736,  572,  292,  292,  292,  292,
+      487,  389,  488,  563,  623,  572,  292,  292,  292,  292,
       292,  292,  347,  563,  640,  545,  571,  387,  536,  387,
-      545,  640,  486,  643,  652,  319,  729,  641,  487,  643,
-
-      319,  388,  388,  388,  641,  719,  730,  737,  388,  388,
-      388,  388,  388,  388,  571,  694,  738,  719,  739,  694,
-      740,  741,  652,  729,  743,  744,  745,  545,  746,  730,
-      747,  388,  388,  388,  388,  388,  388,  748,  749,  750,
-      751,  752,  754,  755,  756,  757,  758,  760,  761,  762,
-      757,  763,  764,  765,  766,  767,  768,  769,  770,  771,
-      772,  775,  776,  777,  779,  780,  781,  783,  784,  785,
-      771,  786,  787,  788,  789,  790,  791,  792,  793,  794,
-      796,  797,  798,  799,  800,  801,  803,  802,  804,  805,
-      806,  807,  808,  809,  810,  811,  813,  814,  815,  816,
-
-      817,  757,  818,  819,  820,  821,  822,  823,  824,  825,
-      826,  828,  829,  801,  802,  830,  831,  829,  832,  833,
-      834,  835,  836,  837,  838,  839,  840,  841,  842,  843,
-      844,  845,  846,  847,  848,  849,  851,  852,  853,  854,
-      855,  856,  857,  859,  862,  863,  864,  865,  866,  867,
-      868,  869,  870,  871,  872,  873,  874,  830,  877,  878,
-      879,  880,  881,  882,  883,  884,  885,  886,  887,  888,
-      889,  890,  893,  868,  895,  897,  898,  899,  900,  869,
-      901,  902,  904,  905,  907,  908,  909,  910,  913,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+      545,  640,  486,  643,  652,  319,  730,  641,  487,  643,
+
+      319,  388,  388,  388,  641,  720,  731,  737,  388,  388,
+      388,  388,  388,  388,  571,  694,  623,  720,  738,  694,
+      739,  740,  652,  730,  741,  742,  744,  545,  745,  731,
+      746,  388,  388,  388,  388,  388,  388,  747,  748,  749,
+      750,  751,  752,  753,  755,  756,  757,  758,  759,  761,
+      762,  763,  758,  764,  765,  766,  767,  768,  769,  770,
+      771,  772,  773,  776,  777,  778,  779,  781,  782,  783,
+      785,  786,  772,  787,  788,  789,  790,  791,  792,  793,
+      794,  795,  796,  798,  799,  800,  801,  802,  803,  805,
+      804,  806,  807,  808,  809,  810,  811,  812,  813,  815,
+
+      816,  817,  818,  758,  819,  820,  821,  822,  823,  824,
+      825,  826,  827,  828,  830,  831,  803,  804,  832,  833,
+      831,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
+      854,  855,  856,  857,  858,  859,  860,  862,  865,  866,
+      867,  868,  869,  870,  871,  872,  873,  874,  875,  876,
+      832,  877,  880,  881,  882,  883,  884,  885,  886,  887,
+      888,  889,  890,  891,  892,  893,  896,  871,  898,  900,
+      901,  902,  903,  872,  904,  905,  907,  908,  910,  911,
+      912,  913,  917,  919,  920,  921,  922,  923,  924,  925,
 
       926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
-      936,  937,  938,  939,  940,  941,  943,  944,  945,  946,
+      936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
       947,  948,  949,  950,  951,  952,  953,  954,  955,  956,
-      958,  959,  960,  931,  963,  964,  965,  966,  967,  959,
-      968,  969,  970,  971,  972,  974,  975,  976,  923,  981,
-      934,  982,  983,  984,  986,  988,  989,  990,  991,  992,
-      993,  995,  996,  997,  998,  999, 1000, 1001, 1002, 1003,
-     1004, 1006, 1008, 1010, 1011, 1012,  984, 1014, 1015, 1016,
-     1017, 1018, 1021, 1023, 1024, 1025, 1027, 1029, 1030, 1031,
-     1032, 1033, 1034, 1035, 1036, 1038, 1040, 1041, 1042, 1043,
+      957,  958,  959,  960,  962,  963,  964,  935,  967,  968,
+      969,  970,  971,  963,  972,  973,  974,  975,  976,  978,
+      979,  980,  927,  985,  938,  986,  987,  988,  990,  992,
+      993,  994,  995,  996,  997,  999, 1000, 1001, 1002, 1003,
+     1004, 1005, 1006, 1007, 1008, 1010, 1012, 1014, 1015, 1016,
+      988, 1018, 1019, 1020, 1021, 1022, 1025, 1027, 1028, 1029,
+     1031, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1042,
 
      1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1030, 1059, 1060, 1061, 1062,
-     1063, 1064, 1065, 1067, 1070, 1072, 1073, 1074, 1075, 1076,
-     1072, 1077, 1078, 1080, 1083, 1084, 1086, 1087, 1088, 1089,
-     1090, 1091, 1092, 1093, 1094, 1096, 1097, 1099, 1101, 1064,
-     1102, 1103, 1104, 1105, 1107, 1108, 1109, 1110, 1111, 1112,
-     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, 1122, 1123,
-     1124, 1125, 1127, 1128, 1129, 1130, 1132, 1133, 1134, 1135,
-     1136, 1137, 1138, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
-     1147, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157, 1158,
-
-     1159, 1160, 1161, 1162, 1163, 1164, 1166, 1169, 1170, 1171,
-     1172, 1174, 1176, 1177, 1179, 1180, 1181, 1182, 1184, 1185,
-     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
-     1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1206,
-     1208, 1209, 1210, 1211, 1212, 1216, 1217, 1218, 1220, 1221,
-     1222, 1223, 1224, 1225, 1226, 1228, 1229, 1232, 1232, 1232,
-     1232, 1232, 1233, 1233, 1233, 1233, 1233, 1234, 1240, 1234,
-     1234, 1234, 1235, 1241, 1235, 1242, 1235, 1236, 1236, 1236,
-     1236, 1236, 1237, 1237, 1237, 1237, 1237, 1238, 1243, 1238,
-     1238, 1238, 1239, 1239, 1239,  722,  721,  720,  718,  717,
-
-      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
-      706,  705,  704,  703,  702,  700,  699,  698,  697,  696,
-      695,  693,  692,  689,  688,  687,  684,  683,  682,  681,
-      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
-      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
-      659,  658,  657,  656,  655,  654,  653,  651,  649,  648,
-      647,  646,  645,  642,  639,  638,  637,  636,  635,  634,
-      633,  632,  631,  630,  629,  628,  627,  625,  624,  623,
-      622,  621,  620,  619,  618,  616,  615,  614,  613,  612,
-      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
-
-      600,  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,  570,  569,
-      566,  565,  564,  561,  560,  559,  558,  557,  556,  555,
-      554,  552,  551,  550,  549,  548,  547,  546,  544,  543,
-      541,  540,  539,  538,  537,  535,  534,  533,  532,  530,
-      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
-      519,  518,  517,  516,  514,  513,  512,  511,  510,  509,
-      508,  506,  505,  504,  503,  502,  501,  500,  499,  498,
-      497,  496,  495,  494,  493,  492,  491,  490,  484,  482,
-
-      479,  477,  476,  475,  473,  469,  468,  467,  466,  465,
-      464,  463,  462,  461,  459,  458,  457,  456,  455,  454,
-      453,  452,  451,  450,  448,  446,  445,  444,  443,  442,
-      441,  440,  439,  438,  437,  435,  434,  433,  432,  431,
-      430,  429,  428,  427,  426,  425,  424,  423,  422,  421,
-      420,  419,  418,  417,  416,  414,  413,  412,  410,  409,
-      408,  407,  406,  405,  403,  402,  401,  400,  399,  398,
-      396,  395,  394,  393,  391,  390,  385,  384,  382,  381,
-      380,  379,  376,  373,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  361,  360,  359,  358,  357,  356,
-
-      355,  354,  353,  352,  351,  349,  348,  346,  345,  344,
-      343,  342,  341,  340,  339,  336,  335,  334,  333,  332,
-      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
-      320,  318,  317,  316,  315,  314,  313,  312,  311,  310,
-      309,  308,  307,  305,  304,  303,  302,  301,  298,  297,
-      296,  295,  291,  289,  286,  284,  279,  272,  271,  270,
-      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
-      259,  258,  257,  255,  254,  253,  252,  251,  250,  249,
-      248,  247,  246,  245,  244,  243,  242,  240,  239,  238,
-      237,  236,  235,  233,  232,  231,  230,  229,  228,  227,
-
-      226,  225,  223,  222,  221,  220,  219,  218,  217,  216,
-      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
-      205,  204,  203,  202,  200,  199,  198,  196,  193,  191,
-      189,  187,  186,  181,  177,  169,  168,  167,  166,  165,
-      164,  163,  162,  161,  158,  157,  156,  154,  153,  151,
-      150,  149,  148,  147,  146,  145,  144,  142,  141,  140,
-      139,  138,  137,  136,  134,  133,  131,  127,  126,  125,
-      123,  122,  121,  119,  118,  114,  108,  104,  103,   97,
-       96,   77,   72,   66,   63,   49,   48,   43,   41,   39,
-       38,   24,   14,   11, 1231, 1231, 1231, 1231, 1231, 1231,
-
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231
+     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1034,
+     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1074, 1076,
+     1077, 1078, 1079, 1080, 1076, 1081, 1082, 1084, 1087, 1088,
+     1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1100,
+     1101, 1103, 1105, 1068, 1106, 1107, 1108, 1109, 1111, 1112,
+     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
+     1123, 1125, 1126, 1127, 1128, 1129, 1131, 1132, 1133, 1134,
+     1136, 1137, 1138, 1139, 1140, 1141, 1142, 1144, 1145, 1146,
+     1147, 1148, 1149, 1150, 1151, 1153, 1154, 1155, 1156, 1158,
+
+     1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168,
+     1170, 1173, 1174, 1175, 1176, 1178, 1180, 1181, 1183, 1184,
+     1185, 1186, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
+     1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205,
+     1206, 1207, 1208, 1210, 1212, 1213, 1214, 1215, 1216, 1220,
+     1221, 1222, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1232,
+     1233, 1236, 1236, 1236, 1236, 1236, 1237, 1237, 1237, 1237,
+     1237, 1238, 1244, 1238, 1238, 1238, 1239, 1245, 1239, 1246,
+     1239, 1240, 1240, 1240, 1240, 1240, 1241, 1241, 1241, 1241,
+     1241, 1242, 1247, 1242, 1242, 1242, 1243, 1243, 1243,  723,
+
+      722,  721,  719,  718,  717,  716,  715,  714,  713,  712,
+      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
+      700,  699,  698,  697,  696,  695,  693,  692,  689,  688,
+      687,  684,  683,  682,  681,  680,  679,  678,  677,  676,
+      675,  674,  673,  672,  671,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  653,  651,  649,  648,  647,  646,  645,  642,  639,
+      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  625,  624,  622,  621,  620,  619,  618,  616,
+      615,  614,  613,  612,  610,  609,  608,  607,  606,  605,
+
+      604,  603,  602,  601,  600,  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,  570,  569,  566,  565,  564,  561,  560,  559,
+      558,  557,  556,  555,  554,  552,  551,  550,  549,  548,
+      547,  546,  544,  543,  541,  540,  539,  538,  537,  535,
+      534,  533,  532,  530,  529,  528,  527,  526,  525,  524,
+      523,  522,  521,  520,  519,  518,  517,  516,  514,  513,
+      512,  511,  510,  509,  508,  506,  505,  504,  503,  502,
+      501,  500,  499,  498,  497,  496,  495,  494,  493,  492,
+
+      491,  490,  484,  482,  479,  477,  476,  475,  473,  469,
+      468,  467,  466,  465,  464,  463,  462,  461,  459,  458,
+      457,  456,  455,  454,  453,  452,  451,  450,  448,  446,
+      445,  444,  443,  442,  441,  440,  439,  438,  437,  435,
+      434,  433,  432,  431,  430,  429,  428,  427,  426,  425,
+      424,  423,  422,  421,  420,  419,  418,  417,  416,  414,
+      413,  412,  410,  409,  408,  407,  406,  405,  403,  402,
+      401,  400,  399,  398,  396,  395,  394,  393,  391,  390,
+      385,  384,  382,  381,  380,  379,  376,  373,  371,  370,
+      369,  368,  367,  366,  365,  364,  363,  362,  361,  360,
+
+      359,  358,  357,  356,  355,  354,  353,  352,  351,  349,
+      348,  346,  345,  344,  343,  342,  341,  340,  339,  336,
+      335,  334,  333,  332,  330,  329,  328,  327,  326,  325,
+      324,  323,  322,  321,  320,  318,  317,  316,  315,  314,
+      313,  312,  311,  310,  309,  308,  307,  305,  304,  303,
+      302,  301,  298,  297,  296,  295,  291,  289,  286,  284,
+      279,  272,  271,  270,  269,  268,  267,  266,  265,  264,
+      263,  262,  261,  260,  259,  258,  257,  255,  254,  253,
+      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
+      242,  240,  239,  238,  237,  236,  235,  233,  232,  231,
+
+      230,  229,  228,  227,  226,  225,  223,  222,  221,  220,
+      219,  218,  217,  216,  215,  214,  213,  212,  211,  210,
+      209,  208,  207,  206,  205,  204,  203,  202,  200,  199,
+      198,  196,  193,  191,  189,  187,  186,  181,  177,  169,
+      168,  167,  166,  165,  164,  163,  162,  161,  158,  157,
+      156,  154,  153,  151,  150,  149,  148,  147,  146,  145,
+      144,  142,  141,  140,  139,  138,  137,  136,  134,  133,
+      131,  127,  126,  125,  123,  122,  121,  119,  118,  114,
+      108,  104,  103,   97,   96,   77,   72,   66,   63,   49,
+       48,   43,   41,   39,   38,   24,   14,   11, 1235, 1235,
+
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1546,7 +1546,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[158] =
+static const flex_int16_t yy_rule_linenum[159] =
     {   0,
       135,  137,  139,  144,  145,  150,  151,  152,  164,  167,
       172,  179,  188,  197,  206,  215,  224,  233,  242,  251,
@@ -1555,16 +1555,16 @@ static const flex_int16_t yy_rule_linenum[158] =
       449,  458,  470,  479,  488,  497,  506,  516,  526,  536,
       546,  557,  567,  577,  587,  597,  607,  617,  627,  637,
       646,  655,  664,  679,  694,  703,  712,  721,  730,  739,
-      748,  757,  766,  775,  785,  794,  803,  812,  821,  830,
-      839,  848,  857,  866,  875,  885,  894,  903,  912,  921,
-      930,  939,  948,  957,  966,  976,  985,  994, 1004, 1014,
+      748,  757,  766,  775,  784,  794,  803,  812,  821,  830,
+      839,  848,  857,  866,  875,  884,  894,  903,  912,  921,
+      930,  939,  948,  957,  966,  975,  985,  994, 1003, 1013,
 
-     1024, 1033, 1042, 1051, 1062, 1072, 1081, 1091, 1101, 1110,
-     1119, 1128, 1137, 1146, 1155, 1165, 1174, 1183, 1192, 1201,
+     1023, 1033, 1042, 1051, 1060, 1071, 1081, 1090, 1100, 1110,
+     1119, 1128, 1137, 1146, 1155, 1164, 1174, 1183, 1192, 1201,
      1210, 1219, 1228, 1237, 1246, 1255, 1264, 1273, 1282, 1291,
      1300, 1309, 1318, 1327, 1336, 1345, 1354, 1363, 1372, 1381,
-     1479, 1484, 1489, 1494, 1495, 1496, 1497, 1498, 1499, 1501,
-     1519, 1532, 1537, 1541, 1543, 1545, 1547
+     1390, 1488, 1493, 1498, 1503, 1504, 1505, 1506, 1507, 1508,
+     1510, 1528, 1541, 1546, 1550, 1552, 1554, 1556
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1991,13 +1991,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 >= 1232 )
+                               if ( yy_current_state >= 1236 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1231 );
+               while ( yy_current_state != 1235 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2016,13 +2016,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 < 158 )
+                       else if ( yy_act < 159 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 158 )
+                       else if ( yy_act == 159 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 159 )
+                       else if ( yy_act == 160 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2815,6 +2815,18 @@ YY_RULE_SETUP
 case 66:
 YY_RULE_SETUP
 #line 703 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OPTION_DATA:
+        return isc::dhcp::Dhcp6Parser::make_PERSISTENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("persistent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 712 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2824,9 +2836,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 712 "dhcp6_lexer.ll"
+#line 721 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2836,9 +2848,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 721 "dhcp6_lexer.ll"
+#line 730 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2848,9 +2860,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 730 "dhcp6_lexer.ll"
+#line 739 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2860,9 +2872,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 739 "dhcp6_lexer.ll"
+#line 748 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2872,9 +2884,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 748 "dhcp6_lexer.ll"
+#line 757 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2884,9 +2896,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 757 "dhcp6_lexer.ll"
+#line 766 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2896,9 +2908,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 766 "dhcp6_lexer.ll"
+#line 775 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -2908,9 +2920,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 775 "dhcp6_lexer.ll"
+#line 784 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -2921,9 +2933,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 785 "dhcp6_lexer.ll"
+#line 794 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2933,9 +2945,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 794 "dhcp6_lexer.ll"
+#line 803 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2945,9 +2957,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 803 "dhcp6_lexer.ll"
+#line 812 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2957,9 +2969,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 812 "dhcp6_lexer.ll"
+#line 821 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2969,9 +2981,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 821 "dhcp6_lexer.ll"
+#line 830 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2981,9 +2993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 830 "dhcp6_lexer.ll"
+#line 839 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2993,9 +3005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 839 "dhcp6_lexer.ll"
+#line 848 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3005,9 +3017,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 848 "dhcp6_lexer.ll"
+#line 857 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3017,9 +3029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 857 "dhcp6_lexer.ll"
+#line 866 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3029,9 +3041,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 866 "dhcp6_lexer.ll"
+#line 875 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3041,9 +3053,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 875 "dhcp6_lexer.ll"
+#line 884 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3054,9 +3066,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 885 "dhcp6_lexer.ll"
+#line 894 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3066,9 +3078,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 894 "dhcp6_lexer.ll"
+#line 903 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3078,9 +3090,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 903 "dhcp6_lexer.ll"
+#line 912 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3090,9 +3102,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 912 "dhcp6_lexer.ll"
+#line 921 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3102,9 +3114,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 921 "dhcp6_lexer.ll"
+#line 930 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3114,9 +3126,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 930 "dhcp6_lexer.ll"
+#line 939 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3126,9 +3138,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 939 "dhcp6_lexer.ll"
+#line 948 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3138,9 +3150,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 948 "dhcp6_lexer.ll"
+#line 957 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3150,9 +3162,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 957 "dhcp6_lexer.ll"
+#line 966 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3162,9 +3174,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 966 "dhcp6_lexer.ll"
+#line 975 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3174,9 +3186,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 976 "dhcp6_lexer.ll"
+#line 985 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3186,9 +3198,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 985 "dhcp6_lexer.ll"
+#line 994 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3198,9 +3210,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 994 "dhcp6_lexer.ll"
+#line 1003 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3211,9 +3223,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 1004 "dhcp6_lexer.ll"
+#line 1013 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3224,9 +3236,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1014 "dhcp6_lexer.ll"
+#line 1023 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3237,9 +3249,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1024 "dhcp6_lexer.ll"
+#line 1033 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3249,9 +3261,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1033 "dhcp6_lexer.ll"
+#line 1042 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3261,9 +3273,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1042 "dhcp6_lexer.ll"
+#line 1051 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3273,9 +3285,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1051 "dhcp6_lexer.ll"
+#line 1060 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3287,9 +3299,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1062 "dhcp6_lexer.ll"
+#line 1071 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3300,9 +3312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1072 "dhcp6_lexer.ll"
+#line 1081 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3312,9 +3324,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1081 "dhcp6_lexer.ll"
+#line 1090 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3325,9 +3337,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1091 "dhcp6_lexer.ll"
+#line 1100 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3338,9 +3350,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1101 "dhcp6_lexer.ll"
+#line 1110 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3350,9 +3362,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1110 "dhcp6_lexer.ll"
+#line 1119 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3362,9 +3374,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1119 "dhcp6_lexer.ll"
+#line 1128 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3374,9 +3386,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1128 "dhcp6_lexer.ll"
+#line 1137 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3386,9 +3398,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1137 "dhcp6_lexer.ll"
+#line 1146 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3398,9 +3410,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1146 "dhcp6_lexer.ll"
+#line 1155 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3410,9 +3422,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1155 "dhcp6_lexer.ll"
+#line 1164 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3422,9 +3434,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1165 "dhcp6_lexer.ll"
+#line 1174 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3434,9 +3446,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1174 "dhcp6_lexer.ll"
+#line 1183 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3446,9 +3458,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1183 "dhcp6_lexer.ll"
+#line 1192 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3458,9 +3470,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1192 "dhcp6_lexer.ll"
+#line 1201 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3470,9 +3482,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1201 "dhcp6_lexer.ll"
+#line 1210 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3482,9 +3494,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1210 "dhcp6_lexer.ll"
+#line 1219 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3494,9 +3506,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1219 "dhcp6_lexer.ll"
+#line 1228 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3506,9 +3518,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1228 "dhcp6_lexer.ll"
+#line 1237 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3518,9 +3530,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1237 "dhcp6_lexer.ll"
+#line 1246 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3530,9 +3542,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1246 "dhcp6_lexer.ll"
+#line 1255 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3542,9 +3554,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1255 "dhcp6_lexer.ll"
+#line 1264 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3554,9 +3566,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1264 "dhcp6_lexer.ll"
+#line 1273 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3566,9 +3578,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1273 "dhcp6_lexer.ll"
+#line 1282 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3578,9 +3590,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1282 "dhcp6_lexer.ll"
+#line 1291 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3590,9 +3602,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1291 "dhcp6_lexer.ll"
+#line 1300 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3602,9 +3614,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1300 "dhcp6_lexer.ll"
+#line 1309 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3614,9 +3626,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1309 "dhcp6_lexer.ll"
+#line 1318 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3626,9 +3638,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1318 "dhcp6_lexer.ll"
+#line 1327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3638,9 +3650,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1327 "dhcp6_lexer.ll"
+#line 1336 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3650,9 +3662,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1336 "dhcp6_lexer.ll"
+#line 1345 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3662,9 +3674,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1345 "dhcp6_lexer.ll"
+#line 1354 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3674,9 +3686,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1354 "dhcp6_lexer.ll"
+#line 1363 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3686,9 +3698,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1363 "dhcp6_lexer.ll"
+#line 1372 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3698,9 +3710,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1372 "dhcp6_lexer.ll"
+#line 1381 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3710,9 +3722,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1381 "dhcp6_lexer.ll"
+#line 1390 "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.
@@ -3811,65 +3823,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 141:
-/* rule 141 can match eol */
+case 142:
+/* rule 142 can match eol */
 YY_RULE_SETUP
-#line 1479 "dhcp6_lexer.ll"
+#line 1488 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 142:
-/* rule 142 can match eol */
+case 143:
+/* rule 143 can match eol */
 YY_RULE_SETUP
-#line 1484 "dhcp6_lexer.ll"
+#line 1493 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1489 "dhcp6_lexer.ll"
+#line 1498 "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 144:
+case 145:
 YY_RULE_SETUP
-#line 1494 "dhcp6_lexer.ll"
+#line 1503 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1495 "dhcp6_lexer.ll"
+#line 1504 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1496 "dhcp6_lexer.ll"
+#line 1505 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1497 "dhcp6_lexer.ll"
+#line 1506 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1498 "dhcp6_lexer.ll"
+#line 1507 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1499 "dhcp6_lexer.ll"
+#line 1508 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1501 "dhcp6_lexer.ll"
+#line 1510 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -3888,9 +3900,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1519 "dhcp6_lexer.ll"
+#line 1528 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -3904,43 +3916,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 1537 "dhcp6_lexer.ll"
+#line 1546 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 1541 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 1543 "dhcp6_lexer.ll"
+#line 1552 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 1545 "dhcp6_lexer.ll"
+#line 1554 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 1547 "dhcp6_lexer.ll"
+#line 1556 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1549 "dhcp6_lexer.ll"
+#line 1558 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -3964,12 +3976,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 1572 "dhcp6_lexer.ll"
+#line 1581 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3972 "dhcp6_lexer.cc"
+#line 3984 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4288,7 +4300,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 >= 1232 )
+                       if ( yy_current_state >= 1236 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4321,11 +4333,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 >= 1232 )
+               if ( yy_current_state >= 1236 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1231);
+       yy_is_jam = (yy_current_state == 1235);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5074,7 +5086,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1572 "dhcp6_lexer.ll"
+#line 1581 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 248a81ffb24dd61a5e6a3278ca6c482a5c3364f4..50b9fa9d42f79fbeeff1d2143655e10453191924 100644 (file)
@@ -699,6 +699,15 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"persistent\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OPTION_DATA:
+        return isc::dhcp::Dhcp6Parser::make_PERSISTENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("persistent", driver.loc_);
+    }
+}
+
 \"pools\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
index c24f86f3b63e026fe8549195375ada7fb09ee833..d94aa9bfd2254c432ee0dacd24d00b5aa763f6de 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "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 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 147: // "constant string"
+            case 148: // "constant string"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 165: // value
+      case 166: // value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 169: // map_value
+      case 170: // map_value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 213: // db_type
+      case 214: // db_type
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 289: // hr_mode
+      case 290: // hr_mode
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 409: // duid_type
+      case 411: // duid_type
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 442: // ncr_protocol_value
+      case 444: // ncr_protocol_value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 450: // replace_client_name_value
+      case 452: // replace_client_name_value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "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 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,121 +674,121 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 232 "dhcp6_parser.yy" // lalr1.cc:859
+#line 233 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 233 "dhcp6_parser.yy" // lalr1.cc:859
+#line 234 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 234 "dhcp6_parser.yy" // lalr1.cc:859
+#line 235 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 235 "dhcp6_parser.yy" // lalr1.cc:859
+#line 236 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 236 "dhcp6_parser.yy" // lalr1.cc:859
+#line 237 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 237 "dhcp6_parser.yy" // lalr1.cc:859
+#line 238 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 238 "dhcp6_parser.yy" // lalr1.cc:859
+#line 239 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 239 "dhcp6_parser.yy" // lalr1.cc:859
+#line 240 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 240 "dhcp6_parser.yy" // lalr1.cc:859
+#line 241 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 241 "dhcp6_parser.yy" // lalr1.cc:859
+#line 242 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 242 "dhcp6_parser.yy" // lalr1.cc:859
+#line 243 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 243 "dhcp6_parser.yy" // lalr1.cc:859
+#line 244 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 251 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "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 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 252 "dhcp6_parser.yy" // lalr1.cc:859
+#line 253 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 253 "dhcp6_parser.yy" // lalr1.cc:859
+#line 254 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 254 "dhcp6_parser.yy" // lalr1.cc:859
+#line 255 "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 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 255 "dhcp6_parser.yy" // lalr1.cc:859
+#line 256 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 257 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 257 "dhcp6_parser.yy" // lalr1.cc:859
+#line 258 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:859
+#line 261 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -797,7 +797,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:859
+#line 266 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -808,7 +808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 35:
-#line 270 "dhcp6_parser.yy" // lalr1.cc:859
+#line 271 "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
@@ -818,13 +818,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 276 "dhcp6_parser.yy" // lalr1.cc:859
+#line 277 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 824 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 283 "dhcp6_parser.yy" // lalr1.cc:859
+#line 284 "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 > ());
@@ -833,7 +833,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 287 "dhcp6_parser.yy" // lalr1.cc:859
+#line 288 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -843,7 +843,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 294 "dhcp6_parser.yy" // lalr1.cc:859
+#line 295 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -852,7 +852,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 297 "dhcp6_parser.yy" // lalr1.cc:859
+#line 298 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -860,7 +860,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 305 "dhcp6_parser.yy" // lalr1.cc:859
+#line 306 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -869,7 +869,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 309 "dhcp6_parser.yy" // lalr1.cc:859
+#line 310 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -878,7 +878,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 316 "dhcp6_parser.yy" // lalr1.cc:859
+#line 317 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -886,7 +886,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 318 "dhcp6_parser.yy" // lalr1.cc:859
+#line 319 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -895,7 +895,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 327 "dhcp6_parser.yy" // lalr1.cc:859
+#line 328 "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);
@@ -904,7 +904,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 331 "dhcp6_parser.yy" // lalr1.cc:859
+#line 332 "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);
@@ -913,7 +913,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 342 "dhcp6_parser.yy" // lalr1.cc:859
+#line 343 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -924,7 +924,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 352 "dhcp6_parser.yy" // lalr1.cc:859
+#line 353 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -935,7 +935,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 357 "dhcp6_parser.yy" // lalr1.cc:859
+#line 358 "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
@@ -945,7 +945,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 63:
-#line 376 "dhcp6_parser.yy" // lalr1.cc:859
+#line 377 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -958,7 +958,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64:
-#line 383 "dhcp6_parser.yy" // lalr1.cc:859
+#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
@@ -970,7 +970,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 65:
-#line 393 "dhcp6_parser.yy" // lalr1.cc:859
+#line 394 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -980,7 +980,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 66:
-#line 397 "dhcp6_parser.yy" // lalr1.cc:859
+#line 398 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -988,7 +988,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 91:
-#line 431 "dhcp6_parser.yy" // lalr1.cc:859
+#line 432 "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);
@@ -997,7 +997,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 92:
-#line 436 "dhcp6_parser.yy" // lalr1.cc:859
+#line 437 "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);
@@ -1006,7 +1006,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 93:
-#line 441 "dhcp6_parser.yy" // lalr1.cc:859
+#line 442 "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);
@@ -1015,7 +1015,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 446 "dhcp6_parser.yy" // lalr1.cc:859
+#line 447 "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);
@@ -1024,7 +1024,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 451 "dhcp6_parser.yy" // lalr1.cc:859
+#line 452 "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);
@@ -1033,7 +1033,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 96:
-#line 456 "dhcp6_parser.yy" // lalr1.cc:859
+#line 457 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1044,7 +1044,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 97:
-#line 461 "dhcp6_parser.yy" // lalr1.cc:859
+#line 462 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1053,7 +1053,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 98:
-#line 466 "dhcp6_parser.yy" // lalr1.cc:859
+#line 467 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1063,7 +1063,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 99:
-#line 470 "dhcp6_parser.yy" // lalr1.cc:859
+#line 471 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1071,7 +1071,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 104:
-#line 482 "dhcp6_parser.yy" // lalr1.cc:859
+#line 483 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1082,7 +1082,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 105:
-#line 487 "dhcp6_parser.yy" // lalr1.cc:859
+#line 488 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1091,7 +1091,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 106:
-#line 492 "dhcp6_parser.yy" // lalr1.cc:859
+#line 493 "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);
@@ -1100,7 +1100,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 107:
-#line 498 "dhcp6_parser.yy" // lalr1.cc:859
+#line 499 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1111,7 +1111,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 108:
-#line 503 "dhcp6_parser.yy" // lalr1.cc:859
+#line 504 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1120,7 +1120,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 109:
-#line 508 "dhcp6_parser.yy" // lalr1.cc:859
+#line 509 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1131,7 +1131,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 110:
-#line 513 "dhcp6_parser.yy" // lalr1.cc:859
+#line 514 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1140,7 +1140,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 126:
-#line 537 "dhcp6_parser.yy" // lalr1.cc:859
+#line 538 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
@@ -1148,7 +1148,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 127:
-#line 539 "dhcp6_parser.yy" // lalr1.cc:859
+#line 540 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1157,31 +1157,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 128:
-#line 544 "dhcp6_parser.yy" // lalr1.cc:859
+#line 545 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1163 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 129:
-#line 545 "dhcp6_parser.yy" // lalr1.cc:859
+#line 546 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1169 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 130:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:859
+#line 547 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1175 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 131:
-#line 547 "dhcp6_parser.yy" // lalr1.cc:859
+#line 548 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1181 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 550 "dhcp6_parser.yy" // lalr1.cc:859
+#line 551 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1189,7 +1189,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 133:
-#line 552 "dhcp6_parser.yy" // lalr1.cc:859
+#line 553 "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);
@@ -1199,7 +1199,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 134:
-#line 558 "dhcp6_parser.yy" // lalr1.cc:859
+#line 559 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1207,7 +1207,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 135:
-#line 560 "dhcp6_parser.yy" // lalr1.cc:859
+#line 561 "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);
@@ -1217,7 +1217,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 136:
-#line 566 "dhcp6_parser.yy" // lalr1.cc:859
+#line 567 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1225,7 +1225,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 137:
-#line 568 "dhcp6_parser.yy" // lalr1.cc:859
+#line 569 "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);
@@ -1235,7 +1235,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 138:
-#line 574 "dhcp6_parser.yy" // lalr1.cc:859
+#line 575 "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);
@@ -1244,7 +1244,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 139:
-#line 579 "dhcp6_parser.yy" // lalr1.cc:859
+#line 580 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1252,7 +1252,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 140:
-#line 581 "dhcp6_parser.yy" // lalr1.cc:859
+#line 582 "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);
@@ -1262,7 +1262,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141:
-#line 587 "dhcp6_parser.yy" // lalr1.cc:859
+#line 588 "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);
@@ -1271,7 +1271,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142:
-#line 592 "dhcp6_parser.yy" // lalr1.cc:859
+#line 593 "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);
@@ -1280,7 +1280,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143:
-#line 597 "dhcp6_parser.yy" // lalr1.cc:859
+#line 598 "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);
@@ -1289,7 +1289,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144:
-#line 602 "dhcp6_parser.yy" // lalr1.cc:859
+#line 603 "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);
@@ -1298,7 +1298,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145:
-#line 607 "dhcp6_parser.yy" // lalr1.cc:859
+#line 608 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1306,7 +1306,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 146:
-#line 609 "dhcp6_parser.yy" // lalr1.cc:859
+#line 610 "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);
@@ -1316,7 +1316,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 147:
-#line 615 "dhcp6_parser.yy" // lalr1.cc:859
+#line 616 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1324,7 +1324,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 148:
-#line 617 "dhcp6_parser.yy" // lalr1.cc:859
+#line 618 "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);
@@ -1334,7 +1334,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 149:
-#line 624 "dhcp6_parser.yy" // lalr1.cc:859
+#line 625 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
@@ -1345,7 +1345,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150:
-#line 629 "dhcp6_parser.yy" // lalr1.cc:859
+#line 630 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1354,7 +1354,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 155:
-#line 642 "dhcp6_parser.yy" // lalr1.cc:859
+#line 643 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1363,7 +1363,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 156:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+#line 648 "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);
@@ -1372,7 +1372,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 157:
-#line 652 "dhcp6_parser.yy" // lalr1.cc:859
+#line 653 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1383,7 +1383,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 158:
-#line 657 "dhcp6_parser.yy" // lalr1.cc:859
+#line 658 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1392,7 +1392,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164:
-#line 671 "dhcp6_parser.yy" // lalr1.cc:859
+#line 672 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1401,7 +1401,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 165:
-#line 676 "dhcp6_parser.yy" // lalr1.cc:859
+#line 677 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -1410,7 +1410,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 166:
-#line 683 "dhcp6_parser.yy" // lalr1.cc:859
+#line 684 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
@@ -1421,7 +1421,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 167:
-#line 688 "dhcp6_parser.yy" // lalr1.cc:859
+#line 689 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1430,7 +1430,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 168:
-#line 693 "dhcp6_parser.yy" // lalr1.cc:859
+#line 694 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1441,7 +1441,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 169:
-#line 698 "dhcp6_parser.yy" // lalr1.cc:859
+#line 699 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1450,7 +1450,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 174:
-#line 711 "dhcp6_parser.yy" // lalr1.cc:859
+#line 712 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1460,7 +1460,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 175:
-#line 715 "dhcp6_parser.yy" // lalr1.cc:859
+#line 716 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1468,7 +1468,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 176:
-#line 719 "dhcp6_parser.yy" // lalr1.cc:859
+#line 720 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1478,7 +1478,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 177:
-#line 723 "dhcp6_parser.yy" // lalr1.cc:859
+#line 724 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1486,7 +1486,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 183:
-#line 736 "dhcp6_parser.yy" // lalr1.cc:859
+#line 737 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1494,7 +1494,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 184:
-#line 738 "dhcp6_parser.yy" // lalr1.cc:859
+#line 739 "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);
@@ -1504,7 +1504,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 185:
-#line 744 "dhcp6_parser.yy" // lalr1.cc:859
+#line 745 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1512,7 +1512,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 186:
-#line 746 "dhcp6_parser.yy" // lalr1.cc:859
+#line 747 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1521,7 +1521,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 187:
-#line 752 "dhcp6_parser.yy" // lalr1.cc:859
+#line 753 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1532,7 +1532,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 188:
-#line 757 "dhcp6_parser.yy" // lalr1.cc:859
+#line 758 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1541,7 +1541,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197:
-#line 774 "dhcp6_parser.yy" // lalr1.cc:859
+#line 775 "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);
@@ -1550,7 +1550,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 198:
-#line 779 "dhcp6_parser.yy" // lalr1.cc:859
+#line 780 "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);
@@ -1559,7 +1559,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 199:
-#line 784 "dhcp6_parser.yy" // lalr1.cc:859
+#line 785 "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);
@@ -1568,7 +1568,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 200:
-#line 789 "dhcp6_parser.yy" // lalr1.cc:859
+#line 790 "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);
@@ -1577,7 +1577,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 201:
-#line 794 "dhcp6_parser.yy" // lalr1.cc:859
+#line 795 "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);
@@ -1586,7 +1586,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 202:
-#line 799 "dhcp6_parser.yy" // lalr1.cc:859
+#line 800 "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);
@@ -1595,7 +1595,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 203:
-#line 807 "dhcp6_parser.yy" // lalr1.cc:859
+#line 808 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
@@ -1606,7 +1606,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 204:
-#line 812 "dhcp6_parser.yy" // lalr1.cc:859
+#line 813 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1615,7 +1615,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 209:
-#line 832 "dhcp6_parser.yy" // lalr1.cc:859
+#line 833 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1625,7 +1625,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 210:
-#line 836 "dhcp6_parser.yy" // lalr1.cc:859
+#line 837 "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.
@@ -1648,7 +1648,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 211:
-#line 855 "dhcp6_parser.yy" // lalr1.cc:859
+#line 856 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1658,7 +1658,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 212:
-#line 859 "dhcp6_parser.yy" // lalr1.cc:859
+#line 860 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1666,7 +1666,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 232:
-#line 888 "dhcp6_parser.yy" // lalr1.cc:859
+#line 889 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1674,7 +1674,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233:
-#line 890 "dhcp6_parser.yy" // lalr1.cc:859
+#line 891 "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);
@@ -1684,7 +1684,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 234:
-#line 896 "dhcp6_parser.yy" // lalr1.cc:859
+#line 897 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1692,7 +1692,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 235:
-#line 898 "dhcp6_parser.yy" // lalr1.cc:859
+#line 899 "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);
@@ -1702,7 +1702,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 236:
-#line 904 "dhcp6_parser.yy" // lalr1.cc:859
+#line 905 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1710,7 +1710,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 237:
-#line 906 "dhcp6_parser.yy" // lalr1.cc:859
+#line 907 "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);
@@ -1720,7 +1720,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 238:
-#line 912 "dhcp6_parser.yy" // lalr1.cc:859
+#line 913 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
@@ -1728,7 +1728,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 239:
-#line 914 "dhcp6_parser.yy" // lalr1.cc:859
+#line 915 "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);
@@ -1738,7 +1738,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 240:
-#line 920 "dhcp6_parser.yy" // lalr1.cc:859
+#line 921 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
@@ -1746,7 +1746,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 241:
-#line 922 "dhcp6_parser.yy" // lalr1.cc:859
+#line 923 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1755,25 +1755,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 242:
-#line 927 "dhcp6_parser.yy" // lalr1.cc:859
+#line 928 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 1761 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 243:
-#line 928 "dhcp6_parser.yy" // lalr1.cc:859
+#line 929 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 1767 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 244:
-#line 929 "dhcp6_parser.yy" // lalr1.cc:859
+#line 930 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 1773 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 245:
-#line 932 "dhcp6_parser.yy" // lalr1.cc:859
+#line 933 "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);
@@ -1782,7 +1782,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 246:
-#line 937 "dhcp6_parser.yy" // lalr1.cc:859
+#line 938 "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);
@@ -1791,7 +1791,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 247:
-#line 946 "dhcp6_parser.yy" // lalr1.cc:859
+#line 947 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1802,7 +1802,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 248:
-#line 951 "dhcp6_parser.yy" // lalr1.cc:859
+#line 952 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1811,7 +1811,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 253:
-#line 968 "dhcp6_parser.yy" // lalr1.cc:859
+#line 969 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1821,7 +1821,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 254:
-#line 972 "dhcp6_parser.yy" // lalr1.cc:859
+#line 973 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1829,7 +1829,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 255:
-#line 979 "dhcp6_parser.yy" // lalr1.cc:859
+#line 980 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1839,7 +1839,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 256:
-#line 983 "dhcp6_parser.yy" // lalr1.cc:859
+#line 984 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1847,7 +1847,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 270:
-#line 1009 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1010 "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);
@@ -1856,7 +1856,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 272:
-#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1017 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1864,7 +1864,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 273:
-#line 1018 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1019 "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);
@@ -1874,7 +1874,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 274:
-#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1025 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1882,7 +1882,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 275:
-#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1027 "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);
@@ -1892,7 +1892,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 276:
-#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1033 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1900,7 +1900,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 277:
-#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1035 "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);
@@ -1910,7 +1910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 279:
-#line 1042 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1043 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1918,7 +1918,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 280:
-#line 1044 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1045 "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);
@@ -1928,7 +1928,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 281:
-#line 1050 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1051 "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);
@@ -1937,7 +1937,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 282:
-#line 1059 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1060 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -1948,7 +1948,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 283:
-#line 1064 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1065 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1957,7 +1957,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 288:
-#line 1083 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1084 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1967,7 +1967,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 289:
-#line 1087 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1088 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1975,7 +1975,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 290:
-#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1095 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1985,23 +1985,23 @@ namespace isc { namespace dhcp {
     break;
 
   case 291:
-#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1099 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1127 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2001 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1131 "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);
@@ -2010,8 +2010,8 @@ namespace isc { namespace dhcp {
 #line 2011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
+  case 308:
+#line 1141 "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);
@@ -2019,1145 +2019,1154 @@ namespace isc { namespace dhcp {
 #line 2020 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1147 "dhcp6_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1146 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("persistent", persist);
+}
+#line 2029 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 310:
+#line 1154 "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 2031 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2040 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1159 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2040 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2049 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1174 "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 2050 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2059 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
+  case 317:
+#line 1178 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2058 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2067 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1175 "dhcp6_parser.yy" // lalr1.cc:859
+  case 318:
+#line 1182 "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 2068 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1179 "dhcp6_parser.yy" // lalr1.cc:859
+  case 319:
+#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2076 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2085 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1193 "dhcp6_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1200 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2084 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2093 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1202 "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 2094 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2103 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1208 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2102 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1210 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2111 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1211 "dhcp6_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1218 "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 2122 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1216 "dhcp6_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1223 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2131 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1231 "dhcp6_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1238 "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 2141 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2150 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1242 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2149 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2158 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1239 "dhcp6_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1246 "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 2159 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2168 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1250 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2167 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2176 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 348:
-#line 1261 "dhcp6_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2175 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2184 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1263 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1270 "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 2185 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1269 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1276 "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 2194 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2203 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1274 "dhcp6_parser.yy" // lalr1.cc:859
+  case 353:
+#line 1281 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2202 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2211 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 352:
-#line 1276 "dhcp6_parser.yy" // lalr1.cc:859
+  case 354:
+#line 1283 "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 2212 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2221 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1282 "dhcp6_parser.yy" // lalr1.cc:859
+  case 355:
+#line 1289 "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 2221 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 354:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1294 "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 2230 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2239 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 355:
-#line 1295 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1302 "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 2241 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2250 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1300 "dhcp6_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1307 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2250 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2259 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1313 "dhcp6_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1320 "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 2260 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2269 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1317 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1324 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2268 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2277 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1321 "dhcp6_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1328 "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 2278 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2287 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1325 "dhcp6_parser.yy" // lalr1.cc:859
+  case 366:
+#line 1332 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2286 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2295 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1349 "dhcp6_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1356 "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 2297 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1354 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1361 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2306 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2315 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1359 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1366 "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 2317 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2326 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1364 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1371 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2326 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2335 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1376 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2334 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2343 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1371 "dhcp6_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1378 "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 2344 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2353 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1384 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2352 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2361 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1386 "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 2362 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2371 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1392 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2370 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2379 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1387 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1394 "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 2380 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2389 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1400 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2388 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2397 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1395 "dhcp6_parser.yy" // lalr1.cc:859
+  case 391:
+#line 1402 "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 2398 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2407 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1401 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1408 "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 2409 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2418 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1406 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1413 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2418 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2427 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1421 "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 2429 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1419 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2447 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1424 "dhcp6_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1431 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2446 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2455 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
+  case 397:
+#line 1433 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2456 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2465 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 396:
-#line 1435 "dhcp6_parser.yy" // lalr1.cc:859
+  case 398:
+#line 1442 "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 2467 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2476 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1440 "dhcp6_parser.yy" // lalr1.cc:859
+  case 399:
+#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2476 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2485 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1449 "dhcp6_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1456 "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 2486 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2495 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1453 "dhcp6_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1460 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2494 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2503 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 411:
-#line 1473 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1480 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2502 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2511 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1475 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1482 "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 2512 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2521 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1484 "dhcp6_parser.yy" // lalr1.cc:859
+  case 415:
+#line 1491 "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 2523 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1489 "dhcp6_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1496 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1507 "dhcp6_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1516 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2558 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1521 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2555 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2564 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 427:
-#line 1515 "dhcp6_parser.yy" // lalr1.cc:859
+  case 429:
+#line 1522 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2561 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2570 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 428:
-#line 1516 "dhcp6_parser.yy" // lalr1.cc:859
+  case 430:
+#line 1523 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2567 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 429:
-#line 1519 "dhcp6_parser.yy" // lalr1.cc:859
+  case 431:
+#line 1526 "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 2576 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2585 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
+  case 432:
+#line 1531 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2584 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2593 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1526 "dhcp6_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1533 "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 2594 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2603 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1532 "dhcp6_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1539 "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 2603 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2612 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 435:
+#line 1544 "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 2612 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2621 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 434:
-#line 1544 "dhcp6_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1551 "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 2621 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2630 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 435:
-#line 1551 "dhcp6_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1558 "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 2632 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2641 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1556 "dhcp6_parser.yy" // lalr1.cc:859
+  case 438:
+#line 1563 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2641 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2650 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2649 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2658 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1571 "dhcp6_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1578 "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 2659 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2668 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1577 "dhcp6_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1584 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2667 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2676 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1579 "dhcp6_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1586 "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 2677 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1587 "dhcp6_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1594 "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 2688 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1592 "dhcp6_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1599 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1597 "dhcp6_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1604 "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 2707 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1601 "dhcp6_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1608 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2715 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2724 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1633 "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 2724 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2733 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1631 "dhcp6_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1638 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2732 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2741 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1633 "dhcp6_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1640 "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 2742 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2751 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1639 "dhcp6_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1646 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2750 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2759 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1641 "dhcp6_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1648 "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 2760 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2769 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1654 "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 2769 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2778 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1652 "dhcp6_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1659 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2777 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2786 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1654 "dhcp6_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1661 "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 2787 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2796 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1660 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1667 "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 2796 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2805 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1665 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1672 "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 2805 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2814 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1677 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2813 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2822 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1679 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2822 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2831 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1678 "dhcp6_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1685 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2828 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2837 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1679 "dhcp6_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1686 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2834 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2843 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1682 "dhcp6_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2842 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2851 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1684 "dhcp6_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1691 "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 2852 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1690 "dhcp6_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1697 "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 2861 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2870 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1695 "dhcp6_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1702 "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 2870 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2879 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1700 "dhcp6_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1707 "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 2879 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2888 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
+  case 487:
+#line 1712 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 2887 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2896 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
+  case 488:
+#line 1714 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2896 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2905 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1713 "dhcp6_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1720 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 2904 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2913 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
+  case 490:
+#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2912 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2921 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1719 "dhcp6_parser.yy" // lalr1.cc:859
+  case 491:
+#line 1726 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2920 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2929 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1722 "dhcp6_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1729 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2928 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2937 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1732 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 2937 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2946 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1738 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2945 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2954 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1733 "dhcp6_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1740 "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 2955 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2964 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1741 "dhcp6_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1748 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2963 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2972 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1750 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2972 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2981 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 496:
-#line 1748 "dhcp6_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1755 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2980 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1750 "dhcp6_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2998 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1760 "dhcp6_parser.yy" // lalr1.cc:859
+  case 500:
+#line 1767 "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 3000 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 499:
-#line 1765 "dhcp6_parser.yy" // lalr1.cc:859
+  case 501:
+#line 1772 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3018 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1782 "dhcp6_parser.yy" // lalr1.cc:859
+  case 505:
+#line 1789 "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 3020 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1787 "dhcp6_parser.yy" // lalr1.cc:859
+  case 506:
+#line 1794 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3038 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1799 "dhcp6_parser.yy" // lalr1.cc:859
+  case 509:
+#line 1806 "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 3039 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3048 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 508:
-#line 1803 "dhcp6_parser.yy" // lalr1.cc:859
+  case 510:
+#line 1810 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3047 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3056 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 516:
-#line 1818 "dhcp6_parser.yy" // lalr1.cc:859
+  case 518:
+#line 1825 "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 3056 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3065 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 517:
-#line 1823 "dhcp6_parser.yy" // lalr1.cc:859
+  case 519:
+#line 1830 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3064 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3073 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 518:
-#line 1825 "dhcp6_parser.yy" // lalr1.cc:859
+  case 520:
+#line 1832 "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 3074 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3083 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 519:
-#line 1831 "dhcp6_parser.yy" // lalr1.cc:859
+  case 521:
+#line 1838 "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 3085 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3094 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 520:
-#line 1836 "dhcp6_parser.yy" // lalr1.cc:859
+  case 522:
+#line 1843 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3094 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3103 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 523:
-#line 1845 "dhcp6_parser.yy" // lalr1.cc:859
+  case 525:
+#line 1852 "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 3104 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3113 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 524:
-#line 1849 "dhcp6_parser.yy" // lalr1.cc:859
+  case 526:
+#line 1856 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3112 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3121 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1863 "dhcp6_parser.yy" // lalr1.cc:859
+  case 533:
+#line 1870 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3120 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3129 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1865 "dhcp6_parser.yy" // lalr1.cc:859
+  case 534:
+#line 1872 "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 3130 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3139 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1871 "dhcp6_parser.yy" // lalr1.cc:859
+  case 535:
+#line 1878 "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 3139 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3148 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1876 "dhcp6_parser.yy" // lalr1.cc:859
+  case 536:
+#line 1883 "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 3148 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3157 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 535:
-#line 1881 "dhcp6_parser.yy" // lalr1.cc:859
+  case 537:
+#line 1888 "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 3157 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3166 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3170 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3412,102 +3421,103 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -498;
+  const short int Dhcp6Parser::yypact_ninf_ = -502;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-      56,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,    39,    20,    41,    84,   115,   117,   123,
-     138,   196,   198,   224,   246,   257,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-      20,   119,    18,    27,   151,    19,    -1,    33,    85,    28,
-      59,   -36,   104,  -498,   264,   277,   282,   279,   289,  -498,
-    -498,  -498,  -498,   299,  -498,   101,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,   301,   302,   309,   316,   317,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   318,
-    -498,  -498,  -498,   169,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   319,   170,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   320,   321,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   173,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   176,  -498,  -498,
-    -498,  -498,   322,  -498,   323,   324,  -498,  -498,  -498,   179,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,   285,   326,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   327,  -498,  -498,
-    -498,   328,  -498,  -498,   325,   331,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   332,  -498,  -498,
-    -498,  -498,   329,   335,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,   218,  -498,  -498,  -498,   336,  -498,  -498,
-     337,  -498,   338,   339,  -498,  -498,   340,   341,   342,  -498,
-    -498,  -498,   219,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    20,
-      20,  -498,   188,   343,   344,   345,   346,  -498,    18,  -498,
-     347,   348,   349,   191,   206,   207,   209,   210,   352,   355,
-     356,   357,   358,   359,   360,   361,   362,   363,   221,   364,
-     366,    27,  -498,   367,   222,   151,  -498,    43,   369,   370,
-     371,   372,   373,   233,   228,   375,   376,   378,   379,    19,
-    -498,   380,   381,    -1,  -498,   382,   243,   383,   244,   245,
-      33,  -498,   384,   385,   386,   390,   391,   392,   393,  -498,
-      85,   394,   395,   255,   396,   397,   398,   256,  -498,    28,
-     400,   258,  -498,    59,   401,   403,   -26,  -498,   261,   408,
-     409,   266,   411,   268,   269,   414,   415,   270,   271,   273,
-     418,   420,   104,  -498,  -498,  -498,   421,   419,   422,    20,
-      20,  -498,   423,   424,   425,  -498,  -498,  -498,  -498,  -498,
-     428,   429,   430,   431,   432,   435,   436,   439,   438,   440,
-    -498,   441,   443,  -498,   447,  -498,  -498,  -498,  -498,  -498,
-    -498,   445,   451,  -498,  -498,  -498,   450,   452,   280,   281,
-     311,  -498,  -498,    92,   312,   456,   455,  -498,   330,   457,
-    -498,   333,  -498,   334,  -498,  -498,  -498,   447,   447,   447,
-     350,   351,   353,   354,  -498,   365,   368,  -498,   374,   377,
-     387,  -498,  -498,   388,  -498,  -498,   389,    20,  -498,  -498,
-     399,   402,  -498,   404,  -498,  -498,    71,   406,  -498,  -498,
-    -498,    -7,   405,  -498,    20,    27,   407,  -498,  -498,   151,
-     111,   111,   458,   459,   460,   -44,    20,   208,    36,   461,
-     -53,    24,   124,   104,  -498,  -498,   442,  -498,    43,   462,
-     464,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   465,
-     410,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,   220,  -498,   230,  -498,
-    -498,   231,  -498,  -498,  -498,  -498,   469,   470,   471,   472,
-     474,  -498,  -498,  -498,   232,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   238,  -498,
-     473,   479,  -498,  -498,   477,   481,  -498,  -498,   480,   482,
-    -498,  -498,  -498,   102,  -498,  -498,  -498,   484,  -498,  -498,
-    -498,   125,  -498,  -498,  -498,  -498,   272,  -498,   485,   489,
-    -498,   490,   491,   492,   495,   498,   499,   239,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   501,   502,   503,
-    -498,  -498,   240,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,   241,  -498,  -498,  -498,   242,   412,   413,  -498,  -498,
-     487,   505,  -498,  -498,   504,   506,  -498,  -498,   507,   508,
-    -498,  -498,   509,  -498,   510,   407,  -498,  -498,   512,   514,
-     515,   516,   315,   416,   417,   426,   427,   518,   519,   111,
-    -498,  -498,    19,  -498,   458,    28,  -498,   459,    59,  -498,
-     460,   -44,  -498,  -498,   208,  -498,    36,  -498,   -36,  -498,
-     461,   433,   434,   437,   444,   446,   448,   -53,  -498,   522,
-     523,   449,   453,   454,    24,  -498,   524,   525,   124,  -498,
-    -498,  -498,   527,   528,  -498,    -1,  -498,   462,    33,  -498,
-     464,    85,  -498,   465,   526,  -498,   483,  -498,   254,   463,
-     466,   467,  -498,  -498,  -498,  -498,  -498,   468,   475,  -498,
-     249,  -498,   529,  -498,   530,  -498,  -498,  -498,  -498,   251,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   217,   476,
-    -498,  -498,  -498,  -498,   478,   486,  -498,  -498,   488,   252,
-    -498,   253,  -498,   531,  -498,   497,   533,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,   291,  -498,    57,   533,  -498,  -498,
-     537,  -498,  -498,  -498,   259,  -498,  -498,  -498,  -498,  -498,
-     538,   494,   539,    57,  -498,   540,  -498,   500,  -498,   541,
-    -498,  -498,   298,  -498,    17,   541,  -498,  -498,   543,   546,
-     549,   260,  -498,  -498,  -498,  -498,  -498,  -498,   550,   511,
-     517,   520,    17,  -498,   513,  -498,  -498,  -498,  -498,  -498
+      57,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,    75,    20,   118,   138,   169,   181,   198,
+     218,   228,   248,   259,   274,   292,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+      20,  -109,    18,    27,    43,    19,    -2,    32,    85,    58,
+      73,   -39,   136,  -502,    76,   269,   302,   300,   307,  -502,
+    -502,  -502,  -502,   308,  -502,    29,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,   311,   312,   316,   317,   318,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,   319,
+    -502,  -502,  -502,    99,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,   320,   121,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,   321,   322,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,   170,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,   171,  -502,  -502,
+    -502,  -502,   323,  -502,   324,   325,  -502,  -502,  -502,   204,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,   303,   327,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,   328,  -502,  -502,
+    -502,   330,  -502,  -502,   329,   332,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,   334,   335,  -502,
+    -502,  -502,  -502,   333,   337,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,   205,  -502,  -502,  -502,   338,
+    -502,  -502,   339,  -502,   340,   341,  -502,  -502,   342,   343,
+     344,  -502,  -502,  -502,   206,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,    20,    20,  -502,   183,   345,   346,   347,   348,  -502,
+      18,  -502,   349,   350,   351,   187,   207,   209,   210,   211,
+     353,   357,   358,   359,   360,   361,   362,   363,   364,   365,
+     221,   367,   368,    27,  -502,   369,   225,    43,  -502,    -4,
+     370,   371,   373,   374,   375,   231,   230,   378,   379,   380,
+     381,    19,  -502,   382,   383,    -2,  -502,   384,   240,   386,
+     242,   243,    32,  -502,   389,   390,   391,   392,   393,   394,
+     395,  -502,    85,   396,   397,   256,   398,   399,   400,   258,
+    -502,    58,   402,   260,   263,  -502,    73,   403,   404,   -52,
+    -502,   264,   406,   412,   268,   414,   270,   271,   417,   418,
+     272,   273,   275,   421,   423,   136,  -502,  -502,  -502,   424,
+     422,   425,    20,    20,  -502,   426,   427,   428,  -502,  -502,
+    -502,  -502,  -502,   431,   432,   433,   434,   435,   436,   439,
+     440,   441,   442,  -502,   443,   444,  -502,   447,  -502,  -502,
+    -502,  -502,  -502,  -502,   446,   453,  -502,  -502,  -502,   452,
+     454,   282,   283,   310,  -502,  -502,    92,   313,   457,   456,
+    -502,   326,   458,  -502,   331,  -502,   336,  -502,  -502,  -502,
+     447,   447,   447,   352,   354,   355,   356,  -502,   366,   372,
+    -502,   376,   377,   385,  -502,  -502,   387,  -502,  -502,  -502,
+     388,    20,  -502,  -502,   401,   405,  -502,   407,  -502,  -502,
+      13,   408,  -502,  -502,  -502,    26,   409,  -502,    20,    27,
+     411,  -502,  -502,    43,   112,   112,   459,   460,   461,   -42,
+      20,   229,    39,   462,    96,    24,    63,   136,  -502,  -502,
+     466,  -502,    -4,   464,   465,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,   468,   410,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+     208,  -502,   212,  -502,  -502,   214,  -502,  -502,  -502,  -502,
+     472,   473,   474,   476,   477,  -502,  -502,  -502,   215,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,   216,  -502,   479,   480,  -502,  -502,   481,   483,
+    -502,  -502,   482,   486,  -502,  -502,  -502,    42,  -502,  -502,
+    -502,   487,  -502,  -502,  -502,    86,  -502,  -502,  -502,  -502,
+     184,  -502,   488,   489,  -502,   478,   491,   492,   493,   494,
+     495,   223,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,   497,   501,   502,  -502,  -502,   224,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,   226,  -502,  -502,  -502,   251,
+     413,   415,  -502,  -502,   503,   504,  -502,  -502,   505,   507,
+    -502,  -502,   506,   510,  -502,  -502,   508,  -502,   511,   411,
+    -502,  -502,   513,   514,   515,   517,   416,   419,   420,   429,
+     430,   518,   519,   112,  -502,  -502,    19,  -502,   459,    58,
+    -502,   460,    73,  -502,   461,   -42,  -502,  -502,   229,  -502,
+      39,  -502,   -39,  -502,   462,   437,   438,   445,   448,   449,
+     450,    96,  -502,   522,   523,   451,   455,   463,    24,  -502,
+     525,   526,    63,  -502,  -502,  -502,   528,   529,  -502,    -2,
+    -502,   464,    32,  -502,   465,    85,  -502,   468,   527,  -502,
+     533,  -502,   257,   467,   469,   470,  -502,  -502,  -502,  -502,
+    -502,   471,   475,  -502,   253,  -502,   531,  -502,   532,  -502,
+    -502,  -502,  -502,   254,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,   195,   484,  -502,  -502,  -502,  -502,   485,   490,
+    -502,  -502,   498,   255,  -502,   261,  -502,   534,  -502,   500,
+     536,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,   233,  -502,
+      62,   536,  -502,  -502,   537,  -502,  -502,  -502,   262,  -502,
+    -502,  -502,  -502,  -502,   540,   509,   541,    62,  -502,   542,
+    -502,   516,  -502,   539,  -502,  -502,   279,  -502,   -60,   539,
+    -502,  -502,   544,   546,   547,   265,  -502,  -502,  -502,  -502,
+    -502,  -502,   548,   520,   512,   521,   -60,  -502,   524,  -502,
+    -502,  -502,  -502,  -502
   };
 
   const unsigned short int
@@ -3517,492 +3527,494 @@ namespace isc { namespace dhcp {
       20,    22,    24,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     1,    41,    34,    30,
       29,    26,    27,    28,    33,     3,    31,    32,    54,     5,
-      65,     7,    98,     9,   211,    11,   316,    13,   336,    15,
-     363,    17,   255,    19,   290,    21,   176,    23,   447,    25,
-      43,    37,     0,     0,     0,     0,     0,     0,   365,   257,
+      65,     7,    98,     9,   211,    11,   318,    13,   338,    15,
+     365,    17,   255,    19,   290,    21,   176,    23,   449,    25,
+      43,    37,     0,     0,     0,     0,     0,     0,   367,   257,
      292,     0,     0,    45,     0,    44,     0,     0,    38,    63,
-     498,   494,   496,     0,    62,     0,    56,    58,    60,    61,
+     500,   496,   498,     0,    62,     0,    56,    58,    60,    61,
       59,    96,   107,   109,     0,     0,     0,     0,     0,   203,
-     247,   282,   149,   166,   157,   396,   168,   187,   413,     0,
-     435,   445,    90,     0,    67,    69,    70,    71,    72,    73,
+     247,   282,   149,   166,   157,   398,   168,   187,   415,     0,
+     437,   447,    90,     0,    67,    69,    70,    71,    72,    73,
       75,    76,    77,    78,    80,    79,    84,    85,    74,    82,
       83,    81,    86,    87,    88,    89,   104,     0,     0,   100,
-     102,   103,   400,   308,   328,   232,   234,   236,     0,     0,
-     240,   238,   355,   392,   231,   215,   216,   217,   218,     0,
+     102,   103,   402,   310,   330,   232,   234,   236,     0,     0,
+     240,   238,   357,   394,   231,   215,   216,   217,   218,     0,
      213,   222,   223,   224,   227,   229,   225,   226,   219,   220,
-     221,   228,   230,   324,   326,   323,   321,     0,   318,   320,
-     322,   348,     0,   351,     0,     0,   347,   343,   346,     0,
-     338,   340,   341,   344,   345,   342,   390,   378,   380,   382,
-     384,   386,   388,   377,   376,     0,   366,   367,   371,   372,
-     369,   373,   374,   375,   370,   272,   139,     0,   276,   274,
+     221,   228,   230,   326,   328,   325,   323,     0,   320,   322,
+     324,   350,     0,   353,     0,     0,   349,   345,   348,     0,
+     340,   342,   343,   346,   347,   344,   392,   380,   382,   384,
+     386,   388,   390,   379,   378,     0,   368,   369,   373,   374,
+     371,   375,   376,   377,   372,   272,   139,     0,   276,   274,
      279,     0,   268,   269,     0,   258,   259,   261,   271,   262,
-     263,   264,   278,   265,   266,   267,   303,     0,   301,   302,
-     305,   306,     0,   293,   294,   296,   297,   298,   299,   300,
-     183,   185,   180,     0,   178,   181,   182,     0,   467,   469,
-       0,   472,     0,     0,   476,   480,     0,     0,     0,   485,
-     492,   465,     0,   449,   451,   452,   453,   454,   455,   456,
-     457,   458,   459,   460,   461,   462,   463,   464,    42,     0,
-       0,    35,     0,     0,     0,     0,     0,    53,     0,    55,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    66,     0,     0,     0,    99,   402,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     212,     0,     0,     0,   317,     0,     0,     0,     0,     0,
-       0,   337,     0,     0,     0,     0,     0,     0,     0,   364,
-       0,     0,     0,     0,     0,     0,     0,     0,   256,     0,
-       0,     0,   291,     0,     0,     0,     0,   177,     0,     0,
+     263,   264,   278,   265,   266,   267,   304,     0,     0,   302,
+     303,   306,   307,     0,   293,   294,   296,   297,   298,   299,
+     300,   301,   183,   185,   180,     0,   178,   181,   182,     0,
+     469,   471,     0,   474,     0,     0,   478,   482,     0,     0,
+       0,   487,   494,   467,     0,   451,   453,   454,   455,   456,
+     457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
+      42,     0,     0,    35,     0,     0,     0,     0,     0,    53,
+       0,    55,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   448,    46,    39,     0,     0,     0,     0,
-       0,    57,     0,     0,     0,    91,    92,    93,    94,    95,
+       0,     0,     0,     0,    66,     0,     0,     0,    99,   404,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     434,     0,     0,    68,     0,   106,   101,   411,   409,   410,
-     408,     0,   403,   404,   406,   407,     0,     0,     0,     0,
-       0,   245,   246,     0,     0,     0,     0,   214,     0,     0,
-     319,     0,   350,     0,   353,   354,   339,     0,     0,     0,
-       0,     0,     0,     0,   368,     0,     0,   270,     0,     0,
-       0,   281,   260,     0,   307,   295,     0,     0,   179,   466,
-       0,     0,   471,     0,   474,   475,     0,     0,   482,   483,
-     484,     0,     0,   450,     0,     0,     0,   495,   497,     0,
-       0,     0,   205,   249,   284,     0,    43,     0,     0,   170,
-       0,     0,     0,     0,    47,   105,     0,   401,     0,   310,
-     330,   233,   235,   237,   242,   243,   244,   241,   239,   357,
-       0,   325,    36,   327,   349,   352,   391,   379,   381,   383,
-     385,   387,   389,   273,   140,   277,   275,   280,   304,   184,
-     186,   468,   470,   473,   478,   479,   477,   481,   487,   488,
-     489,   490,   491,   486,   493,    40,     0,   503,     0,   500,
-     502,     0,   126,   132,   134,   136,     0,     0,     0,     0,
-       0,   145,   147,   125,     0,   111,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,     0,   209,
-       0,   206,   207,   253,     0,   250,   251,   288,     0,   285,
-     286,   155,   156,     0,   151,   153,   154,     0,   164,   165,
-     161,     0,   159,   162,   163,   398,     0,   174,     0,   171,
-     172,     0,     0,     0,     0,     0,     0,     0,   189,   191,
-     192,   193,   194,   195,   196,   424,   430,     0,     0,     0,
-     423,   422,     0,   415,   417,   420,   418,   419,   421,   441,
-     443,     0,   437,   439,   440,     0,    49,     0,   405,   314,
-       0,   311,   312,   334,     0,   331,   332,   361,     0,   358,
-     359,   394,     0,    64,     0,     0,   499,    97,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     108,   110,     0,   204,     0,   257,   248,     0,   292,   283,
-       0,     0,   150,   167,     0,   158,     0,   397,     0,   169,
-       0,     0,     0,     0,     0,     0,     0,     0,   188,     0,
-       0,     0,     0,     0,     0,   414,     0,     0,     0,   436,
-     446,    51,     0,    50,   412,     0,   309,     0,     0,   329,
-       0,   365,   356,     0,     0,   393,     0,   501,     0,     0,
-       0,     0,   138,   141,   142,   143,   144,     0,     0,   112,
-       0,   208,     0,   252,     0,   287,   152,   160,   399,     0,
-     173,   197,   198,   199,   200,   201,   202,   190,     0,     0,
-     429,   432,   433,   416,     0,     0,   438,    48,     0,     0,
-     313,     0,   333,     0,   360,     0,     0,   128,   129,   130,
-     131,   127,   133,   135,   137,   146,   148,   210,   254,   289,
-     175,   426,   427,   428,   425,   431,   442,   444,    52,   315,
-     335,   362,   395,   507,     0,   505,     0,     0,   504,   519,
-       0,   517,   515,   511,     0,   509,   513,   514,   512,   506,
-       0,     0,     0,     0,   508,     0,   516,     0,   510,     0,
-     518,   523,     0,   521,     0,     0,   520,   531,     0,     0,
-       0,     0,   525,   527,   528,   529,   530,   522,     0,     0,
-       0,     0,     0,   524,     0,   533,   534,   535,   526,   532
+       0,     0,   212,     0,     0,     0,   319,     0,     0,     0,
+       0,     0,     0,   339,     0,     0,     0,     0,     0,     0,
+       0,   366,     0,     0,     0,     0,     0,     0,     0,     0,
+     256,     0,     0,     0,     0,   291,     0,     0,     0,     0,
+     177,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   450,    46,    39,     0,
+       0,     0,     0,     0,    57,     0,     0,     0,    91,    92,
+      93,    94,    95,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   436,     0,     0,    68,     0,   106,   101,
+     413,   411,   412,   410,     0,   405,   406,   408,   409,     0,
+       0,     0,     0,     0,   245,   246,     0,     0,     0,     0,
+     214,     0,     0,   321,     0,   352,     0,   355,   356,   341,
+       0,     0,     0,     0,     0,     0,     0,   370,     0,     0,
+     270,     0,     0,     0,   281,   260,     0,   308,   309,   295,
+       0,     0,   179,   468,     0,     0,   473,     0,   476,   477,
+       0,     0,   484,   485,   486,     0,     0,   452,     0,     0,
+       0,   497,   499,     0,     0,     0,   205,   249,   284,     0,
+      43,     0,     0,   170,     0,     0,     0,     0,    47,   105,
+       0,   403,     0,   312,   332,   233,   235,   237,   242,   243,
+     244,   241,   239,   359,     0,   327,    36,   329,   351,   354,
+     393,   381,   383,   385,   387,   389,   391,   273,   140,   277,
+     275,   280,   305,   184,   186,   470,   472,   475,   480,   481,
+     479,   483,   489,   490,   491,   492,   493,   488,   495,    40,
+       0,   505,     0,   502,   504,     0,   126,   132,   134,   136,
+       0,     0,     0,     0,     0,   145,   147,   125,     0,   111,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,     0,   209,     0,   206,   207,   253,     0,   250,
+     251,   288,     0,   285,   286,   155,   156,     0,   151,   153,
+     154,     0,   164,   165,   161,     0,   159,   162,   163,   400,
+       0,   174,     0,   171,   172,     0,     0,     0,     0,     0,
+       0,     0,   189,   191,   192,   193,   194,   195,   196,   426,
+     432,     0,     0,     0,   425,   424,     0,   417,   419,   422,
+     420,   421,   423,   443,   445,     0,   439,   441,   442,     0,
+      49,     0,   407,   316,     0,   313,   314,   336,     0,   333,
+     334,   363,     0,   360,   361,   396,     0,    64,     0,     0,
+     501,    97,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   108,   110,     0,   204,     0,   257,
+     248,     0,   292,   283,     0,     0,   150,   167,     0,   158,
+       0,   399,     0,   169,     0,     0,     0,     0,     0,     0,
+       0,     0,   188,     0,     0,     0,     0,     0,     0,   416,
+       0,     0,     0,   438,   448,    51,     0,    50,   414,     0,
+     311,     0,     0,   331,     0,   367,   358,     0,     0,   395,
+       0,   503,     0,     0,     0,     0,   138,   141,   142,   143,
+     144,     0,     0,   112,     0,   208,     0,   252,     0,   287,
+     152,   160,   401,     0,   173,   197,   198,   199,   200,   201,
+     202,   190,     0,     0,   431,   434,   435,   418,     0,     0,
+     440,    48,     0,     0,   315,     0,   335,     0,   362,     0,
+       0,   128,   129,   130,   131,   127,   133,   135,   137,   146,
+     148,   210,   254,   289,   175,   428,   429,   430,   427,   433,
+     444,   446,    52,   317,   337,   364,   397,   509,     0,   507,
+       0,     0,   506,   521,     0,   519,   517,   513,     0,   511,
+     515,   516,   514,   508,     0,     0,     0,     0,   510,     0,
+     518,     0,   512,     0,   520,   525,     0,   523,     0,     0,
+     522,   533,     0,     0,     0,     0,   527,   529,   530,   531,
+     532,   524,     0,     0,     0,     0,     0,   526,     0,   535,
+     536,   537,   528,   534
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,    10,  -498,    95,  -498,  -498,  -498,
-    -498,  -498,  -498,    49,  -498,  -140,  -498,  -498,  -498,   -62,
-    -498,  -498,  -498,   263,  -498,  -498,  -498,  -498,    61,   236,
-     -63,   -50,   -49,   -43,  -498,  -498,  -498,  -498,  -498,    63,
-     247,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    62,  -141,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -58,  -498,  -497,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -147,  -484,  -498,  -498,  -498,  -498,  -146,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -153,  -498,
-    -498,  -498,  -149,   194,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -156,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -131,  -498,  -498,  -498,  -128,   248,  -498,  -498,
-    -498,  -498,  -498,  -498,  -487,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -130,  -498,  -498,  -498,  -127,
-    -498,   211,  -498,   -59,  -498,  -498,  -498,  -498,  -498,   -57,
-    -498,  -498,  -498,  -498,  -498,   -48,  -498,  -498,  -498,  -126,
-    -498,  -498,  -498,  -129,  -498,   213,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -164,  -498,  -498,  -498,
-    -157,   250,  -498,  -498,   -66,  -498,  -498,  -498,  -498,  -498,
-    -161,  -498,  -498,  -498,  -158,   262,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -162,  -498,  -498,
-    -498,  -152,  -498,   235,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    80,  -498,
-    -498,  -498,  -498,  -498,  -498,  -134,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -135,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,    91,   214,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   -80,
-    -498,  -498,  -498,  -230,  -498,  -498,  -245,  -498,  -498,  -498,
-    -498,  -498,  -498,  -256,  -498,  -498,  -271,  -498,  -498,  -498,
-    -498,  -498
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,    10,  -502,   102,  -502,  -502,  -502,
+    -502,  -502,  -502,    46,  -502,  -167,  -502,  -502,  -502,   -62,
+    -502,  -502,  -502,   266,  -502,  -502,  -502,  -502,    59,   236,
+     -63,   -50,   -44,   -43,  -502,  -502,  -502,  -502,  -502,    61,
+     235,  -502,  -502,  -502,  -502,  -502,  -502,  -502,    55,  -136,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+     -58,  -502,  -501,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -147,  -488,  -502,  -502,  -502,  -502,  -146,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -153,  -502,
+    -502,  -502,  -149,   196,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -157,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -132,  -502,  -502,  -502,  -129,   237,  -502,  -502,
+    -502,  -502,  -502,  -502,  -492,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -130,  -502,  -502,  -502,  -127,
+    -502,   213,  -502,   -59,  -502,  -502,  -502,  -502,  -502,   -57,
+    -502,  -502,  -502,  -502,  -502,   -49,  -502,  -502,  -502,  -131,
+    -502,  -502,  -502,  -124,  -502,   217,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -166,  -502,  -502,
+    -502,  -160,   245,  -502,  -502,   -66,  -502,  -502,  -502,  -502,
+    -502,  -163,  -502,  -502,  -502,  -156,   249,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -165,  -502,
+    -502,  -502,  -152,  -502,   244,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,    80,
+    -502,  -502,  -502,  -502,  -502,  -502,  -143,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -137,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,    90,   219,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+    -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,  -502,
+     -81,  -502,  -502,  -502,  -232,  -502,  -502,  -247,  -502,  -502,
+    -502,  -502,  -502,  -502,  -258,  -502,  -502,  -273,  -502,  -502,
+    -502,  -502,  -502
   };
 
   const short int
   Dhcp6Parser::yydefgoto_[] =
   {
       -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    73,    35,    36,    61,   533,    77,
-      78,    37,    60,    74,    75,   515,   666,   742,   743,   112,
-      39,    62,    85,    86,    87,   293,    41,    63,   113,   114,
-     115,   116,   117,   118,   119,   120,   300,    43,    64,   138,
-     139,   140,   323,   141,   121,   301,   122,   302,   584,   585,
-     586,   688,   811,   587,   689,   588,   690,   589,   691,   590,
-     223,   362,   592,   593,   594,   595,   596,   697,   597,   698,
-     123,   311,   613,   614,   615,   616,   124,   313,   621,   622,
-     623,   624,   125,   312,   126,   315,   628,   629,   630,   718,
-      57,    71,   253,   254,   255,   374,   256,   375,   127,   316,
-     637,   638,   639,   640,   641,   642,   643,   644,   128,   308,
-     600,   601,   602,   702,    45,    65,   159,   160,   161,   330,
-     162,   331,   163,   332,   164,   336,   165,   335,   527,   166,
-     167,   129,   309,   604,   605,   606,   705,    53,    69,   224,
-     225,   226,   227,   228,   229,   230,   361,   231,   365,   232,
-     364,   233,   234,   366,   235,   130,   310,   608,   609,   610,
-     708,    55,    70,   242,   243,   244,   245,   246,   370,   247,
-     248,   249,   169,   328,   670,   671,   672,   745,    47,    66,
-     177,   178,   179,   341,   180,   342,   170,   329,   674,   675,
-     676,   748,    49,    67,   189,   190,   191,   345,   192,   193,
-     347,   194,   195,   171,   337,   678,   679,   680,   751,    51,
-      68,   205,   206,   207,   208,   353,   209,   354,   210,   355,
-     211,   356,   212,   357,   213,   358,   214,   352,   172,   338,
-     682,   754,   131,   314,   626,   327,   431,   432,   433,   434,
-     435,   516,   132,   317,   652,   653,   654,   729,   824,   655,
-     656,   730,   657,   658,   133,   134,   319,   661,   662,   663,
-     736,   664,   737,   135,   320,    59,    72,   272,   273,   274,
-     275,   379,   276,   380,   277,   278,   382,   279,   280,   281,
-     385,   556,   282,   386,   283,   284,   285,   286,   390,   563,
-     287,   391,    88,   295,    89,   296,    90,   294,   568,   569,
-     570,   684,   834,   835,   836,   844,   845,   846,   847,   852,
-     848,   850,   862,   863,   864,   871,   872,   873,   878,   874,
-     875,   876
+      22,    23,    24,    25,    73,    35,    36,    61,   537,    77,
+      78,    37,    60,    74,    75,   519,   670,   746,   747,   112,
+      39,    62,    85,    86,    87,   295,    41,    63,   113,   114,
+     115,   116,   117,   118,   119,   120,   302,    43,    64,   138,
+     139,   140,   325,   141,   121,   303,   122,   304,   588,   589,
+     590,   692,   815,   591,   693,   592,   694,   593,   695,   594,
+     223,   364,   596,   597,   598,   599,   600,   701,   601,   702,
+     123,   313,   617,   618,   619,   620,   124,   315,   625,   626,
+     627,   628,   125,   314,   126,   317,   632,   633,   634,   722,
+      57,    71,   255,   256,   257,   377,   258,   378,   127,   318,
+     641,   642,   643,   644,   645,   646,   647,   648,   128,   310,
+     604,   605,   606,   706,    45,    65,   159,   160,   161,   332,
+     162,   333,   163,   334,   164,   338,   165,   337,   531,   166,
+     167,   129,   311,   608,   609,   610,   709,    53,    69,   224,
+     225,   226,   227,   228,   229,   230,   363,   231,   367,   232,
+     366,   233,   234,   368,   235,   130,   312,   612,   613,   614,
+     712,    55,    70,   243,   244,   245,   246,   247,   372,   248,
+     249,   250,   251,   169,   330,   674,   675,   676,   749,    47,
+      66,   177,   178,   179,   343,   180,   344,   170,   331,   678,
+     679,   680,   752,    49,    67,   189,   190,   191,   347,   192,
+     193,   349,   194,   195,   171,   339,   682,   683,   684,   755,
+      51,    68,   205,   206,   207,   208,   355,   209,   356,   210,
+     357,   211,   358,   212,   359,   213,   360,   214,   354,   172,
+     340,   686,   758,   131,   316,   630,   329,   434,   435,   436,
+     437,   438,   520,   132,   319,   656,   657,   658,   733,   828,
+     659,   660,   734,   661,   662,   133,   134,   321,   665,   666,
+     667,   740,   668,   741,   135,   322,    59,    72,   274,   275,
+     276,   277,   382,   278,   383,   279,   280,   385,   281,   282,
+     283,   388,   560,   284,   389,   285,   286,   287,   288,   393,
+     567,   289,   394,    88,   297,    89,   298,    90,   296,   572,
+     573,   574,   688,   838,   839,   840,   848,   849,   850,   851,
+     856,   852,   854,   866,   867,   868,   875,   876,   877,   882,
+     878,   879,   880
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-      84,   188,   155,   154,   175,   186,   203,   222,   238,   252,
-     271,   240,   239,   241,   651,   156,   157,   168,   176,   187,
-     204,   625,   158,   620,    34,    27,   142,    28,    79,    29,
-     611,   631,   632,   633,   634,   635,   636,   101,    91,    26,
-     645,    92,    93,   142,   215,   250,   251,   173,    38,   577,
-      94,    95,    96,    97,   174,   250,   251,   101,    94,    95,
-      96,    97,    98,    99,   100,   101,   143,   216,   144,   217,
-     218,   101,   219,   220,   221,   145,   146,   147,   148,   149,
-     150,   101,   216,   181,   182,   183,   184,   185,   174,   151,
-     152,    40,   102,   103,   104,   105,   216,   153,   216,   236,
-     217,   218,   237,   612,   298,   711,   151,   106,   712,   299,
-     107,    83,   427,   558,   559,   560,   561,   108,   646,   647,
-     648,   649,    42,   101,    44,   109,   110,   572,   714,   111,
-      46,   715,   573,   574,   575,   576,   577,   578,   579,   580,
-     581,   582,    80,   562,   867,    48,    83,   868,   869,   870,
-     216,    81,    82,   196,   524,   525,   526,   197,   198,   199,
-     200,   201,   202,   136,   137,    83,    83,    30,    31,    32,
-      33,    83,   321,   325,    83,    83,   339,   322,   326,   343,
-      83,   340,   350,   839,   344,   840,   841,   351,   554,   555,
-      83,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    50,    83,    52,    83,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   376,   392,   321,   659,   660,   377,   393,   683,   778,
-     620,    54,    83,   685,   325,   699,    84,   651,   686,   687,
-     700,   699,   727,   734,   738,   392,   701,   728,   735,   739,
-     740,    83,   339,    56,   376,   343,   350,   817,    83,   820,
-     829,   830,   853,   882,    58,   428,    76,   854,   883,   429,
-     288,   807,   808,   809,   810,   716,   155,   154,   717,   430,
-     289,   175,   611,   618,   188,   619,   290,   291,   186,   156,
-     157,   168,   292,   359,   837,   176,   158,   838,   203,   394,
-     395,   865,   187,   297,   866,   303,   304,   222,   821,   822,
-     823,   238,   204,   305,   240,   239,   241,   536,   537,   538,
-     306,   307,   318,   324,   333,   334,   346,   348,   349,   360,
-     271,   363,   367,   368,   369,   396,   371,   372,   373,   405,
-     378,   381,   383,   384,   387,   388,   389,   397,   398,   399,
-     400,   402,   403,   404,   406,   407,   410,   408,   409,   411,
-     412,   413,   414,   415,   416,   417,   418,   419,   421,   420,
-     422,   424,   425,   436,   437,   438,   439,   440,   442,   443,
-     444,   441,   445,   446,   448,   449,   451,   453,   457,   458,
-     459,   452,   454,   455,   460,   461,   462,   463,   465,   466,
-     468,   469,   470,   467,   473,   476,   471,   477,   474,   497,
-     498,   479,   480,   481,   482,   483,   484,   485,   486,   487,
-     488,   489,   491,   490,   492,   494,   495,   521,   522,   496,
-     499,   500,   501,   502,   503,   504,   505,   506,   583,   583,
-     507,   508,   591,   591,   509,   510,   667,   511,   512,   650,
-     513,   271,   514,   517,   518,   519,   428,   520,   523,   528,
-     429,   529,   530,   762,    28,   599,   603,   607,   627,   669,
-     430,   673,   677,   692,   693,   694,   695,   531,   696,   703,
-     534,   535,   704,   706,   707,   710,   709,   550,   806,   681,
-     713,   719,   720,   746,   721,   722,   723,   539,   540,   724,
-     541,   542,   725,   726,   565,   731,   732,   733,   747,   750,
-     749,   753,   543,   752,   756,   544,   758,   755,   759,   760,
-     761,   545,   767,   768,   546,   557,   788,   789,   794,   795,
-     805,   798,   567,   797,   547,   548,   549,   818,   819,   831,
-     833,   851,   855,   857,   532,   859,   551,   879,   861,   552,
-     880,   553,   564,   881,   884,   617,   566,   423,   769,   741,
-     744,   401,   571,   598,   776,   764,   763,   780,   777,   779,
-     478,   787,   426,   771,   770,   766,   765,   773,   772,   774,
-     472,   781,   782,   800,   775,   783,   475,   447,   799,   802,
-     801,   804,   784,   450,   785,   464,   786,   790,   668,   803,
-     793,   791,   792,   796,   665,   757,   493,   849,   858,   877,
-     812,   888,   456,   813,   814,   815,     0,     0,     0,     0,
-       0,     0,   816,   825,     0,   826,     0,     0,     0,     0,
-       0,     0,     0,   827,     0,   828,     0,   583,     0,   155,
-     154,   591,   856,   222,   832,     0,   238,   860,     0,   240,
-     239,   241,   156,   157,   168,     0,   252,     0,     0,   158,
-     889,   885,     0,     0,     0,   886,     0,     0,   887,     0,
-       0,     0,   650,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   188,   175,     0,     0,   186,     0,     0,   203,
-       0,     0,     0,     0,     0,     0,     0,   176,     0,     0,
-     187,     0,     0,   204,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      84,   188,   155,   154,   175,   186,   203,   222,   239,   254,
+     273,   241,   240,   242,   655,   156,   168,   176,   187,   204,
+     629,   157,   158,   624,    34,    27,   142,    28,    79,    29,
+     252,   253,   300,   615,   101,   216,   101,   301,    91,    76,
+     649,    92,    93,   252,   253,   715,   142,   173,   716,   581,
+      94,    95,    96,    97,   174,   136,   137,   101,    94,    95,
+      96,    97,    98,    99,   100,   101,   430,   143,   871,   144,
+     101,   872,   873,   874,   215,    26,   145,   146,   147,   148,
+     149,   150,   290,   181,   182,   183,   184,   185,   174,   718,
+     151,   152,   719,   102,   103,   104,   105,   216,   153,   217,
+     218,   216,   323,   219,   220,   221,   616,   324,   106,    83,
+     151,   107,   216,   236,   217,   218,   237,   238,   108,   650,
+     651,   652,   653,   101,   327,    38,   109,   110,   576,   328,
+     111,   558,   559,   577,   578,   579,   580,   581,   582,   583,
+     584,   585,   586,    80,    83,    40,    83,   562,   563,   564,
+     565,   216,    81,    82,   196,   528,   529,   530,   197,   198,
+     199,   200,   201,   202,   663,   664,    83,    83,    30,    31,
+      32,    33,    83,   341,   345,    83,    42,   566,   342,   346,
+      83,   635,   636,   637,   638,   639,   640,   720,    44,   843,
+     721,   844,   845,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    46,    83,   352,   379,   395,
+      83,   323,   353,   380,   396,   689,   687,   327,   703,   703,
+     690,    83,   691,   704,   705,    48,   731,   738,   782,   742,
+     624,   732,   739,    83,   743,    50,   841,   655,    84,   842,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   395,    52,   341,   379,   345,   744,
+      83,   821,   824,   833,   352,   857,    54,   431,   886,   834,
+     858,   432,   291,   887,   811,   812,   813,   814,   155,   154,
+     433,    56,   869,   175,    83,   870,   188,   825,   826,   827,
+     186,   156,   168,   540,   541,   542,   176,   157,   158,    58,
+     203,   397,   398,   187,   615,   622,   292,   623,   293,   222,
+     294,   361,   299,   204,   239,   305,   306,   241,   240,   242,
+     307,   308,   309,   320,   326,   335,   336,   348,   350,   351,
+     362,   399,   365,   273,   369,   371,   408,   370,   373,   374,
+     376,   375,   381,   384,   386,   387,   390,   391,   392,   400,
+     401,   402,   403,   405,   406,   407,   409,   413,   410,   411,
+     412,   414,   415,   416,   417,   418,   419,   420,   421,   422,
+     423,   424,   425,   427,   439,   440,   428,   441,   442,   443,
+     444,   445,   446,   447,   448,   449,   451,   452,   454,   455,
+     456,   457,   458,   460,   461,   462,   463,   464,   465,   466,
+     468,   469,   471,   472,   473,   470,   476,   480,   481,   474,
+     484,   477,   501,   502,   478,   483,   485,   486,   487,   488,
+     489,   490,   491,   492,   493,   495,   494,   496,   498,   499,
+     525,   526,   500,   503,   504,   505,   506,   507,   508,   509,
+     510,   511,   587,   587,   512,   513,   595,   595,   514,   515,
+     516,   517,   518,   654,   521,   273,   522,   523,   527,   524,
+     431,   532,   533,   534,   432,    28,   603,   607,   611,   631,
+     671,   673,   677,   433,   535,   681,   696,   697,   698,   538,
+     699,   700,   725,   708,   539,   707,   711,   710,   713,   714,
+     685,   554,   724,   717,   723,   726,   727,   728,   729,   730,
+     543,   735,   544,   545,   546,   736,   737,   751,   569,   750,
+     754,   753,   756,   757,   547,   760,   759,   762,   763,   764,
+     548,   765,   771,   772,   549,   550,   792,   793,   561,   798,
+     799,   809,   802,   551,   801,   552,   553,   571,   810,   822,
+     823,   855,   835,   837,   859,   861,   865,   863,   883,   555,
+     884,   885,   888,   556,   536,   557,   621,   568,   570,   426,
+     602,   745,   429,   748,   575,   766,   404,   773,   780,   768,
+     767,   784,   781,   783,   791,   482,   775,   774,   450,   770,
+     769,   777,   776,   779,   475,   804,   785,   786,   778,   803,
+     453,   806,   808,   479,   787,   797,   805,   788,   789,   790,
+     794,   459,   672,   807,   795,   800,   467,   669,   761,   853,
+     862,   881,   796,   892,   497,   816,     0,   817,   818,   819,
+       0,     0,     0,   820,     0,     0,     0,     0,     0,     0,
+       0,     0,   829,   830,     0,     0,     0,     0,   831,     0,
+       0,   587,     0,   155,   154,   595,   832,   222,   836,     0,
+     239,     0,     0,   241,   240,   242,   156,   168,   860,     0,
+     254,   890,   157,   158,   864,     0,     0,     0,     0,     0,
+     891,   889,   893,     0,     0,     0,   654,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   188,   175,     0,     0,
+     186,     0,     0,   203,     0,     0,     0,     0,     0,     0,
+     176,     0,     0,   187,     0,     0,   204,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   842,     0,     0,     0,   843,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   842,     0,     0,     0,   843
+       0,     0,     0,     0,     0,     0,     0,     0,   846,     0,
+       0,     0,   847,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   846,     0,     0,     0,   847
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
       62,    67,    65,    65,    66,    67,    68,    69,    70,    71,
-      72,    70,    70,    70,   511,    65,    65,    65,    66,    67,
-      68,   508,    65,   507,    14,     5,     7,     7,    10,     9,
-      74,    84,    85,    86,    87,    88,    89,    38,    11,     0,
-      16,    14,    15,     7,    16,    81,    82,    48,     7,    25,
-      31,    32,    33,    34,    55,    81,    82,    38,    31,    32,
-      33,    34,    35,    36,    37,    38,    47,    39,    49,    41,
-      42,    38,    44,    45,    46,    56,    57,    58,    59,    60,
-      61,    38,    39,    50,    51,    52,    53,    54,    55,    70,
-      71,     7,    65,    66,    67,    68,    39,    78,    39,    40,
-      41,    42,    43,   147,     3,     3,    70,    80,     6,     8,
-      83,   147,    69,   120,   121,   122,   123,    90,    94,    95,
-      96,    97,     7,    38,     7,    98,    99,    16,     3,   102,
-       7,     6,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,   124,   150,   127,     7,   147,   130,   131,   132,
-      39,   133,   134,    68,    62,    63,    64,    72,    73,    74,
-      75,    76,    77,    12,    13,   147,   147,   147,   148,   149,
-     150,   147,     3,     3,   147,   147,     3,     8,     8,     3,
-     147,     8,     3,   126,     8,   128,   129,     8,   117,   118,
-     147,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,     7,   147,     7,   147,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,     3,     3,     3,   100,   101,     8,     8,     8,   716,
-     714,     7,   147,     3,     3,     3,   298,   734,     8,     8,
-       8,     3,     3,     3,     3,     3,     8,     8,     8,     8,
-       8,   147,     3,     7,     3,     3,     3,     8,   147,     8,
-       8,     8,     3,     3,     7,   327,   147,     8,     8,   327,
-       6,    17,    18,    19,    20,     3,   339,   339,     6,   327,
-       3,   343,    74,    75,   350,    77,     4,     8,   350,   339,
-     339,   339,     3,     8,     3,   343,   339,     6,   360,   289,
-     290,     3,   350,     4,     6,     4,     4,   369,    91,    92,
-      93,   373,   360,     4,   373,   373,   373,   457,   458,   459,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
-     392,     4,     4,     8,     3,   147,     4,     8,     3,   148,
+      72,    70,    70,    70,   515,    65,    65,    66,    67,    68,
+     512,    65,    65,   511,    14,     5,     7,     7,    10,     9,
+      82,    83,     3,    75,    38,    39,    38,     8,    11,   148,
+      16,    14,    15,    82,    83,     3,     7,    49,     6,    25,
+      31,    32,    33,    34,    56,    12,    13,    38,    31,    32,
+      33,    34,    35,    36,    37,    38,    70,    48,   128,    50,
+      38,   131,   132,   133,    16,     0,    57,    58,    59,    60,
+      61,    62,     6,    51,    52,    53,    54,    55,    56,     3,
+      71,    72,     6,    66,    67,    68,    69,    39,    79,    41,
+      42,    39,     3,    45,    46,    47,   148,     8,    81,   148,
+      71,    84,    39,    40,    41,    42,    43,    44,    91,    95,
+      96,    97,    98,    38,     3,     7,    99,   100,    16,     8,
+     103,   118,   119,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,   125,   148,     7,   148,   121,   122,   123,
+     124,    39,   134,   135,    69,    63,    64,    65,    73,    74,
+      75,    76,    77,    78,   101,   102,   148,   148,   148,   149,
+     150,   151,   148,     3,     3,   148,     7,   151,     8,     8,
+     148,    85,    86,    87,    88,    89,    90,     3,     7,   127,
+       6,   129,   130,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,     7,   148,     3,     3,     3,
+     148,     3,     8,     8,     8,     3,     8,     3,     3,     3,
+       8,   148,     8,     8,     8,     7,     3,     3,   720,     3,
+     718,     8,     8,   148,     8,     7,     3,   738,   300,     6,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,     3,     7,     3,     3,     3,     8,
+     148,     8,     8,     8,     3,     3,     7,   329,     3,     8,
+       8,   329,     3,     8,    17,    18,    19,    20,   341,   341,
+     329,     7,     3,   345,   148,     6,   352,    92,    93,    94,
+     352,   341,   341,   460,   461,   462,   345,   341,   341,     7,
+     362,   291,   292,   352,    75,    76,     4,    78,     8,   371,
+       3,     8,     4,   362,   376,     4,     4,   376,   376,   376,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   148,   148,     4,   148,   148,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   148,
-       4,     4,   150,     4,     4,     4,     4,     4,   150,     4,
-       4,   148,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   148,   148,   148,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,   148,     4,     4,   150,     4,   150,   399,
-     400,   150,     4,     4,   148,     4,   148,   148,     4,     4,
-     150,   150,     4,   150,     4,     4,     7,   147,   147,     7,
-       7,     7,     7,     5,     5,     5,     5,     5,   500,   501,
-       5,     5,   500,   501,     5,     7,     4,     7,     7,   511,
-       7,   513,     5,     8,     3,     5,   518,     5,   147,   147,
-     518,     5,     7,   148,     7,     7,     7,     7,     7,     7,
-     518,     7,     7,     4,     4,     4,     4,   147,     4,     6,
-     147,   147,     3,     6,     3,     3,     6,   477,     5,    79,
-       6,     6,     3,     6,     4,     4,     4,   147,   147,     4,
-     147,   147,     4,     4,   494,     4,     4,     4,     3,     3,
-       6,     3,   147,     6,     4,   147,     4,     8,     4,     4,
-       4,   147,     4,     4,   147,   119,     4,     4,     4,     4,
-       4,     3,   125,     6,   147,   147,   147,     8,     8,     8,
-       7,     4,     4,     4,   449,     5,   147,     4,     7,   147,
-       4,   147,   147,     4,     4,   506,   495,   321,   699,   147,
-     147,   298,   499,   501,   711,   148,   150,   720,   714,   718,
-     376,   727,   325,   704,   702,   148,   150,   707,   705,   708,
-     369,   148,   148,   747,   710,   148,   373,   339,   745,   750,
-     748,   753,   148,   343,   148,   360,   148,   148,   518,   751,
-     734,   148,   148,   738,   513,   685,   392,   837,   853,   865,
-     147,   882,   350,   147,   147,   147,    -1,    -1,    -1,    -1,
-      -1,    -1,   147,   147,    -1,   147,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   147,    -1,   147,    -1,   699,    -1,   702,
-     702,   699,   148,   705,   147,    -1,   708,   147,    -1,   708,
-     708,   708,   702,   702,   702,    -1,   718,    -1,    -1,   702,
-     147,   150,    -1,    -1,    -1,   148,    -1,    -1,   148,    -1,
-      -1,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   748,   745,    -1,    -1,   748,    -1,    -1,   751,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,    -1,
-     748,    -1,    -1,   751,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       3,   148,     4,   395,     4,     3,   149,     8,     4,     4,
+       3,     8,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   149,     4,   149,   149,
+     149,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     149,     4,     4,     4,     4,     4,   151,     4,     4,     4,
+     149,   151,     4,     4,     4,     4,     4,     4,     4,   149,
+       4,   149,   149,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   149,     4,     4,     4,   151,
+       4,   151,   402,   403,   151,   151,     4,   149,     4,   149,
+     149,     4,     4,   151,   151,     4,   151,     4,     4,     7,
+     148,   148,     7,     7,     7,     7,     5,     5,     5,     5,
+       5,     5,   504,   505,     5,     5,   504,   505,     7,     7,
+       7,     7,     5,   515,     8,   517,     3,     5,   148,     5,
+     522,   148,     5,     7,   522,     7,     7,     7,     7,     7,
+       4,     7,     7,   522,   148,     7,     4,     4,     4,   148,
+       4,     4,     4,     3,   148,     6,     3,     6,     6,     3,
+      80,   481,     3,     6,     6,     4,     4,     4,     4,     4,
+     148,     4,   148,   148,   148,     4,     4,     3,   498,     6,
+       3,     6,     6,     3,   148,     4,     8,     4,     4,     4,
+     148,     4,     4,     4,   148,   148,     4,     4,   120,     4,
+       4,     4,     3,   148,     6,   148,   148,   126,     5,     8,
+       8,     4,     8,     7,     4,     4,     7,     5,     4,   148,
+       4,     4,     4,   148,   452,   148,   510,   148,   499,   323,
+     505,   148,   327,   148,   503,   149,   300,   703,   715,   149,
+     151,   724,   718,   722,   731,   379,   708,   706,   341,   149,
+     151,   711,   709,   714,   371,   751,   149,   149,   712,   749,
+     345,   754,   757,   376,   149,   738,   752,   149,   149,   149,
+     149,   352,   522,   755,   149,   742,   362,   517,   689,   841,
+     857,   869,   149,   886,   395,   148,    -1,   148,   148,   148,
+      -1,    -1,    -1,   148,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   148,   148,    -1,    -1,    -1,    -1,   148,    -1,
+      -1,   703,    -1,   706,   706,   703,   148,   709,   148,    -1,
+     712,    -1,    -1,   712,   712,   712,   706,   706,   149,    -1,
+     722,   149,   706,   706,   148,    -1,    -1,    -1,    -1,    -1,
+     149,   151,   148,    -1,    -1,    -1,   738,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   752,   749,    -1,    -1,
+     752,    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1,    -1,
+     749,    -1,    -1,   752,    -1,    -1,   755,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   836,    -1,    -1,    -1,   836,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   853,    -1,    -1,    -1,   853
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   840,    -1,
+      -1,    -1,   840,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   857,    -1,    -1,    -1,   857
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,     0,     5,     7,     9,
-     147,   148,   149,   150,   165,   166,   167,   172,     7,   181,
-       7,   187,     7,   198,     7,   275,     7,   339,     7,   353,
-       7,   370,     7,   298,     7,   322,     7,   251,     7,   426,
-     173,   168,   182,   188,   199,   276,   340,   354,   371,   299,
-     323,   252,   427,   165,   174,   175,   147,   170,   171,    10,
-     124,   133,   134,   147,   180,   183,   184,   185,   453,   455,
-     457,    11,    14,    15,    31,    32,    33,    34,    35,    36,
-      37,    38,    65,    66,    67,    68,    80,    83,    90,    98,
-      99,   102,   180,   189,   190,   191,   192,   193,   194,   195,
-     196,   205,   207,   231,   237,   243,   245,   259,   269,   292,
-     316,   393,   403,   415,   416,   424,    12,    13,   200,   201,
-     202,   204,     7,    47,    49,    56,    57,    58,    59,    60,
-      61,    70,    71,    78,   180,   191,   192,   193,   194,   277,
-     278,   279,   281,   283,   285,   287,   290,   291,   316,   333,
-     347,   364,   389,    48,    55,   180,   316,   341,   342,   343,
-     345,    50,    51,    52,    53,    54,   180,   316,   345,   355,
-     356,   357,   359,   360,   362,   363,    68,    72,    73,    74,
-      75,    76,    77,   180,   316,   372,   373,   374,   375,   377,
-     379,   381,   383,   385,   387,    16,    39,    41,    42,    44,
-      45,    46,   180,   221,   300,   301,   302,   303,   304,   305,
-     306,   308,   310,   312,   313,   315,    40,    43,   180,   221,
-     304,   310,   324,   325,   326,   327,   328,   330,   331,   332,
-      81,    82,   180,   253,   254,   255,   257,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   180,   428,   429,   430,   431,   433,   435,   436,   438,
-     439,   440,   443,   445,   446,   447,   448,   451,     6,     3,
-       4,     8,     3,   186,   458,   454,   456,     4,     3,     8,
-     197,   206,   208,     4,     4,     4,     4,     4,   270,   293,
-     317,   232,   244,   238,   394,   246,   260,   404,     4,   417,
-     425,     3,     8,   203,     4,     3,     8,   396,   334,   348,
-     280,   282,   284,     4,     4,   288,   286,   365,   390,     3,
-       8,   344,   346,     3,     8,   358,     4,   361,     4,     4,
-       3,     8,   388,   376,   378,   380,   382,   384,   386,     8,
-       3,   307,   222,     4,   311,   309,   314,     4,     8,     3,
-     329,     4,     8,     3,   256,   258,     3,     8,     4,   432,
-     434,     4,   437,     4,     4,   441,   444,     4,     4,     4,
-     449,   452,     3,     8,   165,   165,   147,     4,     4,     4,
-       4,   184,     4,     4,     4,   148,   148,   148,   148,   148,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     148,     4,     4,   190,     4,   150,   201,    69,   180,   221,
-     316,   397,   398,   399,   400,   401,     4,     4,     4,     4,
-       4,   148,   150,     4,     4,     4,     4,   278,     4,     4,
-     342,     4,   148,     4,   148,   148,   356,     4,     4,     4,
-       4,     4,     4,     4,   374,     4,     4,   148,     4,     4,
-       4,   150,   302,     4,   150,   326,     4,     4,   254,   150,
-       4,     4,   148,     4,   148,   148,     4,     4,   150,   150,
-     150,     4,     4,   429,     4,     7,     7,   165,   165,     7,
-       7,     7,     5,     5,     5,     5,     5,     5,     5,     5,
-       7,     7,     7,     7,     5,   176,   402,     8,     3,     5,
-       5,   147,   147,   147,    62,    63,    64,   289,   147,     5,
-       7,   147,   167,   169,   147,   147,   176,   176,   176,   147,
-     147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
-     165,   147,   147,   147,   117,   118,   442,   119,   120,   121,
-     122,   123,   150,   450,   147,   165,   189,   125,   459,   460,
-     461,   200,    16,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,   180,   209,   210,   211,   214,   216,   218,
-     220,   221,   223,   224,   225,   226,   227,   229,   209,     7,
-     271,   272,   273,     7,   294,   295,   296,     7,   318,   319,
-     320,    74,   147,   233,   234,   235,   236,   174,    75,    77,
-     235,   239,   240,   241,   242,   285,   395,     7,   247,   248,
-     249,    84,    85,    86,    87,    88,    89,   261,   262,   263,
-     264,   265,   266,   267,   268,    16,    94,    95,    96,    97,
-     180,   223,   405,   406,   407,   410,   411,   413,   414,   100,
-     101,   418,   419,   420,   422,   428,   177,     4,   399,     7,
-     335,   336,   337,     7,   349,   350,   351,     7,   366,   367,
-     368,    79,   391,     8,   462,     3,     8,     8,   212,   215,
-     217,   219,     4,     4,     4,     4,     4,   228,   230,     3,
-       8,     8,   274,     6,     3,   297,     6,     3,   321,     6,
-       3,     3,     6,     6,     3,     6,     3,     6,   250,     6,
-       3,     4,     4,     4,     4,     4,     4,     3,     8,   408,
-     412,     4,     4,     4,     3,     8,   421,   423,     3,     8,
-       8,   147,   178,   179,   147,   338,     6,     3,   352,     6,
-       3,   369,     6,     3,   392,     8,     4,   460,     4,     4,
-       4,     4,   148,   150,   148,   150,   148,     4,     4,   210,
-     277,   273,   300,   296,   324,   320,   234,   240,   285,   253,
-     249,   148,   148,   148,   148,   148,   148,   262,     4,     4,
-     148,   148,   148,   406,     4,     4,   419,     6,     3,   341,
-     337,   355,   351,   372,   368,     4,     5,    17,    18,    19,
-      20,   213,   147,   147,   147,   147,   147,     8,     8,     8,
-       8,    91,    92,    93,   409,   147,   147,   147,   147,     8,
-       8,     8,   147,     7,   463,   464,   465,     3,     6,   126,
-     128,   129,   180,   221,   466,   467,   468,   469,   471,   464,
-     472,     4,   470,     3,     8,     4,   148,     4,   467,     5,
-     147,     7,   473,   474,   475,     3,     6,   127,   130,   131,
-     132,   476,   477,   478,   480,   481,   482,   474,   479,     4,
-       4,     4,     3,     8,     4,   150,   148,   148,   477,   147
+       0,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,     0,     5,     7,     9,
+     148,   149,   150,   151,   166,   167,   168,   173,     7,   182,
+       7,   188,     7,   199,     7,   276,     7,   341,     7,   355,
+       7,   372,     7,   299,     7,   323,     7,   252,     7,   428,
+     174,   169,   183,   189,   200,   277,   342,   356,   373,   300,
+     324,   253,   429,   166,   175,   176,   148,   171,   172,    10,
+     125,   134,   135,   148,   181,   184,   185,   186,   455,   457,
+     459,    11,    14,    15,    31,    32,    33,    34,    35,    36,
+      37,    38,    66,    67,    68,    69,    81,    84,    91,    99,
+     100,   103,   181,   190,   191,   192,   193,   194,   195,   196,
+     197,   206,   208,   232,   238,   244,   246,   260,   270,   293,
+     317,   395,   405,   417,   418,   426,    12,    13,   201,   202,
+     203,   205,     7,    48,    50,    57,    58,    59,    60,    61,
+      62,    71,    72,    79,   181,   192,   193,   194,   195,   278,
+     279,   280,   282,   284,   286,   288,   291,   292,   317,   335,
+     349,   366,   391,    49,    56,   181,   317,   343,   344,   345,
+     347,    51,    52,    53,    54,    55,   181,   317,   347,   357,
+     358,   359,   361,   362,   364,   365,    69,    73,    74,    75,
+      76,    77,    78,   181,   317,   374,   375,   376,   377,   379,
+     381,   383,   385,   387,   389,    16,    39,    41,    42,    45,
+      46,    47,   181,   222,   301,   302,   303,   304,   305,   306,
+     307,   309,   311,   313,   314,   316,    40,    43,    44,   181,
+     222,   305,   311,   325,   326,   327,   328,   329,   331,   332,
+     333,   334,    82,    83,   181,   254,   255,   256,   258,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   181,   430,   431,   432,   433,   435,   437,
+     438,   440,   441,   442,   445,   447,   448,   449,   450,   453,
+       6,     3,     4,     8,     3,   187,   460,   456,   458,     4,
+       3,     8,   198,   207,   209,     4,     4,     4,     4,     4,
+     271,   294,   318,   233,   245,   239,   396,   247,   261,   406,
+       4,   419,   427,     3,     8,   204,     4,     3,     8,   398,
+     336,   350,   281,   283,   285,     4,     4,   289,   287,   367,
+     392,     3,     8,   346,   348,     3,     8,   360,     4,   363,
+       4,     4,     3,     8,   390,   378,   380,   382,   384,   386,
+     388,     8,     3,   308,   223,     4,   312,   310,   315,     4,
+       8,     3,   330,     4,     4,     8,     3,   257,   259,     3,
+       8,     4,   434,   436,     4,   439,     4,     4,   443,   446,
+       4,     4,     4,   451,   454,     3,     8,   166,   166,   148,
+       4,     4,     4,     4,   185,     4,     4,     4,   149,   149,
+     149,   149,   149,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   149,     4,     4,   191,     4,   151,   202,
+      70,   181,   222,   317,   399,   400,   401,   402,   403,     4,
+       4,     4,     4,     4,   149,   151,     4,     4,     4,     4,
+     279,     4,     4,   344,     4,   149,     4,   149,   149,   358,
+       4,     4,     4,     4,     4,     4,     4,   376,     4,     4,
+     149,     4,     4,     4,   151,   303,     4,   151,   151,   327,
+       4,     4,   255,   151,     4,     4,   149,     4,   149,   149,
+       4,     4,   151,   151,   151,     4,     4,   431,     4,     7,
+       7,   166,   166,     7,     7,     7,     5,     5,     5,     5,
+       5,     5,     5,     5,     7,     7,     7,     7,     5,   177,
+     404,     8,     3,     5,     5,   148,   148,   148,    63,    64,
+      65,   290,   148,     5,     7,   148,   168,   170,   148,   148,
+     177,   177,   177,   148,   148,   148,   148,   148,   148,   148,
+     148,   148,   148,   148,   166,   148,   148,   148,   118,   119,
+     444,   120,   121,   122,   123,   124,   151,   452,   148,   166,
+     190,   126,   461,   462,   463,   201,    16,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,   181,   210,   211,
+     212,   215,   217,   219,   221,   222,   224,   225,   226,   227,
+     228,   230,   210,     7,   272,   273,   274,     7,   295,   296,
+     297,     7,   319,   320,   321,    75,   148,   234,   235,   236,
+     237,   175,    76,    78,   236,   240,   241,   242,   243,   286,
+     397,     7,   248,   249,   250,    85,    86,    87,    88,    89,
+      90,   262,   263,   264,   265,   266,   267,   268,   269,    16,
+      95,    96,    97,    98,   181,   224,   407,   408,   409,   412,
+     413,   415,   416,   101,   102,   420,   421,   422,   424,   430,
+     178,     4,   401,     7,   337,   338,   339,     7,   351,   352,
+     353,     7,   368,   369,   370,    80,   393,     8,   464,     3,
+       8,     8,   213,   216,   218,   220,     4,     4,     4,     4,
+       4,   229,   231,     3,     8,     8,   275,     6,     3,   298,
+       6,     3,   322,     6,     3,     3,     6,     6,     3,     6,
+       3,     6,   251,     6,     3,     4,     4,     4,     4,     4,
+       4,     3,     8,   410,   414,     4,     4,     4,     3,     8,
+     423,   425,     3,     8,     8,   148,   179,   180,   148,   340,
+       6,     3,   354,     6,     3,   371,     6,     3,   394,     8,
+       4,   462,     4,     4,     4,     4,   149,   151,   149,   151,
+     149,     4,     4,   211,   278,   274,   301,   297,   325,   321,
+     235,   241,   286,   254,   250,   149,   149,   149,   149,   149,
+     149,   263,     4,     4,   149,   149,   149,   408,     4,     4,
+     421,     6,     3,   343,   339,   357,   353,   374,   370,     4,
+       5,    17,    18,    19,    20,   214,   148,   148,   148,   148,
+     148,     8,     8,     8,     8,    92,    93,    94,   411,   148,
+     148,   148,   148,     8,     8,     8,   148,     7,   465,   466,
+     467,     3,     6,   127,   129,   130,   181,   222,   468,   469,
+     470,   471,   473,   466,   474,     4,   472,     3,     8,     4,
+     149,     4,   469,     5,   148,     7,   475,   476,   477,     3,
+       6,   128,   131,   132,   133,   478,   479,   480,   482,   483,
+     484,   476,   481,     4,     4,     4,     3,     8,     4,   151,
+     149,   149,   479,   148
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   151,   153,   152,   154,   152,   155,   152,   156,   152,
-     157,   152,   158,   152,   159,   152,   160,   152,   161,   152,
-     162,   152,   163,   152,   164,   152,   165,   165,   165,   165,
-     165,   165,   165,   166,   168,   167,   169,   170,   170,   171,
-     171,   173,   172,   174,   174,   175,   175,   177,   176,   178,
-     178,   179,   179,   180,   182,   181,   183,   183,   184,   184,
-     184,   184,   184,   186,   185,   188,   187,   189,   189,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   191,   192,   193,   194,   195,   197,   196,   199,   198,
-     200,   200,   201,   201,   203,   202,   204,   206,   205,   208,
-     207,   209,   209,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,   210,   210,   210,   212,   211,   213,   213,
-     213,   213,   215,   214,   217,   216,   219,   218,   220,   222,
-     221,   223,   224,   225,   226,   228,   227,   230,   229,   232,
-     231,   233,   233,   234,   234,   235,   236,   238,   237,   239,
-     239,   240,   240,   240,   241,   242,   244,   243,   246,   245,
-     247,   247,   248,   248,   250,   249,   252,   251,   253,   253,
-     253,   254,   254,   256,   255,   258,   257,   260,   259,   261,
-     261,   262,   262,   262,   262,   262,   262,   263,   264,   265,
-     266,   267,   268,   270,   269,   271,   271,   272,   272,   274,
-     273,   276,   275,   277,   277,   278,   278,   278,   278,   278,
-     278,   278,   278,   278,   278,   278,   278,   278,   278,   278,
-     278,   278,   280,   279,   282,   281,   284,   283,   286,   285,
-     288,   287,   289,   289,   289,   290,   291,   293,   292,   294,
-     294,   295,   295,   297,   296,   299,   298,   300,   300,   301,
-     301,   302,   302,   302,   302,   302,   302,   302,   302,   303,
-     304,   305,   307,   306,   309,   308,   311,   310,   312,   314,
-     313,   315,   317,   316,   318,   318,   319,   319,   321,   320,
-     323,   322,   324,   324,   325,   325,   326,   326,   326,   326,
-     326,   326,   327,   329,   328,   330,   331,   332,   334,   333,
-     335,   335,   336,   336,   338,   337,   340,   339,   341,   341,
-     342,   342,   342,   342,   344,   343,   346,   345,   348,   347,
-     349,   349,   350,   350,   352,   351,   354,   353,   355,   355,
-     356,   356,   356,   356,   356,   356,   356,   356,   358,   357,
-     359,   361,   360,   362,   363,   365,   364,   366,   366,   367,
-     367,   369,   368,   371,   370,   372,   372,   373,   373,   374,
-     374,   374,   374,   374,   374,   374,   374,   374,   376,   375,
+       0,   152,   154,   153,   155,   153,   156,   153,   157,   153,
+     158,   153,   159,   153,   160,   153,   161,   153,   162,   153,
+     163,   153,   164,   153,   165,   153,   166,   166,   166,   166,
+     166,   166,   166,   167,   169,   168,   170,   171,   171,   172,
+     172,   174,   173,   175,   175,   176,   176,   178,   177,   179,
+     179,   180,   180,   181,   183,   182,   184,   184,   185,   185,
+     185,   185,   185,   187,   186,   189,   188,   190,   190,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   192,   193,   194,   195,   196,   198,   197,   200,   199,
+     201,   201,   202,   202,   204,   203,   205,   207,   206,   209,
+     208,   210,   210,   211,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   213,   212,   214,   214,
+     214,   214,   216,   215,   218,   217,   220,   219,   221,   223,
+     222,   224,   225,   226,   227,   229,   228,   231,   230,   233,
+     232,   234,   234,   235,   235,   236,   237,   239,   238,   240,
+     240,   241,   241,   241,   242,   243,   245,   244,   247,   246,
+     248,   248,   249,   249,   251,   250,   253,   252,   254,   254,
+     254,   255,   255,   257,   256,   259,   258,   261,   260,   262,
+     262,   263,   263,   263,   263,   263,   263,   264,   265,   266,
+     267,   268,   269,   271,   270,   272,   272,   273,   273,   275,
+     274,   277,   276,   278,   278,   279,   279,   279,   279,   279,
+     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
+     279,   279,   281,   280,   283,   282,   285,   284,   287,   286,
+     289,   288,   290,   290,   290,   291,   292,   294,   293,   295,
+     295,   296,   296,   298,   297,   300,   299,   301,   301,   302,
+     302,   303,   303,   303,   303,   303,   303,   303,   303,   304,
+     305,   306,   308,   307,   310,   309,   312,   311,   313,   315,
+     314,   316,   318,   317,   319,   319,   320,   320,   322,   321,
+     324,   323,   325,   325,   326,   326,   327,   327,   327,   327,
+     327,   327,   327,   328,   330,   329,   331,   332,   333,   334,
+     336,   335,   337,   337,   338,   338,   340,   339,   342,   341,
+     343,   343,   344,   344,   344,   344,   346,   345,   348,   347,
+     350,   349,   351,   351,   352,   352,   354,   353,   356,   355,
+     357,   357,   358,   358,   358,   358,   358,   358,   358,   358,
+     360,   359,   361,   363,   362,   364,   365,   367,   366,   368,
+     368,   369,   369,   371,   370,   373,   372,   374,   374,   375,
+     375,   376,   376,   376,   376,   376,   376,   376,   376,   376,
      378,   377,   380,   379,   382,   381,   384,   383,   386,   385,
-     388,   387,   390,   389,   392,   391,   394,   393,   395,   395,
-     396,   285,   397,   397,   398,   398,   399,   399,   399,   399,
-     400,   402,   401,   404,   403,   405,   405,   406,   406,   406,
-     406,   406,   406,   406,   408,   407,   409,   409,   409,   410,
-     412,   411,   413,   414,   415,   417,   416,   418,   418,   419,
-     419,   421,   420,   423,   422,   425,   424,   427,   426,   428,
-     428,   429,   429,   429,   429,   429,   429,   429,   429,   429,
-     429,   429,   429,   429,   429,   429,   430,   432,   431,   434,
-     433,   435,   437,   436,   438,   439,   441,   440,   442,   442,
-     444,   443,   445,   446,   447,   449,   448,   450,   450,   450,
-     450,   450,   452,   451,   454,   453,   456,   455,   458,   457,
-     459,   459,   460,   462,   461,   463,   463,   465,   464,   466,
-     466,   467,   467,   467,   467,   467,   468,   470,   469,   472,
-     471,   473,   473,   475,   474,   476,   476,   477,   477,   477,
-     477,   479,   478,   480,   481,   482
+     388,   387,   390,   389,   392,   391,   394,   393,   396,   395,
+     397,   397,   398,   286,   399,   399,   400,   400,   401,   401,
+     401,   401,   402,   404,   403,   406,   405,   407,   407,   408,
+     408,   408,   408,   408,   408,   408,   410,   409,   411,   411,
+     411,   412,   414,   413,   415,   416,   417,   419,   418,   420,
+     420,   421,   421,   423,   422,   425,   424,   427,   426,   429,
+     428,   430,   430,   431,   431,   431,   431,   431,   431,   431,
+     431,   431,   431,   431,   431,   431,   431,   431,   432,   434,
+     433,   436,   435,   437,   439,   438,   440,   441,   443,   442,
+     444,   444,   446,   445,   447,   448,   449,   451,   450,   452,
+     452,   452,   452,   452,   454,   453,   456,   455,   458,   457,
+     460,   459,   461,   461,   462,   464,   463,   465,   465,   467,
+     466,   468,   468,   469,   469,   469,   469,   469,   470,   472,
+     471,   474,   473,   475,   475,   477,   476,   478,   478,   479,
+     479,   479,   479,   481,   480,   482,   483,   484
   };
 
   const unsigned char
@@ -4038,30 +4050,30 @@ namespace isc { namespace dhcp {
        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,     0,     4,     1,     1,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       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,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     6,     0,     4,     0,     6,     1,     3,
-       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     0,     4,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     1,     1,     1,     3,
-       0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
-       1,     0,     4,     0,     4,     0,     6,     0,     4,     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,     0,     4,     0,     4,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       1,     3,     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,     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,     6,
-       1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
-       3,     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
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     6,     0,     4,     0,     6,
+       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
+       1,     3,     0,     4,     3,     3,     3,     0,     6,     1,
+       3,     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,     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,     6,     1,     3,     1,     0,     6,     1,     3,     0,
+       4,     1,     3,     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
   };
 
 
@@ -4081,7 +4093,7 @@ namespace isc { namespace dhcp {
   "\"keyspace\"", "\"preferred-lifetime\"", "\"valid-lifetime\"",
   "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
   "\"subnet6\"", "\"option-def\"", "\"option-data\"", "\"name\"",
-  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
+  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", "\"persistent\"",
   "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
   "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
   "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
@@ -4158,10 +4170,10 @@ namespace isc { namespace dhcp {
   "option_data_params", "not_empty_option_data_params",
   "option_data_param", "option_data_name", "option_data_data", "$@58",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "pools_list", "$@59", "pools_list_content", "not_empty_pools_list",
-  "pool_list_entry", "$@60", "sub_pool6", "$@61", "pool_params",
-  "pool_param", "pool_entry", "$@62", "user_context", "$@63",
-  "pd_pools_list", "$@64", "pd_pools_list_content",
+  "option_data_persistent", "pools_list", "$@59", "pools_list_content",
+  "not_empty_pools_list", "pool_list_entry", "$@60", "sub_pool6", "$@61",
+  "pool_params", "pool_param", "pool_entry", "$@62", "user_context",
+  "$@63", "pd_pools_list", "$@64", "pd_pools_list_content",
   "not_empty_pd_pools_list", "pd_pool_entry", "$@65", "sub_pd_pool",
   "$@66", "pd_pool_params", "pd_pool_param", "pd_prefix", "$@67",
   "pd_prefix_len", "excluded_prefix", "$@68", "excluded_prefix_len",
@@ -4199,60 +4211,60 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   232,   232,   232,   233,   233,   234,   234,   235,   235,
-     236,   236,   237,   237,   238,   238,   239,   239,   240,   240,
-     241,   241,   242,   242,   243,   243,   251,   252,   253,   254,
-     255,   256,   257,   260,   265,   265,   276,   279,   280,   283,
-     287,   294,   294,   301,   302,   305,   309,   316,   316,   323,
-     324,   327,   331,   342,   352,   352,   364,   365,   369,   370,
-     371,   372,   373,   376,   376,   393,   393,   401,   402,   407,
-     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
-     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
-     428,   431,   436,   441,   446,   451,   456,   456,   466,   466,
-     474,   475,   478,   479,   482,   482,   492,   498,   498,   508,
-     508,   518,   519,   522,   523,   524,   525,   526,   527,   528,
-     529,   530,   531,   532,   533,   534,   537,   537,   544,   545,
-     546,   547,   550,   550,   558,   558,   566,   566,   574,   579,
-     579,   587,   592,   597,   602,   607,   607,   615,   615,   624,
-     624,   634,   635,   638,   639,   642,   647,   652,   652,   662,
-     663,   666,   667,   668,   671,   676,   683,   683,   693,   693,
-     703,   704,   707,   708,   711,   711,   719,   719,   727,   728,
-     729,   732,   733,   736,   736,   744,   744,   752,   752,   762,
-     763,   766,   767,   768,   769,   770,   771,   774,   779,   784,
-     789,   794,   799,   807,   807,   820,   821,   824,   825,   832,
-     832,   855,   855,   864,   865,   869,   870,   871,   872,   873,
-     874,   875,   876,   877,   878,   879,   880,   881,   882,   883,
-     884,   885,   888,   888,   896,   896,   904,   904,   912,   912,
-     920,   920,   927,   928,   929,   932,   937,   946,   946,   958,
-     959,   962,   963,   968,   968,   979,   979,   989,   990,   993,
-     994,   997,   998,   999,  1000,  1001,  1002,  1003,  1004,  1007,
-    1009,  1014,  1016,  1016,  1024,  1024,  1032,  1032,  1040,  1042,
-    1042,  1050,  1059,  1059,  1071,  1072,  1077,  1078,  1083,  1083,
-    1094,  1094,  1105,  1106,  1111,  1112,  1117,  1118,  1119,  1120,
-    1121,  1122,  1125,  1127,  1127,  1135,  1137,  1139,  1147,  1147,
-    1159,  1160,  1163,  1164,  1167,  1167,  1175,  1175,  1183,  1184,
-    1187,  1188,  1189,  1190,  1193,  1193,  1201,  1201,  1211,  1211,
-    1223,  1224,  1227,  1228,  1231,  1231,  1239,  1239,  1247,  1248,
-    1251,  1252,  1253,  1254,  1255,  1256,  1257,  1258,  1261,  1261,
-    1269,  1274,  1274,  1282,  1287,  1295,  1295,  1305,  1306,  1309,
-    1310,  1313,  1313,  1321,  1321,  1329,  1330,  1333,  1334,  1338,
-    1339,  1340,  1341,  1342,  1343,  1344,  1345,  1346,  1349,  1349,
-    1359,  1359,  1369,  1369,  1377,  1377,  1385,  1385,  1393,  1393,
-    1401,  1401,  1414,  1414,  1424,  1424,  1435,  1435,  1445,  1446,
-    1449,  1449,  1457,  1458,  1461,  1462,  1465,  1466,  1467,  1468,
-    1471,  1473,  1473,  1484,  1484,  1494,  1495,  1498,  1499,  1500,
-    1501,  1502,  1503,  1504,  1507,  1507,  1514,  1515,  1516,  1519,
-    1524,  1524,  1532,  1537,  1544,  1551,  1551,  1561,  1562,  1565,
-    1566,  1569,  1569,  1577,  1577,  1587,  1587,  1597,  1597,  1605,
-    1606,  1609,  1610,  1611,  1612,  1613,  1614,  1615,  1616,  1617,
-    1618,  1619,  1620,  1621,  1622,  1623,  1626,  1631,  1631,  1639,
-    1639,  1647,  1652,  1652,  1660,  1665,  1670,  1670,  1678,  1679,
-    1682,  1682,  1690,  1695,  1700,  1705,  1705,  1713,  1716,  1719,
-    1722,  1725,  1731,  1731,  1741,  1741,  1748,  1748,  1760,  1760,
-    1773,  1774,  1778,  1782,  1782,  1794,  1795,  1799,  1799,  1807,
-    1808,  1811,  1812,  1813,  1814,  1815,  1818,  1823,  1823,  1831,
-    1831,  1841,  1842,  1845,  1845,  1853,  1854,  1857,  1858,  1859,
-    1860,  1863,  1863,  1871,  1876,  1881
+       0,   233,   233,   233,   234,   234,   235,   235,   236,   236,
+     237,   237,   238,   238,   239,   239,   240,   240,   241,   241,
+     242,   242,   243,   243,   244,   244,   252,   253,   254,   255,
+     256,   257,   258,   261,   266,   266,   277,   280,   281,   284,
+     288,   295,   295,   302,   303,   306,   310,   317,   317,   324,
+     325,   328,   332,   343,   353,   353,   365,   366,   370,   371,
+     372,   373,   374,   377,   377,   394,   394,   402,   403,   408,
+     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
+     419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+     429,   432,   437,   442,   447,   452,   457,   457,   467,   467,
+     475,   476,   479,   480,   483,   483,   493,   499,   499,   509,
+     509,   519,   520,   523,   524,   525,   526,   527,   528,   529,
+     530,   531,   532,   533,   534,   535,   538,   538,   545,   546,
+     547,   548,   551,   551,   559,   559,   567,   567,   575,   580,
+     580,   588,   593,   598,   603,   608,   608,   616,   616,   625,
+     625,   635,   636,   639,   640,   643,   648,   653,   653,   663,
+     664,   667,   668,   669,   672,   677,   684,   684,   694,   694,
+     704,   705,   708,   709,   712,   712,   720,   720,   728,   729,
+     730,   733,   734,   737,   737,   745,   745,   753,   753,   763,
+     764,   767,   768,   769,   770,   771,   772,   775,   780,   785,
+     790,   795,   800,   808,   808,   821,   822,   825,   826,   833,
+     833,   856,   856,   865,   866,   870,   871,   872,   873,   874,
+     875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
+     885,   886,   889,   889,   897,   897,   905,   905,   913,   913,
+     921,   921,   928,   929,   930,   933,   938,   947,   947,   959,
+     960,   963,   964,   969,   969,   980,   980,   990,   991,   994,
+     995,   998,   999,  1000,  1001,  1002,  1003,  1004,  1005,  1008,
+    1010,  1015,  1017,  1017,  1025,  1025,  1033,  1033,  1041,  1043,
+    1043,  1051,  1060,  1060,  1072,  1073,  1078,  1079,  1084,  1084,
+    1095,  1095,  1106,  1107,  1112,  1113,  1118,  1119,  1120,  1121,
+    1122,  1123,  1124,  1127,  1129,  1129,  1137,  1139,  1141,  1146,
+    1154,  1154,  1166,  1167,  1170,  1171,  1174,  1174,  1182,  1182,
+    1190,  1191,  1194,  1195,  1196,  1197,  1200,  1200,  1208,  1208,
+    1218,  1218,  1230,  1231,  1234,  1235,  1238,  1238,  1246,  1246,
+    1254,  1255,  1258,  1259,  1260,  1261,  1262,  1263,  1264,  1265,
+    1268,  1268,  1276,  1281,  1281,  1289,  1294,  1302,  1302,  1312,
+    1313,  1316,  1317,  1320,  1320,  1328,  1328,  1336,  1337,  1340,
+    1341,  1345,  1346,  1347,  1348,  1349,  1350,  1351,  1352,  1353,
+    1356,  1356,  1366,  1366,  1376,  1376,  1384,  1384,  1392,  1392,
+    1400,  1400,  1408,  1408,  1421,  1421,  1431,  1431,  1442,  1442,
+    1452,  1453,  1456,  1456,  1464,  1465,  1468,  1469,  1472,  1473,
+    1474,  1475,  1478,  1480,  1480,  1491,  1491,  1501,  1502,  1505,
+    1506,  1507,  1508,  1509,  1510,  1511,  1514,  1514,  1521,  1522,
+    1523,  1526,  1531,  1531,  1539,  1544,  1551,  1558,  1558,  1568,
+    1569,  1572,  1573,  1576,  1576,  1584,  1584,  1594,  1594,  1604,
+    1604,  1612,  1613,  1616,  1617,  1618,  1619,  1620,  1621,  1622,
+    1623,  1624,  1625,  1626,  1627,  1628,  1629,  1630,  1633,  1638,
+    1638,  1646,  1646,  1654,  1659,  1659,  1667,  1672,  1677,  1677,
+    1685,  1686,  1689,  1689,  1697,  1702,  1707,  1712,  1712,  1720,
+    1723,  1726,  1729,  1732,  1738,  1738,  1748,  1748,  1755,  1755,
+    1767,  1767,  1780,  1781,  1785,  1789,  1789,  1801,  1802,  1806,
+    1806,  1814,  1815,  1818,  1819,  1820,  1821,  1822,  1825,  1830,
+    1830,  1838,  1838,  1848,  1849,  1852,  1852,  1860,  1861,  1864,
+    1865,  1866,  1867,  1870,  1870,  1878,  1883,  1888
   };
 
   // Print the state stack on the debug stream.
@@ -4287,8 +4299,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4291 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1886 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4303 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1893 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index 085dd1cc9599f18590da18e343f9082fc10f3608..1980e675d8c6ae5eb51583841798055b5dbf262d 100644 (file)
@@ -40,7 +40,7 @@
 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 // //                    "%code requires" blocks.
-#line 17 "dhcp6_parser.yy" // lalr1.cc:377
+#line 17 "dhcp6_parser.yy" // lalr1.cc:392
 
 #include <string>
 #include <cc/data.h>
@@ -52,7 +52,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 56 "dhcp6_parser.h" // lalr1.cc:377
+#line 56 "dhcp6_parser.h" // lalr1.cc:392
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -135,9 +135,9 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER6_DEBUG */
 
-#line 14 "dhcp6_parser.yy" // lalr1.cc:377
+#line 14 "dhcp6_parser.yy" // lalr1.cc:392
 namespace isc { namespace dhcp {
-#line 141 "dhcp6_parser.h" // lalr1.cc:377
+#line 141 "dhcp6_parser.h" // lalr1.cc:392
 
 
 
@@ -388,113 +388,114 @@ namespace isc { namespace dhcp {
         TOKEN_CODE = 296,
         TOKEN_SPACE = 297,
         TOKEN_CSV_FORMAT = 298,
-        TOKEN_RECORD_TYPES = 299,
-        TOKEN_ENCAPSULATE = 300,
-        TOKEN_ARRAY = 301,
-        TOKEN_POOLS = 302,
-        TOKEN_POOL = 303,
-        TOKEN_PD_POOLS = 304,
-        TOKEN_PREFIX = 305,
-        TOKEN_PREFIX_LEN = 306,
-        TOKEN_EXCLUDED_PREFIX = 307,
-        TOKEN_EXCLUDED_PREFIX_LEN = 308,
-        TOKEN_DELEGATED_LEN = 309,
-        TOKEN_USER_CONTEXT = 310,
-        TOKEN_SUBNET = 311,
-        TOKEN_INTERFACE = 312,
-        TOKEN_INTERFACE_ID = 313,
-        TOKEN_ID = 314,
-        TOKEN_RAPID_COMMIT = 315,
-        TOKEN_RESERVATION_MODE = 316,
-        TOKEN_DISABLED = 317,
-        TOKEN_OUT_OF_POOL = 318,
-        TOKEN_ALL = 319,
-        TOKEN_MAC_SOURCES = 320,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 321,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 322,
-        TOKEN_CLIENT_CLASSES = 323,
-        TOKEN_TEST = 324,
-        TOKEN_CLIENT_CLASS = 325,
-        TOKEN_RESERVATIONS = 326,
-        TOKEN_IP_ADDRESSES = 327,
-        TOKEN_PREFIXES = 328,
-        TOKEN_DUID = 329,
-        TOKEN_HW_ADDRESS = 330,
-        TOKEN_HOSTNAME = 331,
-        TOKEN_FLEX_ID = 332,
-        TOKEN_RELAY = 333,
-        TOKEN_IP_ADDRESS = 334,
-        TOKEN_HOOKS_LIBRARIES = 335,
-        TOKEN_LIBRARY = 336,
-        TOKEN_PARAMETERS = 337,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 338,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 339,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 340,
-        TOKEN_HOLD_RECLAIMED_TIME = 341,
-        TOKEN_MAX_RECLAIM_LEASES = 342,
-        TOKEN_MAX_RECLAIM_TIME = 343,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 344,
-        TOKEN_SERVER_ID = 345,
-        TOKEN_LLT = 346,
-        TOKEN_EN = 347,
-        TOKEN_LL = 348,
-        TOKEN_IDENTIFIER = 349,
-        TOKEN_HTYPE = 350,
-        TOKEN_TIME = 351,
-        TOKEN_ENTERPRISE_ID = 352,
-        TOKEN_DHCP4O6_PORT = 353,
-        TOKEN_CONTROL_SOCKET = 354,
-        TOKEN_SOCKET_TYPE = 355,
-        TOKEN_SOCKET_NAME = 356,
-        TOKEN_DHCP_DDNS = 357,
-        TOKEN_ENABLE_UPDATES = 358,
-        TOKEN_QUALIFYING_SUFFIX = 359,
-        TOKEN_SERVER_IP = 360,
-        TOKEN_SERVER_PORT = 361,
-        TOKEN_SENDER_IP = 362,
-        TOKEN_SENDER_PORT = 363,
-        TOKEN_MAX_QUEUE_SIZE = 364,
-        TOKEN_NCR_PROTOCOL = 365,
-        TOKEN_NCR_FORMAT = 366,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 367,
-        TOKEN_OVERRIDE_NO_UPDATE = 368,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 369,
-        TOKEN_REPLACE_CLIENT_NAME = 370,
-        TOKEN_GENERATED_PREFIX = 371,
-        TOKEN_UDP = 372,
-        TOKEN_TCP = 373,
-        TOKEN_JSON = 374,
-        TOKEN_WHEN_PRESENT = 375,
-        TOKEN_NEVER = 376,
-        TOKEN_ALWAYS = 377,
-        TOKEN_WHEN_NOT_PRESENT = 378,
-        TOKEN_LOGGING = 379,
-        TOKEN_LOGGERS = 380,
-        TOKEN_OUTPUT_OPTIONS = 381,
-        TOKEN_OUTPUT = 382,
-        TOKEN_DEBUGLEVEL = 383,
-        TOKEN_SEVERITY = 384,
-        TOKEN_FLUSH = 385,
-        TOKEN_MAXSIZE = 386,
-        TOKEN_MAXVER = 387,
-        TOKEN_DHCP4 = 388,
-        TOKEN_DHCPDDNS = 389,
-        TOKEN_TOPLEVEL_JSON = 390,
-        TOKEN_TOPLEVEL_DHCP6 = 391,
-        TOKEN_SUB_DHCP6 = 392,
-        TOKEN_SUB_INTERFACES6 = 393,
-        TOKEN_SUB_SUBNET6 = 394,
-        TOKEN_SUB_POOL6 = 395,
-        TOKEN_SUB_PD_POOL = 396,
-        TOKEN_SUB_RESERVATION = 397,
-        TOKEN_SUB_OPTION_DEF = 398,
-        TOKEN_SUB_OPTION_DATA = 399,
-        TOKEN_SUB_HOOKS_LIBRARY = 400,
-        TOKEN_SUB_DHCP_DDNS = 401,
-        TOKEN_STRING = 402,
-        TOKEN_INTEGER = 403,
-        TOKEN_FLOAT = 404,
-        TOKEN_BOOLEAN = 405
+        TOKEN_PERSISTENT = 299,
+        TOKEN_RECORD_TYPES = 300,
+        TOKEN_ENCAPSULATE = 301,
+        TOKEN_ARRAY = 302,
+        TOKEN_POOLS = 303,
+        TOKEN_POOL = 304,
+        TOKEN_PD_POOLS = 305,
+        TOKEN_PREFIX = 306,
+        TOKEN_PREFIX_LEN = 307,
+        TOKEN_EXCLUDED_PREFIX = 308,
+        TOKEN_EXCLUDED_PREFIX_LEN = 309,
+        TOKEN_DELEGATED_LEN = 310,
+        TOKEN_USER_CONTEXT = 311,
+        TOKEN_SUBNET = 312,
+        TOKEN_INTERFACE = 313,
+        TOKEN_INTERFACE_ID = 314,
+        TOKEN_ID = 315,
+        TOKEN_RAPID_COMMIT = 316,
+        TOKEN_RESERVATION_MODE = 317,
+        TOKEN_DISABLED = 318,
+        TOKEN_OUT_OF_POOL = 319,
+        TOKEN_ALL = 320,
+        TOKEN_MAC_SOURCES = 321,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 322,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 323,
+        TOKEN_CLIENT_CLASSES = 324,
+        TOKEN_TEST = 325,
+        TOKEN_CLIENT_CLASS = 326,
+        TOKEN_RESERVATIONS = 327,
+        TOKEN_IP_ADDRESSES = 328,
+        TOKEN_PREFIXES = 329,
+        TOKEN_DUID = 330,
+        TOKEN_HW_ADDRESS = 331,
+        TOKEN_HOSTNAME = 332,
+        TOKEN_FLEX_ID = 333,
+        TOKEN_RELAY = 334,
+        TOKEN_IP_ADDRESS = 335,
+        TOKEN_HOOKS_LIBRARIES = 336,
+        TOKEN_LIBRARY = 337,
+        TOKEN_PARAMETERS = 338,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 339,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 340,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 341,
+        TOKEN_HOLD_RECLAIMED_TIME = 342,
+        TOKEN_MAX_RECLAIM_LEASES = 343,
+        TOKEN_MAX_RECLAIM_TIME = 344,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 345,
+        TOKEN_SERVER_ID = 346,
+        TOKEN_LLT = 347,
+        TOKEN_EN = 348,
+        TOKEN_LL = 349,
+        TOKEN_IDENTIFIER = 350,
+        TOKEN_HTYPE = 351,
+        TOKEN_TIME = 352,
+        TOKEN_ENTERPRISE_ID = 353,
+        TOKEN_DHCP4O6_PORT = 354,
+        TOKEN_CONTROL_SOCKET = 355,
+        TOKEN_SOCKET_TYPE = 356,
+        TOKEN_SOCKET_NAME = 357,
+        TOKEN_DHCP_DDNS = 358,
+        TOKEN_ENABLE_UPDATES = 359,
+        TOKEN_QUALIFYING_SUFFIX = 360,
+        TOKEN_SERVER_IP = 361,
+        TOKEN_SERVER_PORT = 362,
+        TOKEN_SENDER_IP = 363,
+        TOKEN_SENDER_PORT = 364,
+        TOKEN_MAX_QUEUE_SIZE = 365,
+        TOKEN_NCR_PROTOCOL = 366,
+        TOKEN_NCR_FORMAT = 367,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 368,
+        TOKEN_OVERRIDE_NO_UPDATE = 369,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 370,
+        TOKEN_REPLACE_CLIENT_NAME = 371,
+        TOKEN_GENERATED_PREFIX = 372,
+        TOKEN_UDP = 373,
+        TOKEN_TCP = 374,
+        TOKEN_JSON = 375,
+        TOKEN_WHEN_PRESENT = 376,
+        TOKEN_NEVER = 377,
+        TOKEN_ALWAYS = 378,
+        TOKEN_WHEN_NOT_PRESENT = 379,
+        TOKEN_LOGGING = 380,
+        TOKEN_LOGGERS = 381,
+        TOKEN_OUTPUT_OPTIONS = 382,
+        TOKEN_OUTPUT = 383,
+        TOKEN_DEBUGLEVEL = 384,
+        TOKEN_SEVERITY = 385,
+        TOKEN_FLUSH = 386,
+        TOKEN_MAXSIZE = 387,
+        TOKEN_MAXVER = 388,
+        TOKEN_DHCP4 = 389,
+        TOKEN_DHCPDDNS = 390,
+        TOKEN_TOPLEVEL_JSON = 391,
+        TOKEN_TOPLEVEL_DHCP6 = 392,
+        TOKEN_SUB_DHCP6 = 393,
+        TOKEN_SUB_INTERFACES6 = 394,
+        TOKEN_SUB_SUBNET6 = 395,
+        TOKEN_SUB_POOL6 = 396,
+        TOKEN_SUB_PD_POOL = 397,
+        TOKEN_SUB_RESERVATION = 398,
+        TOKEN_SUB_OPTION_DEF = 399,
+        TOKEN_SUB_OPTION_DATA = 400,
+        TOKEN_SUB_HOOKS_LIBRARY = 401,
+        TOKEN_SUB_DHCP_DDNS = 402,
+        TOKEN_STRING = 403,
+        TOKEN_INTEGER = 404,
+        TOKEN_FLOAT = 405,
+        TOKEN_BOOLEAN = 406
       };
     };
 
@@ -777,6 +778,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_CSV_FORMAT (const location_type& l);
 
+    static inline
+    symbol_type
+    make_PERSISTENT (const location_type& l);
+
     static inline
     symbol_type
     make_RECORD_TYPES (const location_type& l);
@@ -1410,12 +1415,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 795,     ///< Last index in yytable_.
-      yynnts_ = 332,  ///< Number of nonterminal symbols.
+      yylast_ = 799,     ///< Last index in yytable_.
+      yynnts_ = 333,  ///< Number of nonterminal symbols.
       yyfinal_ = 26, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 151  ///< Number of tokens.
+      yyntokens_ = 152  ///< Number of tokens.
     };
 
 
@@ -1472,9 +1477,9 @@ namespace isc { namespace dhcp {
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150
+     145,   146,   147,   148,   149,   150,   151
     };
-    const unsigned int user_token_number_max_ = 405;
+    const unsigned int user_token_number_max_ = 406;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1507,29 +1512,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1550,29 +1555,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1652,29 +1657,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1701,29 +1706,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 411: // duid_type
+      case 444: // ncr_protocol_value
+      case 452: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1797,7 +1802,7 @@ namespace isc { namespace dhcp {
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405
+     405,   406
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2054,6 +2059,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_CSV_FORMAT, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PERSISTENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PERSISTENT, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_RECORD_TYPES (const location_type& l)
   {
@@ -2697,9 +2708,9 @@ namespace isc { namespace dhcp {
   }
 
 
-#line 14 "dhcp6_parser.yy" // lalr1.cc:377
+#line 14 "dhcp6_parser.yy" // lalr1.cc:392
 } } // isc::dhcp
-#line 2703 "dhcp6_parser.h" // lalr1.cc:377
+#line 2714 "dhcp6_parser.h" // lalr1.cc:392
 
 
 
index c3f6621a3d8a8aec2740a076c382401222778701..3600f05d7cb923124cf3a6c13e1a55a064bbf390 100644 (file)
@@ -85,6 +85,7 @@ using namespace std;
   CODE "code"
   SPACE "space"
   CSV_FORMAT "csv-format"
+  PERSISTENT "persistent"
   RECORD_TYPES "record-types"
   ENCAPSULATE "encapsulate"
   ARRAY "array"
@@ -1119,6 +1120,7 @@ option_data_param: option_data_name
                  | option_data_code
                  | option_data_space
                  | option_data_csv_format
+                 | option_data_persistent
                  | unknown_map_entry
                  ;
 
@@ -1141,6 +1143,11 @@ option_data_csv_format: CSV_FORMAT COLON BOOLEAN {
     ctx.stack_.back()->set("csv-format", space);
 };
 
+option_data_persistent: PERSISTENT COLON BOOLEAN {
+    ElementPtr persist(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("persistent", persist);
+};
+
 // ---- pools ------------------------------------
 
 // This defines the "pools": [ ... ] entry that may appear in subnet6.
index 89a14b5b062b6aff90dfa4f3340fd164b8b4b36a..bc871510a314c94b004eb9e4cee0ba94cfd66480 100644 (file)
@@ -45,7 +45,8 @@ const SimpleDefaults SimpleParser6::OPTION6_DEF_DEFAULTS = {
 /// for those option-data declarations.
 const SimpleDefaults SimpleParser6::OPTION6_DEFAULTS = {
     { "space",        Element::string,  "dhcp6"},
-    { "csv-format",   Element::boolean, "true"}
+    { "csv-format",   Element::boolean, "true"},
+    { "persistent",   Element::boolean, "false"}
 };
 
 /// @brief This table defines default global values for DHCPv6
index 38dc406b5eae39a11c854a83a7264fa9fb2cca74..b3fb621554caff1b02ad5168a2c9ecacafdf3a1a 100644 (file)
@@ -3146,6 +3146,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"ABCDEF0105\",\n"
 "                \"name\": \"subscriber-id\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp6\"\n"
 "            },\n"
 "            {\n"
@@ -3153,6 +3154,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"01\",\n"
 "                \"name\": \"preference\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp6\"\n"
 "            }\n"
 "        ],\n"
@@ -3253,6 +3255,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"ABCDEF0105\",\n"
 "                        \"name\": \"subscriber-id\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp6\"\n"
 "                    },\n"
 "                    {\n"
@@ -3260,6 +3263,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"01\",\n"
 "                        \"name\": \"preference\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp6\"\n"
 "                    }\n"
 "                ],\n"
@@ -3328,6 +3332,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": false,\n"
 "                \"data\": \"ABCDEF0105\",\n"
 "                \"name\": \"subscriber-id\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp6\"\n"
 "            },\n"
 "            {\n"
@@ -3335,6 +3340,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            }\n"
 "        ],\n"
@@ -3429,6 +3435,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            },\n"
 "            {\n"
@@ -3436,6 +3443,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"192.168.2.1\",\n"
 "                \"name\": \"foo2\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            }\n"
 "        ],\n"
@@ -3514,6 +3522,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"11\",\n"
 "                \"name\": \"base-option\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"dhcp6\"\n"
 "            },\n"
 "            {\n"
@@ -3521,6 +3530,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"1234\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            },\n"
 "            {\n"
@@ -3528,6 +3538,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"192.168.2.1\",\n"
 "                \"name\": \"foo2\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"isc\"\n"
 "            }\n"
 "        ],\n"
@@ -3656,6 +3667,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"0102030405060708090A\",\n"
 "                        \"name\": \"subscriber-id\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp6\"\n"
 "                    }\n"
 "                ],\n"
@@ -3688,6 +3700,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                        \"csv-format\": false,\n"
 "                        \"data\": \"FFFEFDFCFB\",\n"
 "                        \"name\": \"user-class\",\n"
+"                        \"persistent\": false,\n"
 "                        \"space\": \"dhcp6\"\n"
 "                    }\n"
 "                ],\n"
@@ -3778,6 +3791,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"112233445566\",\n"
 "                                \"name\": \"subscriber-id\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -3794,6 +3808,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"AABBCCDDEE\",\n"
 "                                \"name\": \"user-class\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -3809,6 +3824,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"0102030405060708090A\",\n"
 "                                \"name\": \"subscriber-id\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -3821,6 +3837,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": false,\n"
 "                                \"data\": \"FFFEFDFCFB\",\n"
 "                                \"name\": \"user-class\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -3884,12 +3901,14 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"code\": 100,\n"
 "                \"csv-format\": false,\n"
 "                \"data\": \"1234\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-1234\"\n"
 "            },\n"
 "            {\n"
 "                \"code\": 100,\n"
 "                \"csv-format\": false,\n"
 "                \"data\": \"ABCDEF0105\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-4491\"\n"
 "            }\n"
 "        ],\n"
@@ -3974,6 +3993,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"csv-format\": true,\n"
 "                \"data\": \"this is a string vendor-opt\",\n"
 "                \"name\": \"foo\",\n"
+"                \"persistent\": false,\n"
 "                \"space\": \"vendor-4491\"\n"
 "            }\n"
 "        ],\n"
@@ -4530,6 +4550,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"2001:db8:2::abbc\",\n"
 "                                \"name\": \"dns-servers\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            },\n"
 "                            {\n"
@@ -4537,6 +4558,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"25\",\n"
 "                                \"name\": \"preference\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4553,6 +4575,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"2001:db8:2::1111\",\n"
 "                                \"name\": \"dns-servers\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            },\n"
 "                            {\n"
@@ -4560,6 +4583,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"11\",\n"
 "                                \"name\": \"preference\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4604,6 +4628,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"2001:db8:3::3333\",\n"
 "                                \"name\": \"dns-servers\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            },\n"
 "                            {\n"
@@ -4611,6 +4636,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"33\",\n"
 "                                \"name\": \"preference\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"dhcp6\"\n"
 "                            }\n"
 "                        ],\n"
@@ -4709,6 +4735,7 @@ const char* UNPARSED_CONFIGS[] = {
 "                                \"csv-format\": true,\n"
 "                                \"data\": \"11\",\n"
 "                                \"name\": \"foo\",\n"
+"                                \"persistent\": false,\n"
 "                                \"space\": \"isc\"\n"
 "                            }\n"
 "                        ],\n"
index 6bcd2f901534a6be16b44567cd76872f8a9701f1..73ba680ff7c6c9a42525de3d748dd9c4cfbb4eae 100644 (file)
@@ -224,6 +224,8 @@ CfgOption::toElement() const {
                 std::string repr = util::encode::encodeHex(bin);
                 map->set("data", Element::create(repr));
             }
+            // Set the persistency flag
+            map->set("persistent", Element::create(opt->persistent_));
             // Push on the list
             result->add(map);
         }
@@ -265,6 +267,8 @@ CfgOption::toElement() const {
                 std::string repr = util::encode::encodeHex(bin);
                 map->set("data", Element::create(repr));
             }
+            // Set the persistency flag
+            map->set("persistent", Element::create(opt->persistent_));
             // Push on the list
             result->add(map);
         }
index 73ceb07bbf450c961f709af12f79a44187757d4d..22a4e80dc8a1e1ca3fe0147e07d92a1909ef7cd2 100644 (file)
@@ -303,6 +303,19 @@ OptionDataParser::extractSpace(ConstElementPtr parent) const {
     return (space);
 }
 
+OptionalValue<bool>
+OptionDataParser::extractPersistent(ConstElementPtr parent) const {
+    bool persist = false;
+    try {
+        persist = getBoolean(parent, "persistent");
+
+    } catch (...) {
+        return (OptionalValue<bool>(persist));
+    }
+
+    return (OptionalValue<bool>(persist, OptionalValueState(true)));
+}
+
 template<typename SearchKey>
 OptionDefinitionPtr
 OptionDataParser::findOptionDefinition(const std::string& option_space,
@@ -337,6 +350,7 @@ OptionDataParser::createOption(ConstElementPtr option_data) {
     OptionalValue<uint32_t> code_param =  extractCode(option_data);
     OptionalValue<std::string> name_param = extractName(option_data);
     OptionalValue<bool> csv_format_param = extractCSVFormat(option_data);
+    OptionalValue<bool> persist_param = extractPersistent(option_data);
     std::string data_param = extractData(option_data);
     std::string space_param = extractSpace(option_data);
 
@@ -426,7 +440,7 @@ OptionDataParser::createOption(ConstElementPtr option_data) {
                                     binary));
 
         desc.option_ = option;
-        desc.persistent_ = false;
+        desc.persistent_ = persist_param.isSpecified() && persist_param;
     } else {
 
         // Option name is specified it should match the name in the definition.
@@ -447,7 +461,7 @@ OptionDataParser::createOption(ConstElementPtr option_data) {
                 def->optionFactory(universe, def->getCode(), data_tokens) :
                 def->optionFactory(universe, def->getCode(), binary);
             desc.option_ = option;
-            desc.persistent_ = false;
+            desc.persistent_ = persist_param.isSpecified() && persist_param;
             if (use_csv) {
                 desc.formatted_value_ = data_param;
             }
index 6ddf10bf5d8376081d8b6392058dcb8a466429fa..b4f927efea4a495c355e2f7d0031aee50422f88b 100644 (file)
@@ -462,6 +462,11 @@ private:
     /// @return Option space name.
     std::string extractSpace(data::ConstElementPtr parent) const;
 
+    /// @brief Retrieves persistent parameter as an optional value.
+    ///
+    /// @return Value of the persistent parameter, possibly unspecified.
+    util::OptionalValue<bool> extractPersistent(data::ConstElementPtr parent) const;
+
     /// @brief Address family: @c AF_INET or @c AF_INET6.
     uint16_t address_family_;
 };
index d538e6893c563e41121627774a62d3b9c67dcf7b..7a566a243b9e206a0a9e26007d2bb6ad9c60c80c 100644 (file)
@@ -612,7 +612,7 @@ TEST_F(CfgOptionTest, unparse) {
     OptionPtr opt3(new Option(Option::V6, D6O_STATUS_CODE, OptionBuffer(2, 0)));
     cfg.add(opt3, false, DHCP6_OPTION_SPACE);
     OptionPtr opt4(new Option(Option::V6, 100, OptionBuffer(4, 0x21)));
-    cfg.add(opt4, false, "vendor-1234");
+    cfg.add(opt4, true, "vendor-1234");
 
     // Unparse
     std::string expected = "[\n"
@@ -620,23 +620,27 @@ TEST_F(CfgOptionTest, unparse) {
         "    \"code\": 100,\n"
         "    \"space\": \"dns\",\n"
         "    \"csv-format\": false,\n"
-        "    \"data\": \"12121212\"\n"
+        "    \"data\": \"12121212\",\n"
+        "    \"persistent\": false\n"
         "},{\n"
         "    \"code\": 101,\n"
         "    \"space\": \"dns\",\n"
         "    \"csv-format\": true,\n"
-        "    \"data\": \"12, 12, 12, 12\"\n"
+        "    \"data\": \"12, 12, 12, 12\",\n"
+        "    \"persistent\": false\n"
         "},{\n"
         "    \"code\": 13,\n"
         "    \"name\": \"status-code\",\n"
         "    \"space\": \"dhcp6\",\n"
         "    \"csv-format\": false,\n"
-        "    \"data\": \"0000\"\n"
+        "    \"data\": \"0000\",\n"
+        "    \"persistent\": false\n"
         "},{\n"
         "    \"code\": 100,\n"
         "    \"space\": \"vendor-1234\",\n"
         "    \"csv-format\": false,\n"
-        "    \"data\": \"21212121\"\n"
+        "    \"data\": \"21212121\",\n"
+        "    \"persistent\": true\n"
         "}]\n";
     isc::test::runToElementTest<CfgOption>(expected, cfg);
 }
index 555d87f5d777d240e82ec9d52b0442401d570e4a..8e8da67534fec1beb4e7d432b46ed0da6ee93ecb 100644 (file)
@@ -621,13 +621,15 @@ const SimpleDefaults ParseConfigTest::OPTION4_DEF_DEFAULTS = {
 /// This table defines default values for options in DHCPv6
 const SimpleDefaults ParseConfigTest::OPTION6_DEFAULTS = {
     { "space",        Element::string,  "dhcp6"},
-    { "csv-format",   Element::boolean, "true"}
+    { "csv-format",   Element::boolean, "true"},
+    { "persistent",   Element::boolean,"false"}
 };
 
 /// This table defines default values for options in DHCPv4
 const SimpleDefaults ParseConfigTest::OPTION4_DEFAULTS = {
     { "space",        Element::string,  "dhcp4"},
-    { "csv-format",   Element::boolean, "true"}
+    { "csv-format",   Element::boolean, "true"},
+    { "persistent",   Element::boolean, "false"}
 };
 
 /// This table defines default values for both DHCPv4 and DHCPv6
@@ -861,7 +863,8 @@ TEST_F(ParseConfigTest, basicOptionDataTest) {
         "    \"space\": \"isc\","
         "    \"code\": 100,"
         "    \"data\": \"192.0.2.0\","
-        "    \"csv-format\": true"
+        "    \"csv-format\": true,"
+        "    \"persistent\": false"
         " } ]"
         "}";
 
index af64e75fd48bb81ba460db924b6b0f124dc79d57..384f1aa28923b253af5383c21f8b2456e3e6e557 100644 (file)
@@ -984,7 +984,8 @@ TEST_F(HostReservationParserTest, options4) {
            "\"code\": 7,"
            "\"csv-format\": true,"
            "\"space\": \"dhcp4\","
-           "\"data\": \"172.16.15.23\""
+           "\"data\": \"172.16.15.23\","
+           "\"persistent\": false"
         "},"
         "{"
            "\"name\": \"default-ip-ttl\","
@@ -1034,11 +1035,13 @@ TEST_F(HostReservationParserTest, options4) {
     option->set("code", Element::create(DHO_NAME_SERVERS));
     option->set("space", Element::create(std::string(DHCP4_OPTION_SPACE)));
     option->set("csv-format", Element::create(true));
+    option->set("persistent", Element::create(false));
     option = config_element->get("option-data")->getNonConst(1);
     option = config_element->get("option-data")->getNonConst(2);
     option->set("code", Element::create(DHO_DEFAULT_IP_TTL));
     option->set("space", Element::create(std::string(DHCP4_OPTION_SPACE)));
     option->set("csv-format", Element::create(true));
+    option->set("persistent", Element::create(false));
     ElementPtr expected = Element::createList();
     expected->add(config_element);
 
@@ -1071,7 +1074,8 @@ TEST_F(HostReservationParserTest, options6) {
            "\"code\": 27,"
            "\"csv-format\": true,"
            "\"space\": \"dhcp6\","
-           "\"data\": \"2001:db8:1::1204\""
+           "\"data\": \"2001:db8:1::1204\","
+           "\"persistent\": true"
         "},"
         "{"
            "\"name\": \"preference\","
@@ -1122,11 +1126,13 @@ TEST_F(HostReservationParserTest, options6) {
     option->set("code", Element::create(D6O_NAME_SERVERS));
     option->set("space", Element::create(std::string(DHCP6_OPTION_SPACE)));
     option->set("csv-format", Element::create(true));
+    option->set("persistent", Element::create(false));
     option = config_element->get("option-data")->getNonConst(1);
     option = config_element->get("option-data")->getNonConst(2);
     option->set("code", Element::create(D6O_PREFERENCE));
     option->set("space", Element::create(std::string(DHCP6_OPTION_SPACE)));
     option->set("csv-format", Element::create(true));
+    option->set("persistent", Element::create(false));
     config = prettyPrint(config_element);
     boost::algorithm::to_lower(config);