]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#365,!296] Regenned parsers, added ChangeLog and doc
authorThomas Markwalder <tmark@isc.org>
Tue, 9 Apr 2019 15:11:09 +0000 (11:11 -0400)
committerThomas Markwalder <tmark@isc.org>
Fri, 26 Apr 2019 15:19:33 +0000 (11:19 -0400)
ChangeLog - added proposed entry

doc/guide/dhcp6-srv.xml
    added section describing calculate-tee-times, t1-percent, t2-percent

src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
    Added missing parameter declares and regenned parsers

src/bin/dhcp6/tests/config_parser_unittest.cc
    Updated expected timer values

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

/src/bin/dhcp6/tests/simple_parser6_unittest.cc
    TEST_F(SimpleParser6Test, globalDefaults6) - updated test

ChangeLog
doc/guide/dhcp6-srv.xml
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/tests/config_parser_unittest.cc
src/bin/dhcp6/tests/get_config_unittest.cc
src/bin/dhcp6/tests/simple_parser6_unittest.cc

index a14db87541fd486756d448b10356bcfad99b3cc8..4b063567bf7ec6a8f90c8fce6891a07c0fd0bab5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1566.  [func]          tmark
+       kea-dhcp6 can now be configured to calculate values to
+       send to clients for for T1 and T2 times. Prior to this
+       it was only possibly to specify explicit values.
+       (Gitlab #365,!296, git TBD)
+
 1565.  [func]          marcin
        MySQL Config Backend returns server tags associated with the
        configuration elements.
index 5a979a6fc5fca8617afa20c2ce190e0af928854f..fdce353e02e3213cb17b38dc04bc2672858703ab 100644 (file)
@@ -2044,6 +2044,72 @@ should include options from the new option space:
 
     </section>
 
+    <section xml:id="dhcp6-t1-t2-times">
+      <title>Controlling the Values Sent for T1 and T2 Times</title>
+      According to <link xmlns:xlink="http://www.w3.org/1999/xlink"
+      xlink:href="http://tools.ietf.org/html/rfc3315">RFC 3315</link>,
+      servers should send values for T1 and T2 that are 50% and 80%
+      of the lease life time, repsectively.  By default, kea-dhcp6 will
+      send zero for both values.  It can be configured to send values that
+      are specified explicitly or that are calculated as percentages of
+      the valid lease time.  The server's behavior is governed by combination of
+      configuration parameters, two of which have already been mentioned.
+      <para>
+      To send specific, fixed values use the following two parameters:
+      <itemizedlist>
+        <listitem>
+          <simpara><command>renew-timer</command> - specifies the value of T1 in
+          seconds.
+          </simpara>
+        </listitem>
+        <listitem>
+          <simpara><command>rebind-timer</command> - specifies the value of T2 in
+          seconds.
+          </simpara>
+        </listitem>
+      </itemizedlist>
+      The server will only send T2 if it is less than valid lease time.  T1 will
+      only be sent if a: T2 is being sent and T1 is less than T2 or b: T2 is not being
+      sent and T1 is less than the valid lease time.
+      </para>
+      <para>
+      Calculating the values is controlled by the following three parameters.
+      <itemizedlist>
+        <listitem>
+          <simpara>
+            <command>calculate-tee-times</command> - when true, T1 and T2 will be
+            calculated as percentages of the valid lease time. It defaults to false.
+          </simpara>
+        </listitem>
+        <listitem>
+          <simpara>
+            <command>t1-percent</command> - the percentage of the valid lease time to
+            use for T1. It is expressed as a real number between 0.0 and 1.0 and must
+            be less than t2-percent. The default value is 0.5 per RFC 3315.
+          </simpara>
+        </listitem>
+        <listitem>
+          <simpara>
+            <command>t2-percent</command> - the percentage of the valid lease time to
+            use for T2. It is expressed as a real number between 0.0 and 1.0 and must
+            be greater than t1-percent. The default value is 0.8 per RFC 3315.
+          </simpara>
+        </listitem>
+        </itemizedlist>
+      </para>
+      <note>
+      In the event that both explicit values are specified and
+      calculate-tee-times is true, the server will use the explicit
+      values.  If you plan on having a mixture where some subnets or
+      share-networks will use explicit values and some will use
+      calculated values you must not define the explicit values at any
+      level higher than where they will be used.  Inheriting them from
+      too high of a scope, such as global, will cause them to have
+      values at every level underneath (shared-networks and subnets),
+      effectively disabling calculated values.
+      </note>
+    </section>
+
     <section xml:id="dhcp6-config-subnets">
       <title>IPv6 Subnet Selection</title>
       <para>
index f247a88cdb3471245121e3ba70725cca55a05217..761354d852c0cb566cd88efcbbf9ec7ee6fea582 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 183
-#define YY_END_OF_BUFFER 184
+#define YY_NUM_RULES 186
+#define YY_END_OF_BUFFER 187
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,174 +700,178 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1505] =
+static const flex_int16_t yy_accept[1544] =
     {   0,
-      176,  176,    0,    0,    0,    0,    0,    0,    0,    0,
-      184,  182,   10,   11,  182,    1,  176,  173,  176,  176,
-      182,  175,  174,  182,  182,  182,  182,  182,  169,  170,
-      182,  182,  182,  171,  172,    5,    5,    5,  182,  182,
-      182,   10,   11,    0,    0,  165,    0,    0,    0,    0,
+      179,  179,    0,    0,    0,    0,    0,    0,    0,    0,
+      187,  185,   10,   11,  185,    1,  179,  176,  179,  179,
+      185,  178,  177,  185,  185,  185,  185,  185,  172,  173,
+      185,  185,  185,  174,  175,    5,    5,    5,  185,  185,
+      185,   10,   11,    0,    0,  168,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  176,
-      176,    0,  175,  176,    3,    2,    6,    0,  176,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  179,
+      179,    0,  178,  179,    3,    2,    6,    0,  179,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      166,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  168,    0,    0,    0,
+      169,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  171,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
-        0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
-      143,    0,    0,  144,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
+        0,    0,    0,  146,    0,    0,  147,    0,    0,    0,
 
-        0,    0,  167,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  170,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   98,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   98,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      181,  179,    0,  178,  177,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  184,  182,    0,  181,
 
-        0,    0,  142,    0,    0,   28,    0,   27,    0,    0,
-      105,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       55,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      180,    0,    0,    0,    0,    0,    0,    0,  145,    0,
+        0,   28,    0,   27,    0,    0,  105,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   55,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  102,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  180,  177,    0,    0,    0,    0,    0,    0,
-        0,    0,   29,    0,    0,   31,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  183,  180,    0,    0,    0,    0,    0,    0,    0,
+        0,   29,    0,    0,   31,    0,    0,    0,    0,    0,
         0,  106,    0,    0,    0,    0,    0,    0,    0,   83,
-        0,    0,    0,    0,    0,    0,    0,  127,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  130,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        82,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,   92,    0,   59,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  122,  147,   51,    0,   56,    0,
-        0,    0,    0,    0,    0,  162,   37,    0,   34,    0,
-       33,    0,    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,  114,    0,    0,
-        0,    0,    0,    0,    0,    0,  146,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  125,  150,   51,    0,
+       56,    0,    0,    0,    0,    0,    0,  165,   37,    0,
+       34,    0,   33,    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,   53,    0,    0,   32,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   85,    0,    0,    0,    0,
+      117,    0,    0,    0,    0,    0,    0,    0,    0,  149,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   53,    0,    0,   32,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  136,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   85,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      139,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  134,    0,    0,    0,    0,    0,
+        0,    0,    0,    7,   35,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  131,    0,    0,    0,    0,    0,    0,    7,   35,
+        0,    0,    0,    0,    0,    0,  104,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  119,    0,    0,    0,
+
+        0,    0,    0,  116,    0,    0,    0,    0,    0,    0,
+        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   95,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  113,    0,    0,
+        0,    0,    0,   94,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  133,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      116,    0,    0,    0,    0,    0,    0,  113,    0,    0,
-        0,    0,    0,    0,    0,    0,   87,    0,    0,    0,
+        0,  143,  114,    0,    0,    0,    0,  118,   52,    0,
 
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   60,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       95,    0,    0,    0,    0,    0,    0,    0,    0,  110,
-        0,    0,    0,    0,   94,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   78,
+        0,    0,    0,    0,    0,    0,    0,    0,  166,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  130,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  101,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  140,  111,    0,    0,    0,    0,  115,   52,
+      132,    0,    0,    0,    0,    0,    0,   63,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,   57,   86,    0,    0,    0,  129,
+        0,    0,    0,   50,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  121,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       78,    0,    0,    0,    0,    0,    0,  163,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  101,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  129,    0,
-        0,    0,    0,    0,    0,   63,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   57,   86,    0,    0,    0,  126,    0,    0,
-        0,   50,    0,    0,    0,    0,    0,    0,    0,    0,
-
+        0,  164,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      118,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  161,    0,    0,    0,
+
+        0,    0,    0,    0,   41,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   16,    0,    0,  144,
+       14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   96,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  135,    0,  120,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   41,
+        0,    0,    0,    0,    0,  131,  148,    0,   40,    0,
+      140,    0,    0,    0,    0,    0,    0,    0,    0,   20,
+        0,    0,    0,   80,    0,    0,    0,    0,  142,   54,
+        0,   88,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   77,    0,
+        0,    0,  111,  112,    0,    0,    0,    0,    0,    0,
+        0,    0,   84,    0,    0,    0,    0,    0,    0,   64,
+        0,    0,    0,    0,    0,    0,    0,    0,  137,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   16,    0,    0,  141,   14,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  107,    0,    0,    0,    0,
+        0,   81,  103,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   74,    0,    0,    0,    0,    0,
+        0,   17,    0,   15,    0,  162,  161,    0,   69,    0,
+        0,    0,    0,    0,   30,    0,  124,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,    0,    0,  159,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  132,    0,
-      117,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  128,  145,    0,
-       40,    0,  137,    0,    0,    0,    0,    0,    0,    0,
-        0,   20,    0,    0,    0,   80,    0,    0,    0,    0,
-      139,   54,    0,   88,    0,    0,    0,    0,    0,    0,
+       97,    0,  128,   43,    0,   61,    0,    0,    0,    0,
+       19,    0,    0,    0,    0,    0,    0,   99,   75,    0,
+        0,  136,    0,    0,    0,    0,    0,  127,    0,    0,
+        0,    0,    0,   93,    0,  167,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   91,    0,    0,
+      151,    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,   84,    0,    0,    0,    0,    0,   64,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   42,
 
-        0,    0,    0,    0,    0,    0,    0,  134,    0,    0,
+        0,    0,   68,    0,    0,    0,    0,  122,   47,    0,
+        0,    0,   70,  160,   38,    0,    0,   12,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   45,    0,    0,
+       44,   18,    0,    0,    0,    0,  115,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  107,    0,    0,    0,    0,    0,
-       81,  103,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   74,    0,    0,    0,    0,    0,    0,
-       17,    0,   15,    0,  159,  158,    0,   69,    0,    0,
-        0,    0,    0,   30,  121,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  156,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   97,    0,
-      125,   43,    0,   61,    0,    0,    0,    0,   19,    0,
-
-        0,    0,    0,    0,    0,   99,   75,    0,    0,  133,
-        0,    0,    0,    0,    0,  124,    0,    0,    0,    0,
-        0,   93,    0,  164,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   91,    0,    0,  148,    0,    0,
+        0,   73,    0,    0,    0,    0,   62,    0,    0,   89,
+        0,    0,    0,    0,    0,  141,    0,    0,    0,   46,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   67,    0,    0,    0,   79,    0,   36,
+        0,   48,    0,    0,    0,    0,    0,    0,   24,    0,
+
+        0,    0,    0,    0,    0,  157,    0,  126,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   42,    0,    0,   68,
-        0,    0,    0,  119,   47,    0,    0,    0,   70,  157,
-       38,    0,    0,   12,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   45,    0,    0,   44,   18,    0,    0,
-
-        0,    0,  112,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   73,    0,    0,
-        0,   62,    0,    0,   89,    0,    0,    0,    0,    0,
-      138,    0,    0,    0,   46,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   67,    0,
-        0,    0,   79,    0,   36,   48,    0,    0,    0,    0,
-        0,    0,   24,    0,    0,    0,    0,    0,    0,  154,
-        0,  123,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   25,   39,    0,    0,    0,    0,    0,
-
-       13,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      160,    0,    0,    0,    0,    0,    0,  153,    0,    0,
-       21,   72,    0,    0,    0,    0,    0,   65,    0,    0,
-        0,   90,    0,    0,  152,    0,    0,   71,    0,    0,
-       66,    0,   23,    0,    0,    0,    0,    0,    0,    0,
+       25,   39,    0,    0,    0,    0,    0,   13,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  163,    0,
+        0,    0,    0,    0,    0,  156,    0,    0,   21,   72,
+        0,    0,    0,    0,    0,   65,    0,  110,    0,    0,
+       90,    0,    0,  155,    0,    0,   71,    0,    0,   66,
+        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   49,    0,    0,
-        0,    0,    0,   22,    0,  108,  120,    0,    0,    0,
-        0,    0,    0,  150,  155,   76,    0,    0,    0,    0,
-      149,    0,    0,   26,    0,    0,    0,    0,    0,  109,
 
-        0,    0,  151,    0
+        0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
+        0,    0,   22,    0,  108,  123,    0,    0,    0,    0,
+        0,    0,  153,  158,   76,    0,    0,    0,    0,  152,
+        0,    0,   26,    0,    0,    0,    0,    0,  109,    0,
+        0,  154,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -876,16 +880,16 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    4,    5,    6,    7,    5,    5,    5,    5,    5,
-        5,    8,    9,   10,   11,   12,   13,   14,   14,   14,
-       14,   15,   14,   16,   14,   14,   14,   17,    5,   18,
-        5,   19,   20,    5,   21,   22,   23,   24,   25,   26,
-        5,   27,    5,   28,    5,   29,    5,   30,   31,   32,
-        5,   33,   34,   35,   36,   37,   38,    5,   39,    5,
-       40,   41,   42,    5,   43,    5,   44,   45,   46,   47,
-
-       48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
-       58,   59,   60,   61,   62,   63,   64,   65,   66,   67,
-       68,   69,   70,    5,   71,    5,    5,    5,    5,    5,
+        5,    8,    9,   10,   11,   12,   13,   14,   15,   16,
+       14,   17,   14,   18,   14,   14,   14,   19,    5,   20,
+        5,   21,   22,    5,   23,   24,   25,   26,   27,   28,
+        5,   29,    5,   30,    5,   31,    5,   32,   33,   34,
+        5,   35,   36,   37,   38,   39,   40,    5,   41,    5,
+       42,   43,   44,    5,   45,    5,   46,   47,   48,   49,
+
+       50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
+       60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
+       70,   71,   72,    5,   73,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
@@ -902,595 +906,612 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[72] =
+static const YY_CHAR yy_meta[74] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
-        3,    3,    3,    5,    5,    5,    3,    3,    3,    3,
-        5,    5,    5,    5,    5,    5,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    5,    5,    5,    5,    5,    5,    3,
+        3,    3,    3,    5,    5,    5,    5,    5,    3,    3,
+        3,    3,    5,    5,    5,    5,    5,    5,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    5,    5,    5,    5,    5,
+        5,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3
+        3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1517] =
+static const flex_int16_t yy_base[1556] =
     {   0,
-        0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1868, 1869,   32, 1864,  141,    0,  201, 1869,  206,   88,
-       11,  213, 1869, 1846,  114,   25,    2,    6, 1869, 1869,
-       73,   11,   17, 1869, 1869, 1869,  104, 1852, 1807,    0,
-     1844,  107, 1859,  217,  241, 1869,  185, 1803, 1809, 1829,
-       93,   58,  190,   91,  211,  200,   14,  267,  213,  175,
-      269,   64,  231,  184,  187,   75, 1810,  274,  215,  290,
-      278,  297, 1793,  207,  302,  316,  316, 1812,    0,  355,
-      360,  372,  377,  380, 1869,    0, 1869,  295,  383,  227,
-      296,  283,  327,  361,  293, 1869, 1809, 1848, 1869,  237,
-
-     1869,  394,  363, 1796, 1806, 1845,  375,  321,  403, 1800,
-      369,  378,  376,  382,  388, 1843,    0,  445,  407, 1787,
-     1795,  364, 1791, 1780, 1781,  372, 1797, 1780, 1789,  387,
-      308,  378, 1783, 1781,  391, 1770, 1826,  416, 1773, 1824,
-     1766, 1789, 1786, 1786, 1780,  214, 1773, 1766, 1771, 1765,
-      382, 1776, 1769, 1760, 1759, 1773,  362, 1809, 1758,  414,
-     1770, 1773, 1757,  441, 1758,  417, 1770, 1767, 1768, 1766,
-      422, 1748, 1753, 1749, 1741, 1758, 1750,    0,  422,  450,
-      440,  446,  454,  470, 1749, 1869,    0,  476, 1740, 1743,
-     1869,  465,  447, 1869, 1795, 1750,  477, 1793,  481, 1792,
-
-      477, 1791, 1869,  521, 1790,  489, 1751, 1746, 1745, 1736,
-      491, 1785, 1779, 1745, 1724, 1732, 1738, 1726, 1740, 1736,
-     1737, 1737, 1732, 1724, 1726, 1710, 1714, 1727, 1729, 1726,
-     1718, 1708, 1711, 1725, 1869, 1711, 1719, 1722, 1703, 1702,
-     1752, 1701, 1711, 1749,  452, 1710, 1698, 1709, 1745,  490,
-     1749, 1686, 1701,    9, 1691, 1707, 1688, 1690, 1686, 1692,
-     1683, 1682, 1695, 1688, 1690, 1694, 1693, 1687,   80, 1694,
-     1689, 1681, 1671, 1686, 1681, 1685,  459, 1683, 1669, 1675,
-     1682, 1670,  230, 1663, 1677, 1676, 1679, 1661, 1669,  491,
-     1869, 1869,  501, 1869, 1869, 1656,    0,  376, 1658,  497,
-
-      503, 1712, 1869, 1665,  489, 1869, 1710, 1869, 1704,  557,
-     1869,  484, 1646, 1656, 1706, 1663, 1658, 1661, 1656,  304,
-     1869, 1658,  549, 1656, 1653, 1654,  303, 1658, 1696, 1646,
-     1641, 1638, 1634, 1636, 1685, 1644, 1633, 1649, 1681, 1629,
-      550, 1642, 1642, 1625, 1626, 1639, 1626, 1636, 1631, 1638,
-     1633, 1618,  470, 1627, 1630, 1625, 1621, 1669,  515,  524,
-     1869, 1663, 1615, 1614, 1607, 1609, 1613, 1602, 1609, 1614,
-      513, 1659, 1614,  510, 1611, 1615, 1613, 1602, 1602, 1614,
-      502, 1589, 1590, 1611,  536, 1593, 1590, 1604, 1607, 1602,
-     1588, 1600, 1599, 1598, 1597,  532, 1638, 1637, 1636, 1580,
-
-      581, 1593, 1869, 1869, 1592,    0,  556, 1580, 1631, 1630,
-     1588, 1628, 1869, 1576, 1626, 1869,  563,  609,  557, 1625,
-     1567, 1869, 1572, 1578, 1581, 1564, 1579, 1566, 1565, 1869,
-     1575, 1566, 1563, 1575,  549, 1560, 1562, 1869, 1568, 1553,
-     1555, 1566, 1564, 1559,  588, 1566, 1554, 1547, 1596, 1869,
-     1545, 1561, 1593, 1597, 1555, 1549, 1551, 1552, 1554, 1586,
-     1539, 1534, 1533, 1535, 1528, 1543, 1521, 1528, 1533, 1581,
-     1869, 1528, 1524, 1578, 1531, 1525, 1532, 1517, 1527, 1530,
-     1519, 1518, 1513, 1869, 1568, 1869, 1512, 1511, 1504, 1521,
-     1558, 1505, 1510, 1519, 1513, 1507, 1516,  602, 1551, 1515,
-
-     1498, 1498, 1493, 1489, 1495, 1500, 1493, 1501, 1505, 1488,
-     1544, 1486, 1500, 1489, 1869, 1869, 1869, 1489, 1869, 1499,
-     1533, 1495,    0, 1536, 1486, 1869, 1869, 1483, 1869, 1489,
-     1869,  569,  565,  604, 1869, 1527, 1474, 1525, 1472, 1471,
-     1470, 1477, 1470, 1478, 1481, 1480, 1464, 1479, 1461, 1508,
-     1475, 1511, 1457, 1459, 1471, 1471, 1470, 1869, 1455, 1452,
-     1508, 1465, 1457, 1463, 1454, 1462, 1869, 1447, 1458, 1462,
-     1444, 1458,  530, 1440, 1434, 1439, 1436, 1451, 1452, 1449,
-     1490, 1447, 1869, 1433, 1435, 1869, 1443, 1480, 1479,  605,
-     1442, 1425, 1426, 1431, 1422, 1869, 1436, 1422,  630, 1414,
-
-     1435, 1432, 1424, 1467, 1421, 1428, 1464, 1869, 1412, 1410,
-     1424, 1408, 1422, 1425, 1457, 1456, 1455, 1454, 1401, 1452,
-     1451, 1869,  622, 1413, 1413, 1411, 1400, 1402, 1869, 1869,
-     1445, 1393, 1448,  579,  591, 1391, 1406, 1445,  597, 1439,
-     1401, 1437, 1436, 1390, 1384, 1379, 1432, 1394, 1384, 1392,
-     1428, 1391, 1373, 1381, 1383, 1387, 1422, 1426, 1383, 1382,
-     1869, 1383, 1376, 1365, 1378, 1381, 1376, 1371, 1376, 1373,
-     1372, 1368, 1374, 1369, 1410, 1409, 1353, 1349,  582, 1406,
-     1869, 1405, 1354, 1346, 1397, 1360, 1347, 1869, 1347, 1356,
-     1355, 1355, 1339, 1394, 1337, 1350, 1869, 1342, 1334, 1343,
-
-     1336, 1347, 1324, 1328, 1379, 1343, 1325, 1323, 1334, 1374,
-     1373, 1372, 1319, 1335,  593, 1334,  607, 1311, 1321,  604,
-     1869, 1371, 1317, 1327, 1327, 1316, 1320, 1327, 1364, 1869,
-       17,  587,   11,   69, 1869,   68,  202,  236,  296,  375,
-      389,  470,  497,  549,  569,  570,  600,  588,  587,  601,
-      656,  604,  620,  603,  657,  614, 1869,  625,  625,  618,
-      629,  627,  670,  614,  617,  632,  634,  621,  678,  637,
-      623,  626, 1869, 1869,  642,  641,  646,  634, 1869, 1869,
-      648,  635,  633,  651,  638,  638,  687,  639,  695,  696,
-     1869,  643,  657,  657,  700,  650,  652,  646,  704,  659,
-
-      649,  650,  646,  656,  660,  671,  655,  673,  668,  670,
-      663,  665,  666,  678,  668,  683,  722,  681,  686,  663,
-     1869,  688,  678,  723,  672,  687,  688, 1869,  707,  715,
-      684,  698,  686,  681,  682,  694,  701,  690,  691,  687,
-      705,  697,  692,  743,  749,  708,  699, 1869,  711,  696,
-      712,  702,  714,  709,  754,  723,  707,  708, 1869,  724,
-      727,  710,  712,  768,  713, 1869,  730,  733,  713,  732,
-      770,  730,  726,  721,  739,  738,  724,  739,  731,  727,
-      745,  730, 1869, 1869,  738,  783,  738, 1869,  746,  741,
-      792, 1869,  743,  748,  790,  744,  745,  757,  751,  755,
-
-      753,  751,  762,  805,  751,  756,  808,  809,  755,  767,
-     1869,  755,  763,  761,  766,  778,  762,  776,  777,  778,
-      794,  799,  781,  769,  769,  789,  788,  779,  768,  785,
-      792,  833,  777,  835,  784,  788, 1869,  833,  784,  802,
-      799,  837,  788,  806,  807,  793,  801,  810,  792,  807,
-      814,  854,  855, 1869,  810,  857,  858,  811,  821,  823,
-      807,  808,  815,  824,  867,  816,  815,  832,  871,  823,
-      827,  825,  823,  876,  877,  829,  879,  875,  835, 1869,
-      840,  833,  824,  843,  837,  832,  842,  839,  844,  840,
-      852, 1869,  836,  838, 1869, 1869,  838,  896,  837,  856,
-
-      857,  855,  840,  861,  843,  848,  855,  888,  879,  909,
-      854,  856,  873,  868,  872,  915,  865,  869, 1869,  866,
-     1869,  880,  878,  881,  865,  866,  924,  879,  884,  871,
-      882,  874,  881,  877,  895,  896,  897, 1869, 1869,  896,
-     1869,  898, 1869,  883,  884,  903,  893,  943,  898,  940,
-      906, 1869,  898,  890,  949, 1869,  950,  899,  906,  948,
-     1869, 1869,  908, 1869,  899,  899,  902,  916,  921,  904,
-      915,  962,  921,  922,  923,  961,  919,  968,  923,  970,
-     1869,  919,  972,  973,  915,  975,  936,  920,  932,  922,
-      952,  981, 1869,  982,  931,  946,  980,  934, 1869,  930,
-
-      946,  934,  952,  940,  940,  993,  952, 1869,  954,  953,
-      955,  948,  957,  958,  955,  945,  948,  948, 1005,  954,
-     1007, 1009,  954, 1011, 1869,  949,  964,  957, 1015,  970,
-     1869, 1869,  967,  977,  962,  979,  965, 1025, 1026,  972,
-      982, 1029,  988, 1869,  980,  980,  982,  984, 1035,  980,
-     1869,  981, 1869,  983, 1869, 1869,  997, 1869,  991, 1041,
-      992, 1043, 1025, 1869, 1869,  989,  997,  991,  988,  991,
-      994,  994,  990,  996, 1054, 1004, 1869, 1000, 1057, 1012,
-     1003, 1018, 1018, 1021, 1021, 1018, 1060, 1024, 1869, 1017,
-     1869, 1869, 1027, 1869, 1028, 1029, 1026, 1068, 1869, 1019,
-
-     1019, 1025, 1024, 1036, 1036, 1869, 1869, 1075, 1024, 1869,
-     1041, 1026, 1026, 1028, 1034, 1869, 1087, 1031, 1041, 1090,
-     1053, 1869, 1050, 1869, 1069, 1094, 1095, 1054, 1059, 1041,
-     1099, 1100, 1101, 1056, 1869, 1046, 1104, 1869, 1044, 1101,
-     1066, 1062, 1104, 1054, 1059, 1057, 1114, 1072, 1116, 1117,
-     1080, 1069, 1064, 1080, 1123, 1067, 1084, 1069, 1084, 1068,
-     1124, 1125, 1126, 1075, 1128, 1093, 1869, 1093, 1080, 1869,
-     1091, 1138, 1110, 1869, 1869, 1084, 1095, 1142, 1869, 1869,
-     1869, 1091, 1089, 1869, 1145, 1093, 1142, 1087, 1092, 1151,
-     1101, 1111, 1112, 1869, 1155, 1110, 1869, 1869, 1101, 1116,
-
-     1104, 1119, 1869, 1156, 1124, 1117, 1118, 1127, 1109, 1116,
-     1118, 1171, 1132, 1131, 1123, 1175, 1126, 1869, 1177, 1178,
-     1122, 1869, 1129, 1129, 1869, 1133, 1128, 1127, 1185, 1140,
-     1869, 1182, 1135, 1132, 1869, 1146, 1149, 1192, 1147, 1194,
-     1137, 1139, 1147, 1137, 1153, 1154, 1148, 1164, 1869, 1154,
-     1204, 1165, 1869, 1201, 1869, 1869, 1202, 1203, 1160, 1168,
-     1159, 1166, 1869, 1163, 1168, 1166, 1216, 1217, 1162, 1869,
-     1177, 1869, 1167, 1179, 1180, 1223, 1167, 1175, 1169, 1177,
-     1190, 1869, 1167, 1190, 1174, 1179, 1233, 1183, 1195, 1186,
-     1195, 1197, 1201, 1869, 1869, 1240, 1185, 1201, 1243, 1244,
-
-     1869, 1240, 1204, 1201, 1206, 1193, 1250, 1189, 1206, 1211,
-     1869, 1254, 1213, 1214, 1257, 1216, 1219, 1869, 1260, 1223,
-     1869, 1869, 1205, 1263, 1212, 1265, 1210, 1869, 1227, 1218,
-     1214, 1869, 1214, 1216, 1869, 1221, 1231, 1869, 1217, 1229,
-     1869, 1225, 1869, 1235, 1229, 1237, 1234, 1225, 1277, 1226,
-     1234, 1243, 1236, 1231, 1232, 1247, 1290, 1239, 1246, 1233,
-     1248, 1253, 1296, 1255, 1298, 1299, 1244, 1869, 1260, 1251,
-     1265, 1261, 1254, 1869, 1306, 1869, 1869, 1307, 1308, 1265,
-     1264, 1265, 1255, 1869, 1869, 1869, 1313, 1257, 1273, 1316,
-     1869, 1312, 1263, 1869, 1262, 1264, 1275, 1322, 1273, 1869,
-
-     1282, 1325, 1869, 1869, 1331, 1336, 1341, 1346, 1351, 1356,
-     1361, 1364, 1338, 1343, 1345, 1358
+        0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
+     1944, 1945,   34, 1940,  145,    0,  207, 1945,  214,  221,
+       13,  228, 1945, 1920,  118,   25,    2,    6, 1945, 1945,
+       73,   11,   17, 1945, 1945, 1945,  104, 1928, 1881,    0,
+     1918,  108, 1935,   24,  256, 1945,   67, 1877, 1883, 1903,
+       84,   75,  189,   88,  226,   91,   89,  284,  196,  206,
+      219,  191,  210,  197,   60,  242, 1884,  278,  230,  298,
+      275,  305, 1867,  212,  306,  345,  314, 1886,    0,  367,
+      374,  389,  404,  396, 1945,    0, 1945,  411,  418,  314,
+      322,  292,  345,  399,  331, 1945, 1883, 1924, 1945,  331,
+
+     1945,  431,  398, 1870, 1880, 1921,  408,   10,  327, 1874,
+      401,  408,  405,  411,  248, 1919,    0,  484,  407, 1861,
+     1866, 1868,  392, 1864, 1853, 1854,  401, 1870, 1853, 1862,
+      411,  314,  411, 1856, 1854,  235, 1843, 1901,  403, 1846,
+     1899, 1839, 1862, 1859, 1859, 1853,  404, 1846, 1839, 1844,
+     1838,  416, 1849, 1842, 1833, 1832, 1846,  399, 1884, 1831,
+      421, 1843, 1846, 1830,  480, 1831,  454, 1843, 1840, 1841,
+     1839, 1874, 1873,  426, 1819, 1824, 1820, 1812, 1829, 1821,
+        0,  431,  448,  443,  450,  449,  465, 1820, 1945,    0,
+      497, 1811, 1814, 1945,  452,  486, 1945, 1868, 1821,  496,
+
+     1866,  497, 1865,  490, 1864, 1945,  536, 1863,  502, 1822,
+     1819, 1816, 1815, 1806,  506, 1857, 1851, 1815, 1794, 1802,
+     1808, 1796, 1810, 1806, 1807, 1807, 1802, 1794, 1796, 1780,
+     1784, 1797, 1799, 1796, 1788, 1778, 1781, 1795, 1945, 1781,
+     1789, 1792, 1773, 1772, 1824, 1771, 1781, 1821,  508, 1780,
+     1768, 1779, 1817,  528, 1821, 1756, 1771,  518, 1761, 1777,
+     1758, 1760, 1756, 1762, 1753, 1752, 1765, 1758, 1760, 1764,
+     1763, 1757,  509, 1764, 1759, 1751, 1741, 1756, 1751, 1755,
+      513, 1753, 1739, 1745, 1752, 1740, 1737, 1736,  562, 1731,
+     1745, 1744, 1747, 1729, 1737,  531, 1945, 1945,  547, 1945,
+
+     1945, 1724,    0,  535, 1726,  572,  550, 1782, 1945, 1733,
+      553, 1945, 1780, 1945, 1774,  603, 1945,  552, 1714, 1717,
+     1723, 1775, 1730, 1725, 1728, 1723,   80, 1945, 1725,  585,
+     1723, 1720, 1721,  584, 1725, 1765, 1713, 1708, 1705, 1701,
+     1703, 1754, 1711, 1700, 1716, 1750, 1696,  596, 1709, 1709,
+     1692, 1693, 1706, 1693, 1703, 1698, 1705, 1700, 1685,  441,
+     1694, 1697, 1692, 1688, 1738,  326,  569, 1945, 1732, 1682,
+     1681, 1674, 1676, 1680, 1669, 1676, 1681,  530, 1728, 1681,
+      549, 1678, 1682, 1680, 1669, 1669, 1681,  547, 1656, 1657,
+     1678,  558, 1660, 1657, 1671, 1674, 1669, 1655, 1667, 1666,
+
+     1665, 1664, 1663, 1662,  555, 1705, 1704, 1703, 1645,  627,
+     1658, 1945, 1945, 1657,    0,  573, 1645, 1698, 1697, 1653,
+     1695, 1945, 1641, 1693, 1945,  581,  647,  603, 1692, 1640,
+     1631, 1945, 1636, 1642, 1645, 1628, 1643, 1630, 1629, 1945,
+     1639, 1630, 1627, 1639,  574, 1624, 1626, 1945, 1632, 1617,
+     1619, 1630, 1628, 1623,  635, 1630, 1618, 1611, 1662, 1945,
+     1609, 1625, 1659, 1663, 1619, 1613, 1615, 1616, 1618, 1652,
+     1603, 1598, 1597, 1599, 1592, 1607, 1585, 1592, 1597, 1647,
+     1945, 1592, 1588, 1644, 1595, 1589, 1596, 1581, 1591, 1594,
+     1583, 1582, 1577, 1945, 1634, 1945, 1576, 1575, 1568, 1585,
+
+     1624, 1569, 1574, 1583, 1577, 1571, 1580,  637, 1617, 1579,
+     1562, 1562, 1557, 1553, 1559, 1564, 1557, 1565, 1569, 1552,
+     1610, 1550, 1551, 1550, 1562, 1551, 1945, 1945, 1945, 1551,
+     1945, 1561, 1597, 1557,    0, 1600, 1548, 1945, 1945, 1545,
+     1945, 1551, 1945,  623,  622,  670, 1945, 1556, 1590, 1535,
+     1588, 1533, 1532, 1531, 1538, 1531, 1539, 1542, 1541, 1525,
+     1540, 1522, 1569, 1536, 1574, 1518, 1520, 1532, 1532, 1531,
+     1945, 1516, 1513, 1571, 1526, 1518, 1524, 1515, 1523, 1945,
+     1508, 1519, 1523, 1505, 1519,  576, 1501, 1495, 1500, 1497,
+     1512, 1513, 1510, 1553, 1508, 1945, 1494, 1496, 1945, 1504,
+
+     1543, 1542,   16, 1503, 1486, 1487, 1492, 1483, 1945, 1497,
+     1483,  671, 1475, 1496, 1493, 1485, 1530, 1482, 1489, 1527,
+     1945, 1473, 1471, 1485, 1469, 1483, 1486, 1520, 1519, 1518,
+     1517, 1462, 1515, 1514, 1945,  629, 1476, 1475, 1472, 1472,
+     1470, 1459, 1461, 1945, 1945, 1506, 1452, 1509,  621,  618,
+     1450, 1448, 1464, 1505,  639, 1499, 1459, 1497, 1496, 1448,
+     1442, 1437, 1492, 1452, 1442, 1450, 1488, 1449, 1431, 1439,
+     1441, 1445, 1482, 1486, 1441, 1440, 1945, 1441, 1434, 1423,
+     1436, 1439, 1434, 1429, 1434, 1431, 1430, 1426, 1432, 1427,
+     1470, 1469, 1411, 1407,  609, 1466, 1945, 1465, 1412, 1404,
+
+     1457, 1418, 1405, 1945, 1405, 1414, 1413, 1413, 1397, 1454,
+     1395, 1408, 1945, 1400, 1392, 1401, 1394, 1405, 1382, 1386,
+     1439, 1401, 1383, 1381, 1392,   20,  130,  266,  274,  309,
+      630,  348,  638,  419,  479,  641, 1945,  534,  506,  542,
+      573,  594,  610,  619,  625,  634,  683, 1945,  690,  666,
+      654,  655,  650, 1945,  648,  663,  660,  646,  653,  652,
+      650,  669,  666,  667,  657,  670,  656,  656,  662,  718,
+      664,  680,  663,  717,  672, 1945,  683,  683,  676,  687,
+      685,  730,  672,  674,  689,  690,  678,  737,  694,  680,
+      683, 1945, 1945,  699,  698,  703,  691, 1945, 1945,  705,
+
+      692,  690,  708,  695,  695,  746,  696,  754,  755, 1945,
+      700,  714,  714,  759,  707,  709,  703,  763,  716,  706,
+      707,  703,  713,  717,  728,  712,  730,  725,  727,  720,
+      722,  723,  735,  725,  740,  781,  738,  743,  720, 1945,
+      732,  733,  747,  737,  784,  732,  747,  747, 1945,  766,
+      774,  743,  792,  758,  746,  741,  742,  754,  761,  750,
+      751,  747,  765,  757,  752,  805,  811,  768,  759, 1945,
+      771,  756,  772,  762,  775,  769,  817,  783,  767,  768,
+     1945,  784,  787,  770,  772,  830,  773, 1945,  790,  793,
+      773,  792,  832,  790,  786,  781,  799,  798,  784,  799,
+
+      791,  787,  805,  790, 1945, 1945,  798,  845,  798, 1945,
+      806,  801,  854, 1945,  803,  808,  852,  804,  805,  817,
+      811,  815,  813,  811,  822,  867,  811,  816,  870,  871,
+      815,  827, 1945,  815,  823,  821,  818,  819,  828,  840,
+      824,  838,  839,  840,  856,  861,  843,  830,  832,  832,
+      852,  851,  842,  831,  848,  855,  898,  840,  900,  847,
+      851, 1945,  898,  847,  865,  862,  902,  851,  869,  870,
+      856,  864,  875,  855,  870,  877,  919,  920, 1945,  873,
+      922,  923,  874,  884,  886,  870,  871,  878,  887,  932,
+      879,  878,  895,  936,  886,  890,  888,  886,  941,  942,
+
+      892,  944,  940,  898, 1945,  903,  896,  887,  906,  900,
+      895,  905,  902,  907,  903,  915, 1945,  899,  901, 1945,
+     1945,  901,  961,  900,  919,  920,  965,  966,  920,  905,
+      926,  908,  913,  920,  953,  944,  976,  933,  920,  922,
+      939,  934,  938,  983,  931,  935, 1945,  932, 1945,  946,
+      944,  947,  931,  932,  992,  945,  950,  937,  948,  941,
+      947,  943,  961,  962,  964, 1945, 1945,  962, 1945,  964,
+     1945,  949,  950,  969,  959, 1011,  964, 1008,  972, 1945,
+      964,  956, 1017, 1945, 1018,  965,  972, 1016, 1945, 1945,
+      974, 1945,  965,  965,  968,  982,  987,  970,  981, 1030,
+
+      987,  988,  989, 1029,  985, 1036,  989, 1038, 1945,  985,
+     1040, 1041, 1945, 1945,  981, 1043, 1002,  986,  998,  988,
+     1018, 1049, 1945, 1006, 1051,  998, 1013, 1049, 1001, 1945,
+      997, 1013, 1001, 1019, 1007, 1007, 1062, 1019, 1945, 1021,
+     1020, 1022, 1015, 1024, 1025, 1022, 1012, 1015, 1015, 1074,
+     1021, 1077, 1078, 1021, 1080, 1945, 1016, 1031, 1024, 1084,
+     1037, 1945, 1945, 1033, 1044, 1029, 1046, 1032, 1093, 1094,
+     1039, 1049, 1098, 1055, 1945, 1047, 1047, 1049, 1051, 1104,
+     1047, 1945, 1048, 1945, 1050, 1945, 1945, 1064, 1945, 1058,
+     1110, 1059, 1112, 1092, 1945, 1109, 1945, 1057, 1065, 1059,
+
+     1056, 1059, 1062, 1062, 1058, 1064, 1124, 1072, 1945, 1068,
+     1127, 1080, 1071, 1086, 1086, 1089, 1089, 1086, 1130, 1093,
+     1945, 1085, 1945, 1945, 1095, 1945, 1096, 1097, 1094, 1138,
+     1945, 1087, 1087, 1093, 1092, 1104, 1104, 1945, 1945, 1145,
+     1092, 1945, 1109, 1094, 1094, 1096, 1102, 1945, 1157, 1099,
+     1109, 1160, 1121, 1945, 1118, 1945, 1137, 1105, 1165, 1166,
+     1123, 1128, 1110, 1170, 1171, 1172, 1125, 1945, 1115, 1175,
+     1945, 1113, 1172, 1135, 1131, 1175, 1123, 1128, 1126, 1185,
+     1141, 1187, 1188, 1149, 1139, 1133, 1149, 1194, 1136, 1153,
+     1138, 1153, 1137, 1195, 1196, 1197, 1144, 1199, 1162, 1945,
+
+     1162, 1149, 1945, 1160, 1209, 1179, 1163, 1945, 1945, 1154,
+     1165, 1214, 1945, 1945, 1945, 1161, 1159, 1945, 1217, 1163,
+     1214, 1157, 1162, 1223, 1171, 1181, 1182, 1945, 1227, 1180,
+     1945, 1945, 1171, 1186, 1174, 1189, 1945, 1228, 1194, 1187,
+     1188, 1197, 1180, 1186, 1188, 1242, 1202, 1201, 1193, 1247,
+     1196, 1945, 1249, 1198, 1251, 1193, 1945, 1200, 1200, 1945,
+     1204, 1199, 1198, 1258, 1211, 1945, 1255, 1206, 1203, 1945,
+     1217, 1220, 1265, 1218, 1267, 1208, 1210, 1218, 1208, 1224,
+     1225, 1219, 1235, 1945, 1225, 1277, 1236, 1945, 1274, 1945,
+     1236, 1945, 1276, 1277, 1232, 1240, 1231, 1238, 1945, 1235,
+
+     1240, 1238, 1290, 1291, 1234, 1945, 1249, 1945, 1239, 1251,
+     1252, 1297, 1239, 1247, 1241, 1249, 1262, 1945, 1239, 1262,
+     1247, 1247, 1252, 1308, 1256, 1268, 1259, 1268, 1270, 1274,
+     1945, 1945, 1315, 1258, 1274, 1318, 1319, 1945, 1315, 1277,
+     1274, 1279, 1266, 1325, 1262, 1327, 1280, 1285, 1945, 1330,
+     1287, 1288, 1333, 1290, 1293, 1945, 1336, 1297, 1945, 1945,
+     1279, 1339, 1286, 1341, 1284, 1945, 1301, 1945, 1292, 1288,
+     1945, 1288, 1290, 1945, 1295, 1305, 1945, 1291, 1303, 1945,
+     1299, 1945, 1309, 1303, 1311, 1308, 1299, 1353, 1300, 1308,
+     1317, 1310, 1305, 1306, 1321, 1366, 1313, 1320, 1307, 1322,
+
+     1327, 1372, 1329, 1374, 1375, 1318, 1945, 1334, 1325, 1339,
+     1335, 1328, 1945, 1382, 1945, 1945, 1383, 1384, 1339, 1338,
+     1339, 1329, 1945, 1945, 1945, 1389, 1331, 1347, 1392, 1945,
+     1388, 1337, 1945, 1336, 1338, 1349, 1398, 1347, 1945, 1356,
+     1401, 1945, 1945, 1407, 1412, 1417, 1422, 1427, 1432, 1437,
+     1440, 1414, 1419, 1421, 1434
     } ;
 
-static const flex_int16_t yy_def[1517] =
+static const flex_int16_t yy_def[1556] =
     {   0,
-     1505, 1505, 1506, 1506, 1505, 1505, 1505, 1505, 1505, 1505,
-     1504, 1504, 1504, 1504, 1504, 1507, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1508,
-     1504, 1504, 1504, 1509,   15, 1504,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1510,   45,   45,
+     1544, 1544, 1545, 1545, 1544, 1544, 1544, 1544, 1544, 1544,
+     1543, 1543, 1543, 1543, 1543, 1546, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1547,
+     1543, 1543, 1543, 1548,   15, 1543,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1549,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1507, 1504,
-     1504, 1504, 1504, 1504, 1504, 1511, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1508, 1504, 1509,
+       45,   45,   45,   45,   45,   45,   45,   45, 1546, 1543,
+     1543, 1543, 1543, 1543, 1543, 1550, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1547, 1543, 1548,
 
-     1504, 1504,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1512,   45, 1510,   45,   45,
+     1543, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1551,   45, 1549,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1511, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1513,   45,   45,   45,
-     1504,   45,   45, 1504,   45,   45,   45,   45,   45,   45,
+     1550, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1552,
+       45,   45,   45, 1543,   45,   45, 1543,   45,   45,   45,
 
-       45, 1512, 1504, 1510,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1551, 1543, 1549,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1504,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1514,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1543, 1543, 1543, 1543, 1543,
 
-       45,   45, 1504,   45,   45, 1504,   45, 1504,   45, 1510,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1543, 1543, 1553,   45,   45,   45,   45,   45, 1543,   45,
+       45, 1543,   45, 1543,   45, 1549, 1543,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1504, 1504, 1504, 1515,   45,   45,   45,   45,
-       45,   45, 1504,   45,   45, 1504,   45, 1510,   45,   45,
-       45, 1504,   45,   45,   45,   45,   45,   45,   45, 1504,
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1504,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1543, 1543, 1543, 1554,   45,   45,   45,   45,   45,
+       45, 1543,   45,   45, 1543,   45, 1549,   45,   45,   45,
+       45, 1543,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1504,   45, 1504,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1543,   45, 1543,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1504, 1504, 1504,   45, 1504,   45,
-       45, 1504, 1516,   45,   45, 1504, 1504,   45, 1504,   45,
-     1504,   45,   45,   45, 1504,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45,   45,   45,   45,   45,   45, 1504,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1543, 1543, 1543,   45,
+     1543,   45,   45, 1543, 1555,   45,   45, 1543, 1543,   45,
+     1543,   45, 1543,   45,   45,   45, 1543,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1504,   45,   45, 1504,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1504,   45,   45,   45,   45,
+     1543,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1543,   45,   45, 1543,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1504,   45,   45,   45,   45,   45,   45, 1504, 1504,
+     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1543,   45,   45,   45,   45,   45,
+       45,   45,   45, 1543, 1543,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
+
+       45,   45,   45, 1543,   45,   45,   45,   45,   45,   45,
+       45,   45, 1543,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45,   45,   45,   45,   45,   45, 1504,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
+       45,   45,   45, 1543,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1543,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1543, 1543,   45,   45,   45,   45, 1543, 1543,   45,
 
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45, 1504,
-       45,   45,   45,   45, 1504,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1504,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1504, 1504,   45,   45,   45,   45, 1504, 1504,
+     1543,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
+       45,   45,   45,   45, 1543, 1543,   45,   45,   45, 1543,
+       45,   45,   45, 1543,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1543,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1504,   45,
-       45,   45,   45,   45,   45, 1504,   45,   45,   45,   45,
+       45, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1504, 1504,   45,   45,   45, 1504,   45,   45,
-       45, 1504,   45,   45,   45,   45,   45,   45,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1504,   45,   45,   45,
+
+       45,   45,   45,   45, 1543,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1543,   45,   45, 1543,
+     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1504,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1543,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1504,
+       45,   45,   45,   45,   45, 1543, 1543,   45, 1543,   45,
+     1543,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45, 1543,   45,   45,   45,   45, 1543, 1543,
+       45, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
+       45,   45, 1543, 1543,   45,   45,   45,   45,   45,   45,
+       45,   45, 1543,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1504,   45,   45, 1504, 1504,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1543,   45,   45,   45,   45,
+       45, 1543, 1543,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1543,   45,   45,   45,   45,   45,
+       45, 1543,   45, 1543,   45, 1543, 1543,   45, 1543,   45,
+       45,   45,   45,   45, 1543,   45, 1543,   45,   45,   45,
 
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1504,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1504, 1504,   45,
-     1504,   45, 1504,   45,   45,   45,   45,   45,   45,   45,
-       45, 1504,   45,   45,   45, 1504,   45,   45,   45,   45,
-     1504, 1504,   45, 1504,   45,   45,   45,   45,   45,   45,
+     1543,   45, 1543, 1543,   45, 1543,   45,   45,   45,   45,
+     1543,   45,   45,   45,   45,   45,   45, 1543, 1543,   45,
+       45, 1543,   45,   45,   45,   45,   45, 1543,   45,   45,
+       45,   45,   45, 1543,   45, 1543,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
+     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1504,   45,   45,   45,   45,   45, 1504,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
 
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
+       45,   45, 1543,   45,   45,   45,   45, 1543, 1543,   45,
+       45,   45, 1543, 1543, 1543,   45,   45, 1543,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
+     1543, 1543,   45,   45,   45,   45, 1543,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1504,   45,   45,   45,   45,   45,
-     1504, 1504,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1504,   45,   45,   45,   45,   45,   45,
-     1504,   45, 1504,   45, 1504, 1504,   45, 1504,   45,   45,
-       45,   45,   45, 1504, 1504,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1504,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1504,   45,
-     1504, 1504,   45, 1504,   45,   45,   45,   45, 1504,   45,
-
-       45,   45,   45,   45,   45, 1504, 1504,   45,   45, 1504,
-       45,   45,   45,   45,   45, 1504,   45,   45,   45,   45,
-       45, 1504,   45, 1504,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1504,   45,   45, 1504,   45,   45,
+       45, 1543,   45,   45,   45,   45, 1543,   45,   45, 1543,
+       45,   45,   45,   45,   45, 1543,   45,   45,   45, 1543,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1543,   45,   45,   45, 1543,   45, 1543,
+       45, 1543,   45,   45,   45,   45,   45,   45, 1543,   45,
+
+       45,   45,   45,   45,   45, 1543,   45, 1543,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1504,   45,   45, 1504,
-       45,   45,   45, 1504, 1504,   45,   45,   45, 1504, 1504,
-     1504,   45,   45, 1504,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1504,   45,   45, 1504, 1504,   45,   45,
-
-       45,   45, 1504,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45, 1504,   45,   45, 1504,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45, 1504,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1504,   45,
-       45,   45, 1504,   45, 1504, 1504,   45,   45,   45,   45,
-       45,   45, 1504,   45,   45,   45,   45,   45,   45, 1504,
-       45, 1504,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1504,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1504, 1504,   45,   45,   45,   45,   45,
-
-     1504,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1504,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-     1504, 1504,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45, 1504,   45,   45, 1504,   45,   45, 1504,   45,   45,
-     1504,   45, 1504,   45,   45,   45,   45,   45,   45,   45,
+     1543, 1543,   45,   45,   45,   45,   45, 1543,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
+       45,   45,   45,   45,   45, 1543,   45,   45, 1543, 1543,
+       45,   45,   45,   45,   45, 1543,   45, 1543,   45,   45,
+     1543,   45,   45, 1543,   45,   45, 1543,   45,   45, 1543,
+       45, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1504,   45,   45,
-       45,   45,   45, 1504,   45, 1504, 1504,   45,   45,   45,
-       45,   45,   45, 1504, 1504, 1504,   45,   45,   45,   45,
-     1504,   45,   45, 1504,   45,   45,   45,   45,   45, 1504,
 
-       45,   45, 1504,    0, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504
+       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
+       45,   45, 1543,   45, 1543, 1543,   45,   45,   45,   45,
+       45,   45, 1543, 1543, 1543,   45,   45,   45,   45, 1543,
+       45,   45, 1543,   45,   45,   45,   45,   45, 1543,   45,
+       45, 1543,    0, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543
     } ;
 
-static const flex_int16_t yy_nxt[1941] =
+static const flex_int16_t yy_nxt[2019] =
     {   0,
-     1504,   13,   14,   13, 1504,   15,   16, 1504,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  364,
-       37,   14,   37,   86,   25,   26,   38,  829, 1504,   27,
-       37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
-      115,   30,   13,   14,   13,   90,   91,   25,   31,   92,
-       13,   14,   13,   13,   14,   13,   32,   40,  831,   13,
-       14,   13,   33,   40,  115,   91,   92,  365,   90,   34,
-       35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
-       13,  108,   39,   90,   25,   26,   13,   14,   13,   27,
-
-       39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
-       42,   30,   82,  107,   41,  111,   93,   25,   31,  108,
-      130,  138,   88,  832,   88,  833,   32,   89,   89,   89,
-      131,  139,   33,  140,  380,   82,  107,  381,  111,   34,
-       35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
+     1543,   13,   14,   13, 1543,   15,   16, 1543,   17,   18,
+       19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
+       85,  704,   37,   14,   37,   86,   25,   26,   38,  101,
+      825,   27,   37,   14,   37,   42,   28,   42,   38,   91,
+       92,   29,  196,   30,   13,   14,   13,   90,   91,   25,
+       31,   92,   13,   14,   13,   13,   14,   13,   32,   40,
+      705,   13,   14,   13,   33,   40,  102,   91,   92,  196,
+       90,   34,   35,   13,   14,   13,   94,   15,   16,   95,
+       17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
+       23,   24,   13,   14,   13,   90,   39,  103,   25,   26,
+
+       13,   14,   13,   27,   39,   42,  107,   42,   28,   42,
+      108,   42,   41,   29,  111,   30,  114,  115,   93,  136,
+       41,   25,   31,  103,  137,  437,   88,  138,   88,  107,
+       32,   89,   89,   89,   89,   89,   33,  111,  108,  114,
+      826,  115,  438,   34,   35,   44,   44,   44,   45,   45,
+       46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   47,   45,   48,
+       49,   50,   51,   45,   52,   53,   54,   45,   45,   45,
+       45,   55,   56,   45,   57,   45,   45,   58,   45,   45,
+       59,   45,   60,   61,   62,   63,   64,   65,   66,   52,
+
+       67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
+       77,   78,   57,   45,   45,   45,   45,   45,   80,  109,
+       81,   81,   81,   81,   81,   80,  103,   83,   83,   83,
+       83,   83,  107,   82,   84,   84,   84,   84,   84,   80,
+       82,   83,   83,   83,   83,   83,  134,   82,  110,  131,
+      112,  121,  119,  135,   82,  107,   82,  164,  120,  132,
+      113,  165,  122,   82,  126,  123,  133,  124,  127,  125,
+       82,  128,  129,  112,  204,  147,  827,   82,   45,  148,
+       45,   45,   45,   45,  130,   45,   45,   45,  113,  117,
+      139,  234,   45,   45,  235,   45,   45,  204,  236,  149,
+
+      140,   45,  141,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   47,   45,   48,   49,   50,   51,   45,   52,   53,
-       54,   45,   45,   45,   45,   55,   56,   45,   57,   45,
-       45,   58,   45,   45,   59,   45,   60,   61,   62,   63,
-       64,   65,   66,   52,   67,   68,   69,   70,   71,   72,
-
-       73,   74,   75,   76,   77,   78,   57,   45,   45,   45,
-       45,   45,   80,  103,   81,   81,   81,   80,  109,   83,
-       83,   83,  101,  114,   80,   82,   83,   83,   83,  121,
-       82,  133,  122,  112,  123,  306,  124,   82,  134,  103,
-      396,  103,  101,  113,  135,  834,  114,  110,   82,  136,
-      163,  107,  137,   82,  164,  179,  112,  102,  146,  244,
-       82,   45,  147,   45,   45,   45,   45,  119,   45,   45,
-       45,  113,  117,  120,  107,   45,   45,  102,   45,   45,
-      245,  179,  148,  835,   45,  132,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   89,   89,
-       89,   45,  125,  435,  111,   45,  126,  436,  181,  127,
-      128,  142,  143,   45,  180,  144,  152,   45,  181,   45,
-      118,  145,  129,  149,  153,  150,  154,  151,  112,  114,
-      157,  155,  156,  158,  159,  165,  181,  427,  113,  166,
-      180,  193,  167,  224,  160,  179,  184,  161,  836,  168,
-      169,  171,  114,  172,  428,  170,  225,  173,   84,   84,
-       84,   80,  175,   81,   81,   81,  113,  176,  193,   82,
-       88,  182,   88,  174,   82,   89,   89,   89,   80,  180,
-       83,   83,   83,   84,   84,   84,   89,   89,   89,  100,
-
-      188,   82,   82,  192,   82,  197,  100,   82,  194,  198,
-      209,  199,  201,  200,  407,  183,  215,  216,  197,  210,
-      211,  235,  256,  257,   82,  226,  217,   82,  188,  192,
-      221,  837,  222,  197,  100,  201,  198,  195,  100,  199,
-      200,  227,  100,  407,  188,  230,  250,  838,  231,  223,
-      100,  266,  232,  198,  100,  290,  100,  187,  204,  204,
-      204,  205,  353,  236,  292,  204,  204,  204,  204,  204,
-      204,  260,  206,  276,  261,  262,  302,  277,  291,  290,
-      283,  278,  291,  290,  267,  268,  269,  292,  204,  204,
-      204,  204,  204,  204,  292,  270,  298,  271,  301,  272,
-
-      273,  305,  274,  302,  291,  307,  309,  293,  294,  298,
-      389,  409,  410,  354,  305,  403,  355,  295,  484,  298,
-      411,  415,  407,  390,  305,  403,  301,  412,  307,  465,
-      466,  839,  312,  309,  310,  310,  310,  360,  403,  317,
-      840,  310,  310,  310,  310,  310,  310,  318,  404,  415,
-      412,  419,  319,  320,  430,  450,  415,  488,  496,  431,
-      451,  489,  497,  472,  310,  310,  310,  310,  310,  310,
-      418,  418,  418,  473,  485,  672,  673,  418,  418,  418,
-      418,  418,  418,  501,  474,  513,  519,  502,  514,  524,
-      524,  520,  532,  558,  533,  548,  841,  635,  559,  634,
-
-      418,  418,  418,  418,  418,  418,  452,  608,  549,  630,
-      688,  453,  609,  731,  636,  732,  842,  524,  534,  532,
-      830,  533,   45,   45,   45,  635,  634,  721,  843,   45,
-       45,   45,   45,   45,   45,  697,  777,  722,  732,  778,
-      698,  731,  736,  737,  811,  738,  844,  689,  830,  845,
-      846,  812,   45,   45,   45,   45,   45,   45,  814,  847,
-      819,  848,  849,  850,  851,  815,  820,  852,  853,  816,
-      854,  855,  856,  857,  858,  859,  861,  699,  862,  863,
-      860,  864,  865,  866,  867,  868,  869,  870,  871,  872,
-      873,  874,  875,  876,  877,  879,  880,  881,  878,  882,
-
-      883,  884,  885,  886,  887,  888,  889,  890,  891,  892,
-      893,  894,  895,  896,  897,  898,  899,  900,  901,  902,
-      903,  904,  905,  906,  907,  909,  910,  911,  912,  913,
-      914,  915,  916,  917,  918,  919,  908,  920,  921,  922,
-      923,  924,  925,  926,  927,  928,  929,  930,  931,  932,
-      933,  934,  935,  936,  937,  938,  939,  940,  941,  942,
-      943,  944,  922,  945,  946,  921,  947,  948,  949,  950,
-      951,  952,  953,  954,  957,  958,  959,  960,  955,  961,
-      962,  963,  964,  965,  966,  967,  968,  969,  970,  971,
-      972,  974,  975,  976,  977,  978,  979,  980,  981,  982,
-
-      983,  973,  984,  985,  986,  987,  988,  989,  990,  991,
-      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
-     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1010, 1009,  956,
-     1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
-     1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
-     1031, 1032, 1033, 1034, 1008, 1009, 1035, 1036, 1037, 1038,
-     1039, 1040, 1041, 1043, 1045, 1046, 1047, 1042, 1048, 1049,
-     1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
-     1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
-     1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
-
-     1080, 1081, 1082, 1083, 1084, 1044, 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, 1091, 1114, 1115, 1116, 1117,
-     1118, 1092, 1119, 1120, 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, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
-     1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1167, 1168,
-     1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178,
-
-     1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188,
-     1189, 1190, 1191, 1163, 1192, 1193, 1194, 1195, 1196, 1198,
-     1199, 1200, 1149, 1201, 1202, 1203, 1197, 1204, 1205, 1166,
-     1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
-     1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225,
-     1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
-     1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
-     1246, 1247, 1225, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
-     1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
-     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
-
-     1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
-     1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
-     1296, 1297, 1298, 1299, 1300, 1273, 1301, 1302, 1303, 1304,
-     1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314,
-     1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324,
-     1325, 1327, 1328, 1329, 1330, 1326, 1331, 1332, 1333, 1334,
-     1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
-     1345, 1346, 1319, 1347, 1348, 1295, 1349, 1350, 1351, 1352,
-     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
-     1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372,
-
-     1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
-     1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
-     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
-     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
-     1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422,
-     1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432,
-     1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442,
-     1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452,
-     1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
-     1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472,
-
-     1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482,
-     1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492,
-     1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502,
-     1503,   12,   12,   12,   12,   12,   36,   36,   36,   36,
-       36,   79,  297,   79,   79,   79,   98,  406,   98,  523,
-       98,  100,  100,  100,  100,  100,  116,  116,  116,  116,
-      116,  178,  100,  178,  178,  178,  202,  202,  202,  828,
-      827,  826,  825,  824,  823,  822,  821,  818,  817,  813,
-      810,  809,  808,  807,  806,  805,  804,  803,  802,  801,
-      800,  799,  798,  797,  796,  795,  794,  793,  792,  791,
-
-      790,  789,  788,  787,  786,  785,  784,  783,  782,  781,
-      780,  779,  776,  775,  774,  773,  772,  771,  770,  769,
-      768,  767,  766,  765,  764,  763,  762,  761,  760,  759,
-      758,  757,  756,  755,  754,  753,  752,  751,  750,  749,
-      748,  747,  746,  745,  744,  743,  742,  741,  740,  739,
-      735,  734,  733,  730,  729,  728,  727,  726,  725,  724,
-      723,  720,  719,  718,  717,  716,  715,  714,  713,  712,
-      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
-      701,  700,  696,  695,  694,  693,  692,  691,  690,  687,
-      686,  685,  684,  683,  682,  681,  680,  679,  678,  677,
-
-      676,  675,  674,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
-      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
-      644,  643,  642,  641,  640,  639,  638,  637,  633,  632,
-      631,  630,  629,  628,  627,  626,  625,  624,  623,  622,
-      621,  620,  619,  618,  617,  616,  615,  614,  613,  612,
-      611,  610,  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,  565,  564,  563,  562,  561,  560,
-      557,  556,  555,  554,  553,  552,  551,  550,  547,  546,
-      545,  544,  543,  542,  541,  540,  539,  538,  537,  536,
-      535,  531,  530,  529,  528,  527,  526,  525,  522,  521,
-      518,  517,  516,  515,  512,  511,  510,  509,  508,  507,
-      506,  505,  504,  503,  500,  499,  498,  495,  494,  493,
-      492,  491,  490,  487,  486,  483,  482,  481,  480,  479,
-      478,  477,  476,  475,  471,  470,  469,  468,  467,  464,
-      463,  462,  461,  460,  459,  458,  457,  456,  455,  454,
-      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
-
-      439,  438,  437,  434,  433,  432,  429,  426,  425,  424,
-      423,  422,  421,  420,  417,  416,  414,  413,  408,  405,
-      402,  401,  400,  399,  398,  397,  395,  394,  393,  392,
-      391,  388,  387,  386,  385,  384,  383,  382,  379,  378,
-      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
-      367,  366,  363,  362,  361,  359,  358,  357,  356,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
-      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
-      321,  316,  315,  314,  313,  311,  203,  308,  306,  304,
-
-      303,  300,  299,  296,  289,  288,  287,  286,  285,  284,
-      282,  281,  280,  279,  275,  265,  264,  263,  259,  258,
-      255,  254,  253,  252,  251,  249,  248,  247,  246,  243,
-      242,  241,  240,  239,  238,  237,  234,  233,  229,  228,
-      220,  219,  218,  214,  213,  212,  208,  207,  203,  196,
-      191,  190,  189,  186,  185,  177,  162,  141,  106,  105,
-      104,   43,   99,   97,   96,   87,   43, 1504,   11, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504
+       45,   45,   45,   45,  111,  153,   45,  143,  144,  184,
+       45,  145,  197,  154,   45,  155,  101,  146,  828,  114,
+      156,  157,   45,  150,  182,  151,   45,  152,   45,  118,
+      158,  166,  183,  159,  160,  167,  829,  184,  168,  172,
+      173,  228,  114,  198,  161,  169,  170,  162,  184,  112,
+      182,  171,  178,  102,  229,  182,  482,  179,  183,  113,
+       84,   84,   84,   84,   84,   80,  483,   81,   81,   81,
+       81,   81,  174,   82,  175,  832,  187,   88,  176,   88,
+
+       82,  185,   89,   89,   89,   89,   89,  113,  239,   84,
+       84,   84,   84,   84,  177,   80,   82,   83,   83,   83,
+       83,   83,   82,   82,   89,   89,   89,   89,   89,  183,
+       82,   89,   89,   89,   89,   89,  100,  191,  195,  200,
+      213,  201,  202,  100,  203,   82,  191,  219,  220,  214,
+      215,  248,  240,   82,  200,  186,  225,  221,  226,  201,
+      230,  260,  261,  208,  195,  191,  296,  200,  201,  298,
+      202,  203,  249,  100,  209,  227,  231,  100,  297,  297,
+      264,  100,  254,  265,  266,  296,  289,  307,  836,  100,
+      270,  298,  298,  100,  296,  100,  190,  207,  207,  207,
+
+      207,  207,  475,  476,  297,  300,  207,  207,  207,  207,
+      207,  207,  280,  299,  301,  307,  281,  308,  360,  304,
+      282,  315,  311,  313,  304,  271,  272,  273,  371,  207,
+      207,  207,  207,  207,  207,  494,  274,  837,  275,  840,
+      276,  277,  304,  278,  308,  311,  313,  318,  315,  316,
+      316,  316,  316,  316,  311,  841,  324,  412,  316,  316,
+      316,  316,  316,  316,  325,  387,  396,  312,  388,  326,
+      327,  361,  405,  412,  362,  416,  421,  367,  372,  397,
+      412,  316,  316,  316,  316,  316,  316,  424,  418,  419,
+      440,  842,  416,  495,  445,  441,  413,  420,  498,  421,
+
+      446,  460,  499,  424,  416,  506,  461,  511,  536,  507,
+      525,  512,  544,  526,  545,  424,  427,  427,  427,  427,
+      427,  428,  561,  688,  689,  427,  427,  427,  427,  427,
+      427,  484,  531,  843,  737,  562,  536,  532,  536,  544,
+      571,  545,  621,  844,  750,  572,  738,  622,  427,  427,
+      427,  427,  427,  427,  462,  649,  650,  749,  845,  463,
+       45,   45,   45,   45,   45,  796,  546,  750,  797,   45,
+       45,   45,   45,   45,   45,  645,  713,  846,  847,  848,
+      651,  714,  649,  830,  650,  749,  755,  756,  849,  757,
+      831,  833,   45,   45,   45,   45,   45,   45,  834,  838,
+
+      850,  851,  835,  852,  853,  839,  854,  855,  856,  857,
+      858,  859,  860,  861,  862,  863,  864,  865,  866,  867,
+      715,  868,  869,  870,  871,  872,  873,  874,  875,  851,
+      876,  877,  878,  879,  880,  881,  883,  884,  885,  886,
+      882,  887,  888,  889,  890,  891,  892,  893,  894,  895,
+      896,  897,  898,  899,  901,  902,  903,  900,  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,  931,  932,  933,  934,  935,  936,
+      937,  938,  939,  940,  941,  930,  942,  943,  944,  945,
+
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
+      966,  967,  968,  946,  969,  970,  945,  971,  972,  973,
+      974,  975,  976,  977,  978,  979,  982,  983,  984,  985,
+      980,  986,  987,  988,  989,  990,  991,  992,  993,  994,
+      995,  996,  997,  999, 1000, 1001, 1002, 1003, 1004, 1005,
+     1006, 1007, 1008,  998, 1009, 1010, 1011, 1012, 1013, 1014,
+     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
+     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
+     1035, 1037, 1036,  981, 1038, 1039, 1040, 1041, 1042, 1043,
+
+     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1035, 1036,
+     1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1073,
+     1074, 1075, 1070, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
+     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
+     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
+     1113, 1114, 1072, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+     1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
+     1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
+
+     1142, 1143, 1121, 1144, 1145, 1146, 1147, 1148, 1122, 1149,
+     1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
+     1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169,
+     1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179,
+     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
+     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1199, 1200, 1201,
+     1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
+     1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
+     1222, 1194, 1223, 1224, 1225, 1226, 1227, 1228, 1230, 1231,
+     1232, 1233, 1180, 1234, 1235, 1229, 1236, 1237, 1238, 1239,
+
+     1198, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
+     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
+     1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
+     1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278,
+     1279, 1257, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
+     1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
+     1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
+     1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
+     1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
+     1328, 1330, 1331, 1332, 1333, 1306, 1334, 1335, 1336, 1337,
+
+     1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
+     1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
+     1358, 1359, 1360, 1362, 1363, 1364, 1365, 1361, 1366, 1367,
+     1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
+     1378, 1379, 1380, 1353, 1381, 1382, 1383, 1384, 1329, 1385,
+     1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395,
+     1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
+     1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
+     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
+     1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435,
+
+     1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445,
+     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455,
+     1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465,
+     1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475,
+     1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485,
+     1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
+     1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
+     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
+     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
+     1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535,
+
+     1536, 1537, 1538, 1539, 1540, 1541, 1542,   12,   12,   12,
+       12,   12,   36,   36,   36,   36,   36,   79,  303,   79,
+       79,   79,   98,  415,   98,  535,   98,  100,  100,  100,
+      100,  100,  116,  116,  116,  116,  116,  181,  100,  181,
+      181,  181,  205,  205,  205,  824,  823,  822,  821,  820,
+      819,  818,  817,  816,  815,  814,  813,  812,  811,  810,
+      809,  808,  807,  806,  805,  804,  803,  802,  801,  800,
+      799,  798,  795,  794,  793,  792,  791,  790,  789,  788,
+      787,  786,  785,  784,  783,  782,  781,  780,  779,  778,
+      777,  776,  775,  774,  773,  772,  771,  770,  769,  768,
+
+      767,  766,  765,  764,  763,  762,  761,  760,  759,  758,
+      754,  753,  752,  751,  748,  747,  746,  745,  744,  743,
+      742,  741,  740,  739,  736,  735,  734,  733,  732,  731,
+      730,  729,  728,  727,  726,  725,  724,  723,  722,  721,
+      720,  719,  718,  717,  716,  712,  711,  710,  709,  708,
+      707,  706,  703,  702,  701,  700,  699,  698,  697,  696,
+      695,  694,  693,  692,  691,  690,  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,  648,  647,  646,  645,  644,  643,  642,  641,
+      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
+      630,  629,  628,  627,  626,  625,  624,  623,  620,  619,
+      618,  617,  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,  573,  570,  569,  568,  567,
+      566,  565,  564,  563,  560,  559,  558,  557,  556,  555,
+      554,  553,  552,  551,  550,  549,  548,  547,  543,  542,
+
+      541,  540,  539,  538,  537,  534,  533,  530,  529,  528,
+      527,  524,  523,  522,  521,  520,  519,  518,  517,  516,
+      515,  514,  513,  510,  509,  508,  505,  504,  503,  502,
+      501,  500,  497,  496,  493,  492,  491,  490,  489,  488,
+      487,  486,  485,  481,  480,  479,  478,  477,  474,  473,
+      472,  471,  470,  469,  468,  467,  466,  465,  464,  459,
+      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
+      448,  447,  444,  443,  442,  439,  436,  435,  434,  433,
+      432,  431,  430,  429,  426,  425,  423,  422,  417,  414,
+      411,  410,  409,  408,  407,  406,  404,  403,  402,  401,
+
+      400,  399,  398,  395,  394,  393,  392,  391,  390,  389,
+      386,  385,  384,  383,  382,  381,  380,  379,  378,  377,
+      376,  375,  374,  373,  370,  369,  368,  366,  365,  364,
+      363,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
+      330,  329,  328,  323,  322,  321,  320,  319,  317,  206,
+      314,  312,  310,  309,  306,  305,  302,  295,  294,  293,
+      292,  291,  290,  288,  287,  286,  285,  284,  283,  279,
+      269,  268,  267,  263,  262,  259,  258,  257,  256,  255,
+
+      253,  252,  251,  250,  247,  246,  245,  244,  243,  242,
+      241,  238,  237,  233,  232,  224,  223,  222,  218,  217,
+      216,  212,  211,  210,  206,  199,  194,  193,  192,  189,
+      188,  180,  163,  142,  106,  105,  104,   43,   99,   97,
+       96,   87,   43, 1543,   11, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543
     } ;
 
-static const flex_int16_t yy_chk[1941] =
+static const flex_int16_t yy_chk[2019] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  254,
-        3,    3,    3,   21,    1,    1,    3,  731,    0,    1,
-        4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
-       57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  733,    8,
-        8,    8,    1,    8,   57,   27,   28,  254,   26,    1,
-        1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
-        9,   52,    5,   31,    2,    2,   10,   10,   10,    2,
-
-        6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
-       42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
-       62,   66,   25,  734,   25,  736,    2,   25,   25,   25,
-       62,   66,    2,   66,  269,   20,   51,  269,   54,    2,
-        2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       21,  603,    3,    3,    3,   21,    1,    1,    3,   44,
+      726,    1,    4,    4,    4,   13,    1,   13,    4,   27,
+       28,    1,  108,    1,    5,    5,    5,   26,   32,    1,
+        1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
+      603,    8,    8,    8,    1,    8,   44,   27,   28,  108,
+       26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    9,    9,    9,   31,    5,   47,    2,    2,
+
+       10,   10,   10,    2,    6,   37,   51,   37,    2,   42,
+       52,   42,    9,    2,   54,    2,   56,   57,   31,   65,
+       10,    2,    2,   47,   65,  327,   25,   65,   25,   51,
+        2,   25,   25,   25,   25,   25,    2,   54,   52,   56,
+      727,   57,  327,    2,    2,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1498,196 +1519,205 @@ static const flex_int16_t yy_chk[1941] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   17,   47,   17,   17,   17,   19,   53,   19,
-       19,   19,   44,   56,   22,   17,   22,   22,   22,   60,
-       19,   64,   60,   55,   60,  283,   60,   22,   64,   47,
-      283,   59,  100,   55,   65,  737,   56,   53,   17,   65,
-       74,   63,   65,   19,   74,   90,   55,   44,   69,  146,
-       22,   45,   69,   45,   45,   45,   45,   59,   45,   45,
-       45,   55,   58,   59,   63,   45,   45,  100,   45,   58,
-      146,   90,   69,  738,   45,   63,   45,   45,   45,   45,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,   53,
+       17,   17,   17,   17,   17,   19,   59,   19,   19,   19,
+       19,   19,   63,   17,   20,   20,   20,   20,   20,   22,
+       19,   22,   22,   22,   22,   22,   64,   20,   53,   62,
+       55,   60,   59,   64,   22,   63,   17,   74,   59,   62,
+       55,   74,   60,   19,   61,   60,   63,   60,   61,   60,
+       20,   61,   61,   55,  115,   69,  728,   22,   45,   69,
+       45,   45,   45,   45,   61,   45,   45,   45,   55,   58,
+       66,  136,   45,   45,  136,   45,   58,  115,  136,   69,
+
+       66,   45,   66,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   58,   88,   88,
-       88,   58,   61,  327,   70,   58,   61,  327,   92,   61,
-       61,   68,   68,   58,   91,   68,   71,   58,   95,   58,
-       58,   68,   61,   70,   71,   70,   71,   70,   76,   77,
-       72,   71,   71,   72,   72,   75,   92,  320,   76,   75,
-       91,  108,   75,  131,   72,   93,   95,   72,  739,   75,
-       75,   76,   77,   76,  320,   75,  131,   76,   80,   80,
-       80,   81,   77,   81,   81,   81,   76,   77,  108,   80,
-       82,   93,   82,   76,   81,   82,   82,   82,   83,   94,
-       83,   83,   83,   84,   84,   84,   89,   89,   89,  102,
-
-      103,   83,   80,  107,   84,  111,  102,   81,  109,  112,
-      122,  113,  115,  114,  298,   94,  126,  126,  151,  122,
-      122,  138,  157,  157,   83,  132,  126,   84,  103,  107,
-      130,  740,  130,  111,  102,  115,  112,  109,  102,  113,
-      114,  132,  102,  298,  119,  135,  151,  741,  135,  130,
-      102,  164,  135,  171,  102,  179,  102,  102,  118,  118,
-      118,  119,  245,  138,  181,  118,  118,  118,  118,  118,
-      118,  160,  119,  166,  160,  160,  193,  166,  180,  182,
-      171,  166,  183,  179,  164,  164,  164,  181,  118,  118,
-      118,  118,  118,  118,  184,  164,  188,  164,  192,  164,
-
-      164,  197,  164,  193,  180,  199,  201,  182,  183,  206,
-      277,  300,  300,  245,  250,  290,  245,  184,  371,  188,
-      300,  305,  312,  277,  197,  293,  192,  301,  199,  353,
-      353,  742,  206,  201,  204,  204,  204,  250,  290,  211,
-      743,  204,  204,  204,  204,  204,  204,  211,  293,  305,
-      301,  312,  211,  211,  323,  341,  360,  374,  381,  323,
-      341,  374,  381,  359,  204,  204,  204,  204,  204,  204,
-      310,  310,  310,  359,  371,  573,  573,  310,  310,  310,
-      310,  310,  310,  385,  360,  396,  401,  385,  396,  407,
-      419,  401,  417,  445,  417,  435,  744,  533,  445,  532,
-
-      310,  310,  310,  310,  310,  310,  341,  498,  435,  534,
-      590,  341,  498,  634,  534,  635,  745,  407,  419,  417,
-      732,  417,  418,  418,  418,  533,  532,  623,  746,  418,
-      418,  418,  418,  418,  418,  599,  679,  623,  635,  679,
-      599,  634,  639,  639,  715,  639,  747,  590,  732,  748,
-      749,  715,  418,  418,  418,  418,  418,  418,  717,  750,
-      720,  751,  752,  753,  754,  717,  720,  755,  756,  717,
-      758,  759,  760,  761,  762,  763,  764,  599,  765,  766,
-      763,  767,  768,  769,  770,  771,  772,  775,  776,  777,
-      778,  781,  782,  783,  784,  785,  786,  787,  784,  788,
-
-      789,  790,  792,  793,  794,  795,  796,  797,  798,  799,
-      800,  801,  802,  803,  804,  805,  806,  807,  808,  809,
-      810,  811,  812,  813,  814,  815,  816,  817,  818,  819,
-      820,  822,  823,  824,  825,  826,  814,  827,  829,  830,
-      831,  832,  833,  834,  835,  836,  837,  838,  839,  840,
-      841,  842,  843,  844,  845,  846,  847,  849,  850,  851,
-      852,  853,  830,  854,  855,  829,  856,  857,  858,  860,
-      861,  862,  863,  864,  865,  867,  868,  869,  864,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
-      881,  882,  885,  886,  887,  889,  890,  891,  893,  894,
-
-      895,  881,  896,  897,  898,  899,  900,  901,  902,  903,
-      904,  905,  906,  907,  908,  909,  910,  912,  913,  914,
-      915,  916,  917,  918,  919,  920,  921,  923,  922,  864,
-      924,  925,  926,  927,  928,  929,  930,  931,  932,  933,
-      934,  935,  936,  938,  939,  940,  941,  942,  943,  944,
-      945,  946,  947,  948,  921,  922,  949,  950,  951,  952,
-      953,  955,  956,  957,  958,  959,  960,  956,  961,  962,
-      963,  964,  965,  966,  967,  968,  969,  970,  971,  972,
-      973,  974,  975,  976,  977,  978,  979,  981,  982,  983,
-      984,  985,  986,  987,  988,  989,  990,  991,  993,  994,
-
-      997,  998,  999, 1000, 1001,  957, 1002, 1003, 1004, 1005,
-     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
-     1016, 1017, 1018, 1020, 1022, 1023, 1024, 1025, 1026, 1027,
-     1028, 1029, 1030, 1031, 1032, 1008, 1033, 1034, 1035, 1036,
-     1037, 1009, 1040, 1042, 1044, 1045, 1046, 1047, 1048, 1049,
-     1050, 1051, 1053, 1054, 1055, 1057, 1058, 1059, 1060, 1063,
-     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
-     1075, 1076, 1077, 1078, 1079, 1080, 1082, 1083, 1084, 1085,
-     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1094, 1095, 1096,
-     1097, 1098, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
-
-     1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
-     1119, 1120, 1121, 1091, 1122, 1123, 1124, 1126, 1127, 1128,
-     1129, 1130, 1076, 1133, 1134, 1135, 1127, 1136, 1137, 1094,
-     1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, 1148,
-     1149, 1150, 1152, 1154, 1157, 1159, 1160, 1161, 1162, 1163,
-     1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175,
-     1176, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186,
-     1187, 1188, 1163, 1190, 1193, 1195, 1196, 1197, 1198, 1200,
-     1201, 1202, 1203, 1204, 1205, 1208, 1209, 1211, 1212, 1213,
-     1214, 1215, 1217, 1218, 1219, 1220, 1221, 1223, 1225, 1226,
-
-     1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1237,
-     1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1246, 1247,
-     1248, 1249, 1250, 1251, 1252, 1225, 1253, 1254, 1255, 1256,
-     1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
-     1268, 1269, 1271, 1272, 1273, 1276, 1277, 1278, 1282, 1283,
-     1285, 1286, 1287, 1288, 1289, 1285, 1290, 1291, 1292, 1293,
-     1295, 1296, 1299, 1300, 1301, 1302, 1304, 1305, 1306, 1307,
-     1308, 1309, 1273, 1310, 1311, 1247, 1312, 1313, 1314, 1315,
-     1316, 1317, 1319, 1320, 1321, 1323, 1324, 1326, 1327, 1328,
-     1329, 1330, 1332, 1333, 1334, 1336, 1337, 1338, 1339, 1340,
-
-     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1351,
-     1352, 1354, 1357, 1358, 1359, 1360, 1361, 1362, 1364, 1365,
-     1366, 1367, 1368, 1369, 1371, 1373, 1374, 1375, 1376, 1377,
-     1378, 1379, 1380, 1381, 1383, 1384, 1385, 1386, 1387, 1388,
-     1389, 1390, 1391, 1392, 1393, 1396, 1397, 1398, 1399, 1400,
-     1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1412,
-     1413, 1414, 1415, 1416, 1417, 1419, 1420, 1423, 1424, 1425,
-     1426, 1427, 1429, 1430, 1431, 1433, 1434, 1436, 1437, 1439,
-     1440, 1442, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451,
-     1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461,
-
-     1462, 1463, 1464, 1465, 1466, 1467, 1469, 1470, 1471, 1472,
-     1473, 1475, 1478, 1479, 1480, 1481, 1482, 1483, 1487, 1488,
-     1489, 1490, 1492, 1493, 1495, 1496, 1497, 1498, 1499, 1501,
-     1502, 1505, 1505, 1505, 1505, 1505, 1506, 1506, 1506, 1506,
-     1506, 1507, 1513, 1507, 1507, 1507, 1508, 1514, 1508, 1515,
-     1508, 1509, 1509, 1509, 1509, 1509, 1510, 1510, 1510, 1510,
-     1510, 1511, 1516, 1511, 1511, 1511, 1512, 1512, 1512,  729,
-      728,  727,  726,  725,  724,  723,  722,  719,  718,  716,
-      714,  713,  712,  711,  710,  709,  708,  707,  706,  705,
-      704,  703,  702,  701,  700,  699,  698,  696,  695,  694,
-
-      693,  692,  691,  690,  689,  687,  686,  685,  684,  683,
-      682,  680,  678,  677,  676,  675,  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,  641,  640,
-      638,  637,  636,  633,  632,  631,  628,  627,  626,  625,
-      624,  621,  620,  619,  618,  617,  616,  615,  614,  613,
-      612,  611,  610,  609,  607,  606,  605,  604,  603,  602,
-      601,  600,  598,  597,  595,  594,  593,  592,  591,  589,
-      588,  587,  585,  584,  582,  581,  580,  579,  578,  577,
-
-      576,  575,  574,  572,  571,  570,  569,  568,  566,  565,
-      564,  563,  562,  561,  560,  559,  557,  556,  555,  554,
-      553,  552,  551,  550,  549,  548,  547,  546,  545,  544,
-      543,  542,  541,  540,  539,  538,  537,  536,  530,  528,
-      525,  524,  522,  521,  520,  518,  514,  513,  512,  511,
-      510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
-      500,  499,  497,  496,  495,  494,  493,  492,  491,  490,
-      489,  488,  487,  485,  483,  482,  481,  480,  479,  478,
-      477,  476,  475,  474,  473,  472,  470,  469,  468,  467,
-      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
-
-      456,  455,  454,  453,  452,  451,  449,  448,  447,  446,
-      444,  443,  442,  441,  440,  439,  437,  436,  434,  433,
-      432,  431,  429,  428,  427,  426,  425,  424,  423,  421,
-      420,  415,  414,  412,  411,  410,  409,  408,  405,  402,
-      400,  399,  398,  397,  395,  394,  393,  392,  391,  390,
-      389,  388,  387,  386,  384,  383,  382,  380,  379,  378,
-      377,  376,  375,  373,  372,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  358,  357,  356,  355,  354,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
-
-      330,  329,  328,  326,  325,  324,  322,  319,  318,  317,
-      316,  315,  314,  313,  309,  307,  304,  302,  299,  296,
-      289,  288,  287,  286,  285,  284,  282,  281,  280,  279,
-      278,  276,  275,  274,  273,  272,  271,  270,  268,  267,
-      266,  265,  264,  263,  262,  261,  260,  259,  258,  257,
-      256,  255,  253,  252,  251,  249,  248,  247,  246,  244,
-      243,  242,  241,  240,  239,  238,  237,  236,  234,  233,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  221,  220,  219,  218,  217,  216,  215,  214,  213,
-      212,  210,  209,  208,  207,  205,  202,  200,  198,  196,
-
-      195,  190,  189,  185,  177,  176,  175,  174,  173,  172,
-      170,  169,  168,  167,  165,  163,  162,  161,  159,  158,
-      156,  155,  154,  153,  152,  150,  149,  148,  147,  145,
-      144,  143,  142,  141,  140,  139,  137,  136,  134,  133,
-      129,  128,  127,  125,  124,  123,  121,  120,  116,  110,
-      106,  105,  104,   98,   97,   78,   73,   67,   50,   49,
-       48,   43,   41,   39,   38,   24,   14,   11, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
-     1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504
+       45,   45,   45,   45,   70,   71,   58,   68,   68,   92,
+       58,   68,  109,   71,   58,   71,  100,   68,  729,   77,
+       71,   71,   58,   70,   90,   70,   58,   70,   58,   58,
+       72,   75,   91,   72,   72,   75,  730,   92,   75,   76,
+       76,  132,   77,  109,   72,   75,   75,   72,   95,   76,
+       90,   75,   77,  100,  132,   93,  366,   77,   91,   76,
+       80,   80,   80,   80,   80,   81,  366,   81,   81,   81,
+       81,   81,   76,   80,   76,  732,   95,   82,   76,   82,
+
+       81,   93,   82,   82,   82,   82,   82,   76,  139,   84,
+       84,   84,   84,   84,   76,   83,   80,   83,   83,   83,
+       83,   83,   84,   81,   88,   88,   88,   88,   88,   94,
+       83,   89,   89,   89,   89,   89,  102,  103,  107,  111,
+      123,  112,  113,  102,  114,   84,  119,  127,  127,  123,
+      123,  147,  139,   83,  152,   94,  131,  127,  131,  174,
+      133,  158,  158,  119,  107,  103,  182,  111,  112,  184,
+      113,  114,  147,  102,  119,  131,  133,  102,  183,  186,
+      161,  102,  152,  161,  161,  185,  174,  195,  734,  102,
+      165,  187,  184,  102,  182,  102,  102,  118,  118,  118,
+
+      118,  118,  360,  360,  183,  186,  118,  118,  118,  118,
+      118,  118,  167,  185,  187,  195,  167,  196,  249,  191,
+      167,  204,  200,  202,  209,  165,  165,  165,  258,  118,
+      118,  118,  118,  118,  118,  378,  165,  735,  165,  738,
+      165,  165,  191,  165,  196,  200,  202,  209,  204,  207,
+      207,  207,  207,  207,  254,  739,  215,  296,  207,  207,
+      207,  207,  207,  207,  215,  273,  281,  289,  273,  215,
+      215,  249,  289,  299,  249,  304,  307,  254,  258,  281,
+      296,  207,  207,  207,  207,  207,  207,  311,  306,  306,
+      330,  740,  318,  378,  334,  330,  299,  306,  381,  307,
+
+      334,  348,  381,  367,  304,  388,  348,  392,  416,  388,
+      405,  392,  426,  405,  426,  311,  316,  316,  316,  316,
+      316,  318,  445,  586,  586,  316,  316,  316,  316,  316,
+      316,  367,  410,  741,  636,  445,  416,  410,  428,  426,
+      455,  426,  508,  742,  650,  455,  636,  508,  316,  316,
+      316,  316,  316,  316,  348,  544,  545,  649,  743,  348,
+      427,  427,  427,  427,  427,  695,  428,  650,  695,  427,
+      427,  427,  427,  427,  427,  546,  612,  744,  745,  746,
+      546,  612,  544,  731,  545,  649,  655,  655,  747,  655,
+      731,  733,  427,  427,  427,  427,  427,  427,  733,  736,
+
+      749,  750,  733,  751,  752,  736,  753,  755,  756,  757,
+      758,  759,  760,  761,  762,  763,  764,  765,  766,  767,
+      612,  768,  769,  770,  771,  772,  773,  774,  775,  750,
+      777,  778,  779,  780,  781,  782,  783,  784,  785,  786,
+      782,  787,  788,  789,  790,  791,  794,  795,  796,  797,
+      800,  801,  802,  803,  804,  805,  806,  803,  807,  808,
+      809,  811,  812,  813,  814,  815,  816,  817,  818,  819,
+      820,  821,  822,  823,  824,  825,  826,  827,  828,  829,
+      830,  831,  832,  833,  834,  835,  836,  837,  838,  839,
+      841,  842,  843,  844,  845,  833,  846,  847,  848,  850,
+
+      851,  852,  853,  854,  855,  856,  857,  858,  859,  860,
+      861,  862,  863,  864,  865,  866,  867,  868,  869,  871,
+      872,  873,  874,  851,  875,  876,  850,  877,  878,  879,
+      880,  882,  883,  884,  885,  886,  887,  889,  890,  891,
+      886,  892,  893,  894,  895,  896,  897,  898,  899,  900,
+      901,  902,  903,  904,  907,  908,  909,  911,  912,  913,
+      915,  916,  917,  903,  918,  919,  920,  921,  922,  923,
+      924,  925,  926,  927,  928,  929,  930,  931,  932,  934,
+      935,  936,  937,  938,  939,  940,  941,  942,  943,  944,
+      945,  947,  946,  886,  948,  949,  950,  951,  952,  953,
+
+      954,  955,  956,  957,  958,  959,  960,  961,  963,  964,
+      965,  966,  967,  968,  969,  970,  971,  972,  945,  946,
+      973,  974,  975,  976,  977,  978,  980,  981,  982,  983,
+      984,  985,  981,  986,  987,  988,  989,  990,  991,  992,
+      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
+     1003, 1004, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
+     1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026,
+     1027, 1028,  982, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+     1046, 1048, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
+
+     1058, 1059, 1035, 1060, 1061, 1062, 1063, 1064, 1036, 1065,
+     1068, 1070, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
+     1081, 1082, 1083, 1085, 1086, 1087, 1088, 1091, 1093, 1094,
+     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
+     1105, 1106, 1107, 1108, 1110, 1111, 1112, 1115, 1116, 1117,
+     1118, 1119, 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128,
+     1129, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1140,
+     1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
+     1151, 1121, 1152, 1153, 1154, 1155, 1157, 1158, 1159, 1160,
+     1161, 1164, 1104, 1165, 1166, 1158, 1167, 1168, 1169, 1170,
+
+     1125, 1171, 1172, 1173, 1174, 1176, 1177, 1178, 1179, 1180,
+     1181, 1183, 1185, 1188, 1190, 1191, 1192, 1193, 1194, 1196,
+     1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207,
+     1208, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
+     1219, 1194, 1220, 1222, 1225, 1227, 1228, 1229, 1230, 1232,
+     1233, 1234, 1235, 1236, 1237, 1240, 1241, 1243, 1244, 1245,
+     1246, 1247, 1249, 1250, 1251, 1252, 1253, 1255, 1257, 1258,
+     1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1269,
+     1270, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1279,
+     1280, 1281, 1282, 1283, 1284, 1257, 1285, 1286, 1287, 1288,
+
+     1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298,
+     1299, 1301, 1302, 1304, 1305, 1306, 1307, 1310, 1311, 1312,
+     1316, 1317, 1319, 1320, 1321, 1322, 1323, 1319, 1324, 1325,
+     1326, 1327, 1329, 1330, 1333, 1334, 1335, 1336, 1338, 1339,
+     1340, 1341, 1342, 1306, 1343, 1344, 1345, 1346, 1280, 1347,
+     1348, 1349, 1350, 1351, 1353, 1354, 1355, 1356, 1358, 1359,
+     1361, 1362, 1363, 1364, 1365, 1367, 1368, 1369, 1371, 1372,
+     1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
+     1383, 1385, 1386, 1387, 1389, 1391, 1393, 1394, 1395, 1396,
+     1397, 1398, 1400, 1401, 1402, 1403, 1404, 1405, 1407, 1409,
+
+     1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1419, 1420,
+     1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
+     1433, 1434, 1435, 1436, 1437, 1439, 1440, 1441, 1442, 1443,
+     1444, 1445, 1446, 1447, 1448, 1450, 1451, 1452, 1453, 1454,
+     1455, 1457, 1458, 1461, 1462, 1463, 1464, 1465, 1467, 1469,
+     1470, 1472, 1473, 1475, 1476, 1478, 1479, 1481, 1483, 1484,
+     1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494,
+     1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504,
+     1505, 1506, 1508, 1509, 1510, 1511, 1512, 1514, 1517, 1518,
+     1519, 1520, 1521, 1522, 1526, 1527, 1528, 1529, 1531, 1532,
+
+     1534, 1535, 1536, 1537, 1538, 1540, 1541, 1544, 1544, 1544,
+     1544, 1544, 1545, 1545, 1545, 1545, 1545, 1546, 1552, 1546,
+     1546, 1546, 1547, 1553, 1547, 1554, 1547, 1548, 1548, 1548,
+     1548, 1548, 1549, 1549, 1549, 1549, 1549, 1550, 1555, 1550,
+     1550, 1550, 1551, 1551, 1551,  725,  724,  723,  722,  721,
+      720,  719,  718,  717,  716,  715,  714,  712,  711,  710,
+      709,  708,  707,  706,  705,  703,  702,  701,  700,  699,
+      698,  696,  694,  693,  692,  691,  690,  689,  688,  687,
+      686,  685,  684,  683,  682,  681,  680,  679,  678,  676,
+      675,  674,  673,  672,  671,  670,  669,  668,  667,  666,
+
+      665,  664,  663,  662,  661,  660,  659,  658,  657,  656,
+      654,  653,  652,  651,  648,  647,  646,  643,  642,  641,
+      640,  639,  638,  637,  634,  633,  632,  631,  630,  629,
+      628,  627,  626,  625,  624,  623,  622,  620,  619,  618,
+      617,  616,  615,  614,  613,  611,  610,  608,  607,  606,
+      605,  604,  602,  601,  600,  598,  597,  595,  594,  593,
+      592,  591,  590,  589,  588,  587,  585,  584,  583,  582,
+      581,  579,  578,  577,  576,  575,  574,  573,  572,  570,
+      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
+      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
+
+      549,  548,  542,  540,  537,  536,  534,  533,  532,  530,
+      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
+      516,  515,  514,  513,  512,  511,  510,  509,  507,  506,
+      505,  504,  503,  502,  501,  500,  499,  498,  497,  495,
+      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
+      483,  482,  480,  479,  478,  477,  476,  475,  474,  473,
+      472,  471,  470,  469,  468,  467,  466,  465,  464,  463,
+      462,  461,  459,  458,  457,  456,  454,  453,  452,  451,
+      450,  449,  447,  446,  444,  443,  442,  441,  439,  438,
+      437,  436,  435,  434,  433,  431,  430,  429,  424,  423,
+
+      421,  420,  419,  418,  417,  414,  411,  409,  408,  407,
+      406,  404,  403,  402,  401,  400,  399,  398,  397,  396,
+      395,  394,  393,  391,  390,  389,  387,  386,  385,  384,
+      383,  382,  380,  379,  377,  376,  375,  374,  373,  372,
+      371,  370,  369,  365,  364,  363,  362,  361,  359,  358,
+      357,  356,  355,  354,  353,  352,  351,  350,  349,  347,
+      346,  345,  344,  343,  342,  341,  340,  339,  338,  337,
+      336,  335,  333,  332,  331,  329,  326,  325,  324,  323,
+      322,  321,  320,  319,  315,  313,  310,  308,  305,  302,
+      295,  294,  293,  292,  291,  290,  288,  287,  286,  285,
+
+      284,  283,  282,  280,  279,  278,  277,  276,  275,  274,
+      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
+      262,  261,  260,  259,  257,  256,  255,  253,  252,  251,
+      250,  248,  247,  246,  245,  244,  243,  242,  241,  240,
+      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
+      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
+      218,  217,  216,  214,  213,  212,  211,  210,  208,  205,
+      203,  201,  199,  198,  193,  192,  188,  180,  179,  178,
+      177,  176,  175,  173,  172,  171,  170,  169,  168,  166,
+      164,  163,  162,  160,  159,  157,  156,  155,  154,  153,
+
+      151,  150,  149,  148,  146,  145,  144,  143,  142,  141,
+      140,  138,  137,  135,  134,  130,  129,  128,  126,  125,
+      124,  122,  121,  120,  116,  110,  106,  105,  104,   98,
+       97,   78,   73,   67,   50,   49,   48,   43,   41,   39,
+       38,   24,   14,   11, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
+     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1696,7 +1726,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[183] =
+static const flex_int16_t yy_rule_linenum[186] =
     {   0,
       149,  151,  153,  158,  159,  164,  165,  166,  178,  181,
       186,  193,  202,  211,  220,  229,  238,  247,  256,  265,
@@ -1710,14 +1740,14 @@ static const flex_int16_t yy_rule_linenum[183] =
       972,  981,  990, 1012, 1034, 1043, 1053, 1063, 1072, 1082,
 
      1093, 1102, 1111, 1120, 1129, 1138, 1148, 1157, 1166, 1175,
-     1184, 1193, 1202, 1211, 1220, 1229, 1239, 1248, 1257, 1267,
-     1279, 1292, 1301, 1310, 1320, 1330, 1339, 1350, 1360, 1369,
-     1379, 1389, 1398, 1407, 1416, 1425, 1435, 1444, 1454, 1463,
-     1472, 1481, 1490, 1499, 1508, 1517, 1526, 1535, 1544, 1553,
-     1562, 1571, 1580, 1589, 1598, 1607, 1616, 1625, 1634, 1643,
-     1652, 1661, 1670, 1679, 1689, 1788, 1793, 1798, 1803, 1804,
-     1805, 1806, 1807, 1808, 1810, 1828, 1841, 1846, 1850, 1852,
-     1854, 1856
+     1186, 1197, 1208, 1217, 1226, 1235, 1244, 1253, 1262, 1272,
+     1281, 1290, 1300, 1312, 1325, 1334, 1343, 1353, 1363, 1372,
+     1383, 1393, 1402, 1412, 1422, 1431, 1440, 1449, 1458, 1468,
+     1477, 1487, 1496, 1505, 1514, 1523, 1532, 1541, 1550, 1559,
+     1568, 1577, 1586, 1595, 1604, 1613, 1622, 1631, 1640, 1649,
+     1658, 1667, 1676, 1685, 1694, 1703, 1712, 1722, 1821, 1826,
+     1831, 1836, 1837, 1838, 1839, 1840, 1841, 1843, 1861, 1874,
+     1879, 1883, 1885, 1887, 1889
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1770,7 +1800,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1774 "dhcp6_lexer.cc"
+#line 1804 "dhcp6_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1796,8 +1826,8 @@ using namespace isc::dhcp;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1800 "dhcp6_lexer.cc"
-#line 1801 "dhcp6_lexer.cc"
+#line 1830 "dhcp6_lexer.cc"
+#line 1831 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2129,7 +2159,7 @@ YY_DECL
     }
 
 
-#line 2133 "dhcp6_lexer.cc"
+#line 2163 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2158,13 +2188,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 >= 1505 )
+                               if ( yy_current_state >= 1544 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1504 );
+               while ( yy_current_state != 1543 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2183,13 +2213,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 < 183 )
+                       else if ( yy_act < 186 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 183 )
+                       else if ( yy_act == 186 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 184 )
+                       else if ( yy_act == 187 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3572,6 +3602,48 @@ YY_RULE_SETUP
 case 110:
 YY_RULE_SETUP
 #line 1175 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_CALCULATE_TEE_TIMES(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("calculate-tee-times", driver.loc_);
+    }
+}
+       YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 1186 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_T1_PERCENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("t1-percent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 1197 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_T2_PERCENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("t2-percent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 1208 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3581,9 +3653,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 114:
 YY_RULE_SETUP
-#line 1184 "dhcp6_lexer.ll"
+#line 1217 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3593,9 +3665,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 115:
 YY_RULE_SETUP
-#line 1193 "dhcp6_lexer.ll"
+#line 1226 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3605,9 +3677,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 116:
 YY_RULE_SETUP
-#line 1202 "dhcp6_lexer.ll"
+#line 1235 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3617,9 +3689,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 117:
 YY_RULE_SETUP
-#line 1211 "dhcp6_lexer.ll"
+#line 1244 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3629,9 +3701,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 118:
 YY_RULE_SETUP
-#line 1220 "dhcp6_lexer.ll"
+#line 1253 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3641,9 +3713,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 119:
 YY_RULE_SETUP
-#line 1229 "dhcp6_lexer.ll"
+#line 1262 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3653,9 +3725,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 120:
 YY_RULE_SETUP
-#line 1239 "dhcp6_lexer.ll"
+#line 1272 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3665,9 +3737,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 121:
 YY_RULE_SETUP
-#line 1248 "dhcp6_lexer.ll"
+#line 1281 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3677,9 +3749,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 122:
 YY_RULE_SETUP
-#line 1257 "dhcp6_lexer.ll"
+#line 1290 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3690,9 +3762,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 123:
 YY_RULE_SETUP
-#line 1267 "dhcp6_lexer.ll"
+#line 1300 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3705,9 +3777,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 124:
 YY_RULE_SETUP
-#line 1279 "dhcp6_lexer.ll"
+#line 1312 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3721,9 +3793,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 125:
 YY_RULE_SETUP
-#line 1292 "dhcp6_lexer.ll"
+#line 1325 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3733,9 +3805,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 126:
 YY_RULE_SETUP
-#line 1301 "dhcp6_lexer.ll"
+#line 1334 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3745,9 +3817,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 127:
 YY_RULE_SETUP
-#line 1310 "dhcp6_lexer.ll"
+#line 1343 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3758,9 +3830,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 128:
 YY_RULE_SETUP
-#line 1320 "dhcp6_lexer.ll"
+#line 1353 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3771,9 +3843,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 129:
 YY_RULE_SETUP
-#line 1330 "dhcp6_lexer.ll"
+#line 1363 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3783,9 +3855,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 130:
 YY_RULE_SETUP
-#line 1339 "dhcp6_lexer.ll"
+#line 1372 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3797,9 +3869,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 131:
 YY_RULE_SETUP
-#line 1350 "dhcp6_lexer.ll"
+#line 1383 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3810,9 +3882,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 132:
 YY_RULE_SETUP
-#line 1360 "dhcp6_lexer.ll"
+#line 1393 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3822,9 +3894,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 133:
 YY_RULE_SETUP
-#line 1369 "dhcp6_lexer.ll"
+#line 1402 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3835,9 +3907,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 134:
 YY_RULE_SETUP
-#line 1379 "dhcp6_lexer.ll"
+#line 1412 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3848,9 +3920,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 135:
 YY_RULE_SETUP
-#line 1389 "dhcp6_lexer.ll"
+#line 1422 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3860,9 +3932,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 136:
 YY_RULE_SETUP
-#line 1398 "dhcp6_lexer.ll"
+#line 1431 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3872,9 +3944,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 137:
 YY_RULE_SETUP
-#line 1407 "dhcp6_lexer.ll"
+#line 1440 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3884,9 +3956,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 138:
 YY_RULE_SETUP
-#line 1416 "dhcp6_lexer.ll"
+#line 1449 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3896,9 +3968,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 139:
 YY_RULE_SETUP
-#line 1425 "dhcp6_lexer.ll"
+#line 1458 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3909,9 +3981,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 140:
 YY_RULE_SETUP
-#line 1435 "dhcp6_lexer.ll"
+#line 1468 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3921,9 +3993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 141:
 YY_RULE_SETUP
-#line 1444 "dhcp6_lexer.ll"
+#line 1477 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3933,9 +4005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 142:
 YY_RULE_SETUP
-#line 1454 "dhcp6_lexer.ll"
+#line 1487 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3945,9 +4017,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 143:
 YY_RULE_SETUP
-#line 1463 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3957,9 +4029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 144:
 YY_RULE_SETUP
-#line 1472 "dhcp6_lexer.ll"
+#line 1505 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3969,9 +4041,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 145:
 YY_RULE_SETUP
-#line 1481 "dhcp6_lexer.ll"
+#line 1514 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3981,9 +4053,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 146:
 YY_RULE_SETUP
-#line 1490 "dhcp6_lexer.ll"
+#line 1523 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3993,9 +4065,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 147:
 YY_RULE_SETUP
-#line 1499 "dhcp6_lexer.ll"
+#line 1532 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4005,9 +4077,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 148:
 YY_RULE_SETUP
-#line 1508 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4017,9 +4089,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 149:
 YY_RULE_SETUP
-#line 1517 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4029,9 +4101,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 150:
 YY_RULE_SETUP
-#line 1526 "dhcp6_lexer.ll"
+#line 1559 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4041,9 +4113,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 151:
 YY_RULE_SETUP
-#line 1535 "dhcp6_lexer.ll"
+#line 1568 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4053,9 +4125,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 152:
 YY_RULE_SETUP
-#line 1544 "dhcp6_lexer.ll"
+#line 1577 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4065,9 +4137,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 153:
 YY_RULE_SETUP
-#line 1553 "dhcp6_lexer.ll"
+#line 1586 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4077,9 +4149,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 154:
 YY_RULE_SETUP
-#line 1562 "dhcp6_lexer.ll"
+#line 1595 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4089,9 +4161,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 155:
 YY_RULE_SETUP
-#line 1571 "dhcp6_lexer.ll"
+#line 1604 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4101,9 +4173,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 156:
 YY_RULE_SETUP
-#line 1580 "dhcp6_lexer.ll"
+#line 1613 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4113,9 +4185,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 157:
 YY_RULE_SETUP
-#line 1589 "dhcp6_lexer.ll"
+#line 1622 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4125,9 +4197,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 158:
 YY_RULE_SETUP
-#line 1598 "dhcp6_lexer.ll"
+#line 1631 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4137,9 +4209,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 159:
 YY_RULE_SETUP
-#line 1607 "dhcp6_lexer.ll"
+#line 1640 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4149,9 +4221,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 160:
 YY_RULE_SETUP
-#line 1616 "dhcp6_lexer.ll"
+#line 1649 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4161,9 +4233,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 161:
 YY_RULE_SETUP
-#line 1625 "dhcp6_lexer.ll"
+#line 1658 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4173,9 +4245,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 162:
 YY_RULE_SETUP
-#line 1634 "dhcp6_lexer.ll"
+#line 1667 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4185,9 +4257,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 163:
 YY_RULE_SETUP
-#line 1643 "dhcp6_lexer.ll"
+#line 1676 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4197,9 +4269,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 164:
 YY_RULE_SETUP
-#line 1652 "dhcp6_lexer.ll"
+#line 1685 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4209,9 +4281,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 165:
 YY_RULE_SETUP
-#line 1661 "dhcp6_lexer.ll"
+#line 1694 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4221,9 +4293,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 166:
 YY_RULE_SETUP
-#line 1670 "dhcp6_lexer.ll"
+#line 1703 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4233,9 +4305,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 167:
 YY_RULE_SETUP
-#line 1679 "dhcp6_lexer.ll"
+#line 1712 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4245,9 +4317,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 168:
 YY_RULE_SETUP
-#line 1689 "dhcp6_lexer.ll"
+#line 1722 "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.
@@ -4347,65 +4419,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 166:
-/* rule 166 can match eol */
+case 169:
+/* rule 169 can match eol */
 YY_RULE_SETUP
-#line 1788 "dhcp6_lexer.ll"
+#line 1821 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 167:
-/* rule 167 can match eol */
+case 170:
+/* rule 170 can match eol */
 YY_RULE_SETUP
-#line 1793 "dhcp6_lexer.ll"
+#line 1826 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 168:
+case 171:
 YY_RULE_SETUP
-#line 1798 "dhcp6_lexer.ll"
+#line 1831 "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 169:
+case 172:
 YY_RULE_SETUP
-#line 1803 "dhcp6_lexer.ll"
+#line 1836 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 170:
+case 173:
 YY_RULE_SETUP
-#line 1804 "dhcp6_lexer.ll"
+#line 1837 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 171:
+case 174:
 YY_RULE_SETUP
-#line 1805 "dhcp6_lexer.ll"
+#line 1838 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 172:
+case 175:
 YY_RULE_SETUP
-#line 1806 "dhcp6_lexer.ll"
+#line 1839 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 173:
+case 176:
 YY_RULE_SETUP
-#line 1807 "dhcp6_lexer.ll"
+#line 1840 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 174:
+case 177:
 YY_RULE_SETUP
-#line 1808 "dhcp6_lexer.ll"
+#line 1841 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 175:
+case 178:
 YY_RULE_SETUP
-#line 1810 "dhcp6_lexer.ll"
+#line 1843 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4424,9 +4496,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 176:
+case 179:
 YY_RULE_SETUP
-#line 1828 "dhcp6_lexer.ll"
+#line 1861 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4440,43 +4512,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 177:
+case 180:
 YY_RULE_SETUP
-#line 1841 "dhcp6_lexer.ll"
+#line 1874 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 178:
+case 181:
 YY_RULE_SETUP
-#line 1846 "dhcp6_lexer.ll"
+#line 1879 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 179:
+case 182:
 YY_RULE_SETUP
-#line 1850 "dhcp6_lexer.ll"
+#line 1883 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 180:
+case 183:
 YY_RULE_SETUP
-#line 1852 "dhcp6_lexer.ll"
+#line 1885 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 181:
+case 184:
 YY_RULE_SETUP
-#line 1854 "dhcp6_lexer.ll"
+#line 1887 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 182:
+case 185:
 YY_RULE_SETUP
-#line 1856 "dhcp6_lexer.ll"
+#line 1889 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1858 "dhcp6_lexer.ll"
+#line 1891 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4500,12 +4572,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 183:
+case 186:
 YY_RULE_SETUP
-#line 1881 "dhcp6_lexer.ll"
+#line 1914 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4509 "dhcp6_lexer.cc"
+#line 4581 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4824,7 +4896,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 >= 1505 )
+                       if ( yy_current_state >= 1544 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4857,11 +4929,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 >= 1505 )
+               if ( yy_current_state >= 1544 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1504);
+       yy_is_jam = (yy_current_state == 1543);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5610,7 +5682,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1881 "dhcp6_lexer.ll"
+#line 1914 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 4b9143ad979d68e5e69dad66c10ee112a65ffda1..6404bb3d069951c895f9bc9f5b8b34f5f30b557d 100644 (file)
@@ -245,29 +245,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -286,29 +286,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -327,29 +327,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -390,79 +390,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 174: // "constant string"
+            case 177: // "constant string"
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 398 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 405 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< double > (); }
 #line 412 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< bool > (); }
 #line 419 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 195: // value
+      case 198: // value
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 426 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 199: // map_value
+      case 202: // map_value
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 433 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 253: // db_type
+      case 259: // db_type
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 440 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 346: // hr_mode
+      case 352: // hr_mode
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 447 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 482: // duid_type
+      case 488: // duid_type
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 454 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 517: // ncr_protocol_value
+      case 523: // ncr_protocol_value
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 461 "dhcp6_parser.cc" // lalr1.cc:672
         break;
 
-      case 524: // replace_client_name_value
+      case 530: // replace_client_name_value
 
-#line 253 "dhcp6_parser.yy" // lalr1.cc:672
+#line 256 "dhcp6_parser.yy" // lalr1.cc:672
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 468 "dhcp6_parser.cc" // lalr1.cc:672
         break;
@@ -674,29 +674,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -721,139 +721,139 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 262 "dhcp6_parser.yy" // lalr1.cc:907
+#line 265 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 727 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 4:
-#line 263 "dhcp6_parser.yy" // lalr1.cc:907
+#line 266 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.CONFIG; }
 #line 733 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 6:
-#line 264 "dhcp6_parser.yy" // lalr1.cc:907
+#line 267 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.DHCP6; }
 #line 739 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 8:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:907
+#line 268 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 745 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 10:
-#line 266 "dhcp6_parser.yy" // lalr1.cc:907
+#line 269 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 751 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 12:
-#line 267 "dhcp6_parser.yy" // lalr1.cc:907
+#line 270 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.POOLS; }
 #line 757 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 14:
-#line 268 "dhcp6_parser.yy" // lalr1.cc:907
+#line 271 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 763 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 16:
-#line 269 "dhcp6_parser.yy" // lalr1.cc:907
+#line 272 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 769 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 18:
-#line 270 "dhcp6_parser.yy" // lalr1.cc:907
+#line 273 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.DHCP6; }
 #line 775 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 20:
-#line 271 "dhcp6_parser.yy" // lalr1.cc:907
+#line 274 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 781 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 22:
-#line 272 "dhcp6_parser.yy" // lalr1.cc:907
+#line 275 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 787 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 24:
-#line 273 "dhcp6_parser.yy" // lalr1.cc:907
+#line 276 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 793 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 26:
-#line 274 "dhcp6_parser.yy" // lalr1.cc:907
+#line 277 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 799 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 28:
-#line 275 "dhcp6_parser.yy" // lalr1.cc:907
+#line 278 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.LOGGING; }
 #line 805 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 30:
-#line 276 "dhcp6_parser.yy" // lalr1.cc:907
+#line 279 "dhcp6_parser.yy" // lalr1.cc:907
     { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 811 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 32:
-#line 284 "dhcp6_parser.yy" // lalr1.cc:907
+#line 287 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 817 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 33:
-#line 285 "dhcp6_parser.yy" // lalr1.cc:907
+#line 288 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 823 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 34:
-#line 286 "dhcp6_parser.yy" // lalr1.cc:907
+#line 289 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 829 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 35:
-#line 287 "dhcp6_parser.yy" // lalr1.cc:907
+#line 290 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 835 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 36:
-#line 288 "dhcp6_parser.yy" // lalr1.cc:907
+#line 291 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 841 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 37:
-#line 289 "dhcp6_parser.yy" // lalr1.cc:907
+#line 292 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 847 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 38:
-#line 290 "dhcp6_parser.yy" // lalr1.cc:907
+#line 293 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 853 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 39:
-#line 293 "dhcp6_parser.yy" // lalr1.cc:907
+#line 296 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -862,7 +862,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 298 "dhcp6_parser.yy" // lalr1.cc:907
+#line 301 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -873,7 +873,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 303 "dhcp6_parser.yy" // lalr1.cc:907
+#line 306 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -883,13 +883,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 309 "dhcp6_parser.yy" // lalr1.cc:907
+#line 312 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 889 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
   case 45:
-#line 316 "dhcp6_parser.yy" // lalr1.cc:907
+#line 319 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -898,7 +898,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 320 "dhcp6_parser.yy" // lalr1.cc:907
+#line 323 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -908,7 +908,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 327 "dhcp6_parser.yy" // lalr1.cc:907
+#line 330 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -917,7 +917,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 330 "dhcp6_parser.yy" // lalr1.cc:907
+#line 333 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -925,7 +925,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 338 "dhcp6_parser.yy" // lalr1.cc:907
+#line 341 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -934,7 +934,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 342 "dhcp6_parser.yy" // lalr1.cc:907
+#line 345 "dhcp6_parser.yy" // lalr1.cc:907
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -943,7 +943,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 349 "dhcp6_parser.yy" // lalr1.cc:907
+#line 352 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // List parsing about to start
 }
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 351 "dhcp6_parser.yy" // lalr1.cc:907
+#line 354 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -960,7 +960,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 360 "dhcp6_parser.yy" // lalr1.cc:907
+#line 363 "dhcp6_parser.yy" // lalr1.cc:907
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -969,7 +969,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 364 "dhcp6_parser.yy" // lalr1.cc:907
+#line 367 "dhcp6_parser.yy" // lalr1.cc:907
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -978,7 +978,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 375 "dhcp6_parser.yy" // lalr1.cc:907
+#line 378 "dhcp6_parser.yy" // lalr1.cc:907
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -989,7 +989,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60:
-#line 385 "dhcp6_parser.yy" // lalr1.cc:907
+#line 388 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1000,7 +1000,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61:
-#line 390 "dhcp6_parser.yy" // lalr1.cc:907
+#line 393 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1013,7 +1013,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 70:
-#line 413 "dhcp6_parser.yy" // lalr1.cc:907
+#line 416 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71:
-#line 420 "dhcp6_parser.yy" // lalr1.cc:907
+#line 423 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1036,7 +1036,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 72:
-#line 428 "dhcp6_parser.yy" // lalr1.cc:907
+#line 431 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1046,7 +1046,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 73:
-#line 432 "dhcp6_parser.yy" // lalr1.cc:907
+#line 435 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No global parameter is required
     // parsing completed
@@ -1054,16 +1054,16 @@ namespace isc { namespace dhcp {
 #line 1055 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 109:
-#line 478 "dhcp6_parser.yy" // lalr1.cc:907
+  case 112:
+#line 484 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1063 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 110:
-#line 480 "dhcp6_parser.yy" // lalr1.cc:907
+  case 113:
+#line 486 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
@@ -1072,8 +1072,8 @@ namespace isc { namespace dhcp {
 #line 1073 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 111:
-#line 486 "dhcp6_parser.yy" // lalr1.cc:907
+  case 114:
+#line 492 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
@@ -1081,8 +1081,8 @@ namespace isc { namespace dhcp {
 #line 1082 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 112:
-#line 491 "dhcp6_parser.yy" // lalr1.cc:907
+  case 115:
+#line 497 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1090,8 +1090,8 @@ namespace isc { namespace dhcp {
 #line 1091 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 113:
-#line 496 "dhcp6_parser.yy" // lalr1.cc:907
+  case 116:
+#line 502 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -1099,8 +1099,8 @@ namespace isc { namespace dhcp {
 #line 1100 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 114:
-#line 501 "dhcp6_parser.yy" // lalr1.cc:907
+  case 117:
+#line 507 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -1108,491 +1108,518 @@ namespace isc { namespace dhcp {
 #line 1109 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 115:
-#line 506 "dhcp6_parser.yy" // lalr1.cc:907
+  case 118:
+#line 512 "dhcp6_parser.yy" // lalr1.cc:907
+    {
+    ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("calculate-tee-times", ctt);
+}
+#line 1118 "dhcp6_parser.cc" // lalr1.cc:907
+    break;
+
+  case 119:
+#line 517 "dhcp6_parser.yy" // lalr1.cc:907
+    {
+    ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("t1-percent", t1);
+}
+#line 1127 "dhcp6_parser.cc" // lalr1.cc:907
+    break;
+
+  case 120:
+#line 522 "dhcp6_parser.yy" // lalr1.cc:907
+    {
+    ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("t2-percent", t2);
+}
+#line 1136 "dhcp6_parser.cc" // lalr1.cc:907
+    break;
+
+  case 121:
+#line 527 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1118 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1145 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 116:
-#line 511 "dhcp6_parser.yy" // lalr1.cc:907
+  case 122:
+#line 532 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1126 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1153 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 117:
-#line 513 "dhcp6_parser.yy" // lalr1.cc:907
+  case 123:
+#line 534 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1136 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1163 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 118:
-#line 519 "dhcp6_parser.yy" // lalr1.cc:907
+  case 124:
+#line 540 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1147 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1174 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 119:
-#line 524 "dhcp6_parser.yy" // lalr1.cc:907
+  case 125:
+#line 545 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1157 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1184 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 120:
-#line 530 "dhcp6_parser.yy" // lalr1.cc:907
+  case 126:
+#line 551 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1167 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1194 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 121:
-#line 534 "dhcp6_parser.yy" // lalr1.cc:907
+  case 127:
+#line 555 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1176 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1203 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 129:
-#line 550 "dhcp6_parser.yy" // lalr1.cc:907
+  case 135:
+#line 571 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1187 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1214 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 130:
-#line 555 "dhcp6_parser.yy" // lalr1.cc:907
+  case 136:
+#line 576 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1196 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1223 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 131:
-#line 560 "dhcp6_parser.yy" // lalr1.cc:907
+  case 137:
+#line 581 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1205 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1232 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 132:
-#line 566 "dhcp6_parser.yy" // lalr1.cc:907
+  case 138:
+#line 587 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1216 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1243 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 133:
-#line 571 "dhcp6_parser.yy" // lalr1.cc:907
+  case 139:
+#line 592 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1227 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1254 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 134:
-#line 578 "dhcp6_parser.yy" // lalr1.cc:907
+  case 140:
+#line 599 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1238 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1265 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 135:
-#line 583 "dhcp6_parser.yy" // lalr1.cc:907
+  case 141:
+#line 604 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1249 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1276 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 136:
-#line 590 "dhcp6_parser.yy" // lalr1.cc:907
+  case 142:
+#line 611 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1260 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1287 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 137:
-#line 595 "dhcp6_parser.yy" // lalr1.cc:907
+  case 143:
+#line 616 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1269 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1296 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 142:
-#line 608 "dhcp6_parser.yy" // lalr1.cc:907
+  case 148:
+#line 629 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1279 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1306 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 143:
-#line 612 "dhcp6_parser.yy" // lalr1.cc:907
+  case 149:
+#line 633 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1289 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1316 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 166:
-#line 644 "dhcp6_parser.yy" // lalr1.cc:907
+  case 172:
+#line 665 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1297 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1324 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 167:
-#line 646 "dhcp6_parser.yy" // lalr1.cc:907
+  case 173:
+#line 667 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1306 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1333 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 168:
-#line 651 "dhcp6_parser.yy" // lalr1.cc:907
+  case 174:
+#line 672 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1312 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1339 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 169:
-#line 652 "dhcp6_parser.yy" // lalr1.cc:907
+  case 175:
+#line 673 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1318 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1345 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 170:
-#line 653 "dhcp6_parser.yy" // lalr1.cc:907
+  case 176:
+#line 674 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1324 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1351 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 171:
-#line 654 "dhcp6_parser.yy" // lalr1.cc:907
+  case 177:
+#line 675 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1330 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1357 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 172:
-#line 657 "dhcp6_parser.yy" // lalr1.cc:907
+  case 178:
+#line 678 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1338 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1365 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 173:
-#line 659 "dhcp6_parser.yy" // lalr1.cc:907
+  case 179:
+#line 680 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1348 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1375 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 174:
-#line 665 "dhcp6_parser.yy" // lalr1.cc:907
+  case 180:
+#line 686 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1356 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1383 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 175:
-#line 667 "dhcp6_parser.yy" // lalr1.cc:907
+  case 181:
+#line 688 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1366 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1393 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 176:
-#line 673 "dhcp6_parser.yy" // lalr1.cc:907
+  case 182:
+#line 694 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1374 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1401 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 177:
-#line 675 "dhcp6_parser.yy" // lalr1.cc:907
+  case 183:
+#line 696 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1384 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1411 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 178:
-#line 681 "dhcp6_parser.yy" // lalr1.cc:907
+  case 184:
+#line 702 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1393 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1420 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 179:
-#line 686 "dhcp6_parser.yy" // lalr1.cc:907
+  case 185:
+#line 707 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1401 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1428 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 180:
-#line 688 "dhcp6_parser.yy" // lalr1.cc:907
+  case 186:
+#line 709 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1411 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1438 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 181:
-#line 694 "dhcp6_parser.yy" // lalr1.cc:907
+  case 187:
+#line 715 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1420 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1447 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 182:
-#line 699 "dhcp6_parser.yy" // lalr1.cc:907
+  case 188:
+#line 720 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1429 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1456 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 183:
-#line 704 "dhcp6_parser.yy" // lalr1.cc:907
+  case 189:
+#line 725 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1438 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1465 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 184:
-#line 709 "dhcp6_parser.yy" // lalr1.cc:907
+  case 190:
+#line 730 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1447 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1474 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 185:
-#line 714 "dhcp6_parser.yy" // lalr1.cc:907
+  case 191:
+#line 735 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1456 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1483 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 186:
-#line 719 "dhcp6_parser.yy" // lalr1.cc:907
+  case 192:
+#line 740 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1465 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1492 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 187:
-#line 724 "dhcp6_parser.yy" // lalr1.cc:907
+  case 193:
+#line 745 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1474 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1501 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 188:
-#line 729 "dhcp6_parser.yy" // lalr1.cc:907
+  case 194:
+#line 750 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1483 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1510 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 189:
-#line 734 "dhcp6_parser.yy" // lalr1.cc:907
+  case 195:
+#line 755 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1491 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1518 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 190:
-#line 736 "dhcp6_parser.yy" // lalr1.cc:907
+  case 196:
+#line 757 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1501 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1528 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 191:
-#line 742 "dhcp6_parser.yy" // lalr1.cc:907
+  case 197:
+#line 763 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1510 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1537 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 192:
-#line 747 "dhcp6_parser.yy" // lalr1.cc:907
+  case 198:
+#line 768 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1518 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1545 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 193:
-#line 749 "dhcp6_parser.yy" // lalr1.cc:907
+  case 199:
+#line 770 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1528 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1555 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 194:
-#line 755 "dhcp6_parser.yy" // lalr1.cc:907
+  case 200:
+#line 776 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1536 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1563 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 195:
-#line 757 "dhcp6_parser.yy" // lalr1.cc:907
+  case 201:
+#line 778 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1546 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1573 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 196:
-#line 763 "dhcp6_parser.yy" // lalr1.cc:907
+  case 202:
+#line 784 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1554 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1581 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 197:
-#line 765 "dhcp6_parser.yy" // lalr1.cc:907
+  case 203:
+#line 786 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("serial-consistency", c);
     ctx.leave();
 }
-#line 1564 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1591 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 198:
-#line 771 "dhcp6_parser.yy" // lalr1.cc:907
+  case 204:
+#line 792 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1575 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1602 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 199:
-#line 776 "dhcp6_parser.yy" // lalr1.cc:907
+  case 205:
+#line 797 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1584 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1611 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 203:
-#line 786 "dhcp6_parser.yy" // lalr1.cc:907
+  case 209:
+#line 807 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1592 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1619 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 204:
-#line 788 "dhcp6_parser.yy" // lalr1.cc:907
+  case 210:
+#line 809 "dhcp6_parser.yy" // lalr1.cc:907
     {
 
     if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
@@ -1608,307 +1635,307 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1612 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1639 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 205:
-#line 804 "dhcp6_parser.yy" // lalr1.cc:907
+  case 211:
+#line 825 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1623 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1650 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 206:
-#line 809 "dhcp6_parser.yy" // lalr1.cc:907
+  case 212:
+#line 830 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1632 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1659 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 211:
-#line 822 "dhcp6_parser.yy" // lalr1.cc:907
+  case 217:
+#line 843 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1641 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1668 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 212:
-#line 827 "dhcp6_parser.yy" // lalr1.cc:907
+  case 218:
+#line 848 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1650 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1677 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 213:
-#line 832 "dhcp6_parser.yy" // lalr1.cc:907
+  case 219:
+#line 853 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1661 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1688 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 214:
-#line 837 "dhcp6_parser.yy" // lalr1.cc:907
+  case 220:
+#line 858 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1670 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1697 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 220:
-#line 851 "dhcp6_parser.yy" // lalr1.cc:907
+  case 226:
+#line 872 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1679 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1706 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 221:
-#line 856 "dhcp6_parser.yy" // lalr1.cc:907
+  case 227:
+#line 877 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1688 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1715 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 222:
-#line 863 "dhcp6_parser.yy" // lalr1.cc:907
+  case 228:
+#line 884 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1699 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1726 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 223:
-#line 868 "dhcp6_parser.yy" // lalr1.cc:907
+  case 229:
+#line 889 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1708 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1735 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 224:
-#line 873 "dhcp6_parser.yy" // lalr1.cc:907
+  case 230:
+#line 894 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1719 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1746 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 225:
-#line 878 "dhcp6_parser.yy" // lalr1.cc:907
+  case 231:
+#line 899 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1728 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1755 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 230:
-#line 891 "dhcp6_parser.yy" // lalr1.cc:907
+  case 236:
+#line 912 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1738 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1765 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 231:
-#line 895 "dhcp6_parser.yy" // lalr1.cc:907
+  case 237:
+#line 916 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1748 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1775 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 232:
-#line 901 "dhcp6_parser.yy" // lalr1.cc:907
+  case 238:
+#line 922 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1758 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1785 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 233:
-#line 905 "dhcp6_parser.yy" // lalr1.cc:907
+  case 239:
+#line 926 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1768 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1795 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 239:
-#line 920 "dhcp6_parser.yy" // lalr1.cc:907
+  case 245:
+#line 941 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1776 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1803 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 240:
-#line 922 "dhcp6_parser.yy" // lalr1.cc:907
+  case 246:
+#line 943 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1786 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1813 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 241:
-#line 928 "dhcp6_parser.yy" // lalr1.cc:907
+  case 247:
+#line 949 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1794 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1821 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 242:
-#line 930 "dhcp6_parser.yy" // lalr1.cc:907
+  case 248:
+#line 951 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1803 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1830 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 243:
-#line 936 "dhcp6_parser.yy" // lalr1.cc:907
+  case 249:
+#line 957 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1814 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1841 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 244:
-#line 941 "dhcp6_parser.yy" // lalr1.cc:907
+  case 250:
+#line 962 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1824 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1851 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 253:
-#line 959 "dhcp6_parser.yy" // lalr1.cc:907
+  case 259:
+#line 980 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1833 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1860 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 254:
-#line 964 "dhcp6_parser.yy" // lalr1.cc:907
+  case 260:
+#line 985 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 1842 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1869 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 255:
-#line 969 "dhcp6_parser.yy" // lalr1.cc:907
+  case 261:
+#line 990 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1851 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1878 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 256:
-#line 974 "dhcp6_parser.yy" // lalr1.cc:907
+  case 262:
+#line 995 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1860 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1887 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 257:
-#line 979 "dhcp6_parser.yy" // lalr1.cc:907
+  case 263:
+#line 1000 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1869 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1896 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 258:
-#line 984 "dhcp6_parser.yy" // lalr1.cc:907
+  case 264:
+#line 1005 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1878 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1905 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 259:
-#line 992 "dhcp6_parser.yy" // lalr1.cc:907
+  case 265:
+#line 1013 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1889 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1916 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 260:
-#line 997 "dhcp6_parser.yy" // lalr1.cc:907
+  case 266:
+#line 1018 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1898 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1925 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 265:
-#line 1017 "dhcp6_parser.yy" // lalr1.cc:907
+  case 271:
+#line 1038 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1908 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1935 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 266:
-#line 1021 "dhcp6_parser.yy" // lalr1.cc:907
+  case 272:
+#line 1042 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1930,267 +1957,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1934 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1961 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 267:
-#line 1043 "dhcp6_parser.yy" // lalr1.cc:907
+  case 273:
+#line 1064 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1944 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1971 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 268:
-#line 1047 "dhcp6_parser.yy" // lalr1.cc:907
+  case 274:
+#line 1068 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1954 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1981 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 291:
-#line 1081 "dhcp6_parser.yy" // lalr1.cc:907
+  case 300:
+#line 1105 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1962 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1989 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 292:
-#line 1083 "dhcp6_parser.yy" // lalr1.cc:907
+  case 301:
+#line 1107 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1972 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1999 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 293:
-#line 1089 "dhcp6_parser.yy" // lalr1.cc:907
+  case 302:
+#line 1113 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1980 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2007 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 294:
-#line 1091 "dhcp6_parser.yy" // lalr1.cc:907
+  case 303:
+#line 1115 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1990 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2017 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 295:
-#line 1097 "dhcp6_parser.yy" // lalr1.cc:907
+  case 304:
+#line 1121 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1998 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2025 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 296:
-#line 1099 "dhcp6_parser.yy" // lalr1.cc:907
+  case 305:
+#line 1123 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 2008 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2035 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 297:
-#line 1105 "dhcp6_parser.yy" // lalr1.cc:907
+  case 306:
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2016 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2043 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 298:
-#line 1107 "dhcp6_parser.yy" // lalr1.cc:907
+  case 307:
+#line 1131 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2026 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2053 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 299:
-#line 1113 "dhcp6_parser.yy" // lalr1.cc:907
+  case 308:
+#line 1137 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2037 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2064 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 300:
-#line 1118 "dhcp6_parser.yy" // lalr1.cc:907
+  case 309:
+#line 1142 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2046 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2073 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 301:
-#line 1123 "dhcp6_parser.yy" // lalr1.cc:907
+  case 310:
+#line 1147 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2054 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2081 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 302:
-#line 1125 "dhcp6_parser.yy" // lalr1.cc:907
+  case 311:
+#line 1149 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2063 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2090 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 303:
-#line 1130 "dhcp6_parser.yy" // lalr1.cc:907
+  case 312:
+#line 1154 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2069 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2096 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 304:
-#line 1131 "dhcp6_parser.yy" // lalr1.cc:907
+  case 313:
+#line 1155 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2075 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2102 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 305:
-#line 1132 "dhcp6_parser.yy" // lalr1.cc:907
+  case 314:
+#line 1156 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2081 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2108 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 306:
-#line 1133 "dhcp6_parser.yy" // lalr1.cc:907
+  case 315:
+#line 1157 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2087 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2114 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 307:
-#line 1136 "dhcp6_parser.yy" // lalr1.cc:907
+  case 316:
+#line 1160 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2096 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2123 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 308:
-#line 1141 "dhcp6_parser.yy" // lalr1.cc:907
+  case 317:
+#line 1165 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 2105 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2132 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 309:
-#line 1149 "dhcp6_parser.yy" // lalr1.cc:907
+  case 318:
+#line 1173 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2116 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2143 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 310:
-#line 1154 "dhcp6_parser.yy" // lalr1.cc:907
+  case 319:
+#line 1178 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2125 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2152 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 315:
-#line 1169 "dhcp6_parser.yy" // lalr1.cc:907
+  case 324:
+#line 1193 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2135 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2162 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 316:
-#line 1173 "dhcp6_parser.yy" // lalr1.cc:907
+  case 325:
+#line 1197 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
 }
-#line 2143 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2170 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 336:
-#line 1204 "dhcp6_parser.yy" // lalr1.cc:907
+  case 348:
+#line 1231 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2154 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2181 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 337:
-#line 1209 "dhcp6_parser.yy" // lalr1.cc:907
+  case 349:
+#line 1236 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2163 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2190 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 338:
-#line 1217 "dhcp6_parser.yy" // lalr1.cc:907
+  case 350:
+#line 1244 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2172 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2199 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 339:
-#line 1220 "dhcp6_parser.yy" // lalr1.cc:907
+  case 351:
+#line 1247 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // parsing completed
 }
-#line 2180 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2207 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 344:
-#line 1236 "dhcp6_parser.yy" // lalr1.cc:907
+  case 356:
+#line 1263 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2190 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2217 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 345:
-#line 1240 "dhcp6_parser.yy" // lalr1.cc:907
+  case 357:
+#line 1267 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2198,21 +2225,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2202 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2229 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 346:
-#line 1251 "dhcp6_parser.yy" // lalr1.cc:907
+  case 358:
+#line 1278 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2212 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2239 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 347:
-#line 1255 "dhcp6_parser.yy" // lalr1.cc:907
+  case 359:
+#line 1282 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2220,280 +2247,280 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2224 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2251 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 363:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:907
+  case 375:
+#line 1314 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2233 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2260 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 365:
-#line 1294 "dhcp6_parser.yy" // lalr1.cc:907
+  case 377:
+#line 1321 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2241 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2268 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 366:
-#line 1296 "dhcp6_parser.yy" // lalr1.cc:907
+  case 378:
+#line 1323 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2251 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2278 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 367:
-#line 1302 "dhcp6_parser.yy" // lalr1.cc:907
+  case 379:
+#line 1329 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2259 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2286 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 368:
-#line 1304 "dhcp6_parser.yy" // lalr1.cc:907
+  case 380:
+#line 1331 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2269 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2296 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 369:
-#line 1310 "dhcp6_parser.yy" // lalr1.cc:907
+  case 381:
+#line 1337 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2277 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2304 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 370:
-#line 1312 "dhcp6_parser.yy" // lalr1.cc:907
+  case 382:
+#line 1339 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2287 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2314 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 372:
-#line 1320 "dhcp6_parser.yy" // lalr1.cc:907
+  case 384:
+#line 1347 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2295 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2322 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 373:
-#line 1322 "dhcp6_parser.yy" // lalr1.cc:907
+  case 385:
+#line 1349 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2305 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2332 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 374:
-#line 1328 "dhcp6_parser.yy" // lalr1.cc:907
+  case 386:
+#line 1355 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2314 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2341 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 375:
-#line 1337 "dhcp6_parser.yy" // lalr1.cc:907
+  case 387:
+#line 1364 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2325 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2352 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 376:
-#line 1342 "dhcp6_parser.yy" // lalr1.cc:907
+  case 388:
+#line 1369 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2334 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2361 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 381:
-#line 1361 "dhcp6_parser.yy" // lalr1.cc:907
+  case 393:
+#line 1388 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2344 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2371 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 382:
-#line 1365 "dhcp6_parser.yy" // lalr1.cc:907
+  case 394:
+#line 1392 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2353 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2380 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 383:
-#line 1373 "dhcp6_parser.yy" // lalr1.cc:907
+  case 395:
+#line 1400 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2363 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2390 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 384:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:907
+  case 396:
+#line 1404 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2372 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2399 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 399:
-#line 1410 "dhcp6_parser.yy" // lalr1.cc:907
+  case 411:
+#line 1437 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2380 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2407 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 400:
-#line 1412 "dhcp6_parser.yy" // lalr1.cc:907
+  case 412:
+#line 1439 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2390 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2417 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 403:
-#line 1422 "dhcp6_parser.yy" // lalr1.cc:907
+  case 415:
+#line 1449 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2399 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2426 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 404:
-#line 1427 "dhcp6_parser.yy" // lalr1.cc:907
+  case 416:
+#line 1454 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2408 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2435 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 405:
-#line 1435 "dhcp6_parser.yy" // lalr1.cc:907
+  case 417:
+#line 1462 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2419 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2446 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 406:
-#line 1440 "dhcp6_parser.yy" // lalr1.cc:907
+  case 418:
+#line 1467 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2428 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2455 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 411:
-#line 1455 "dhcp6_parser.yy" // lalr1.cc:907
+  case 423:
+#line 1482 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2438 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2465 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 412:
-#line 1459 "dhcp6_parser.yy" // lalr1.cc:907
+  case 424:
+#line 1486 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2448 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2475 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 413:
-#line 1465 "dhcp6_parser.yy" // lalr1.cc:907
+  case 425:
+#line 1492 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2458 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2485 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 414:
-#line 1469 "dhcp6_parser.yy" // lalr1.cc:907
+  case 426:
+#line 1496 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2467 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2494 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 424:
-#line 1487 "dhcp6_parser.yy" // lalr1.cc:907
+  case 436:
+#line 1514 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2475 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2502 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 425:
-#line 1489 "dhcp6_parser.yy" // lalr1.cc:907
+  case 437:
+#line 1516 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2485 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2512 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 426:
-#line 1495 "dhcp6_parser.yy" // lalr1.cc:907
+  case 438:
+#line 1522 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2493 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2520 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 427:
-#line 1497 "dhcp6_parser.yy" // lalr1.cc:907
+  case 439:
+#line 1524 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
@@ -2516,19 +2543,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2520 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2547 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 428:
-#line 1520 "dhcp6_parser.yy" // lalr1.cc:907
+  case 440:
+#line 1547 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2528 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2555 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 429:
-#line 1522 "dhcp6_parser.yy" // lalr1.cc:907
+  case 441:
+#line 1549 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2553,41 +2580,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2557 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2584 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 430:
-#line 1550 "dhcp6_parser.yy" // lalr1.cc:907
+  case 442:
+#line 1577 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2568 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2595 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 431:
-#line 1555 "dhcp6_parser.yy" // lalr1.cc:907
+  case 443:
+#line 1582 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2577 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2604 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 436:
-#line 1570 "dhcp6_parser.yy" // lalr1.cc:907
+  case 448:
+#line 1597 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2587 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2614 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 437:
-#line 1574 "dhcp6_parser.yy" // lalr1.cc:907
+  case 449:
+#line 1601 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2595,21 +2622,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2599 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2626 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 438:
-#line 1582 "dhcp6_parser.yy" // lalr1.cc:907
+  case 450:
+#line 1609 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2609 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2636 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 439:
-#line 1586 "dhcp6_parser.yy" // lalr1.cc:907
+  case 451:
+#line 1613 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2617,544 +2644,544 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2621 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2648 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 453:
-#line 1611 "dhcp6_parser.yy" // lalr1.cc:907
+  case 465:
+#line 1638 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2629 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2656 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 454:
-#line 1613 "dhcp6_parser.yy" // lalr1.cc:907
+  case 466:
+#line 1640 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2639 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2666 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 455:
-#line 1619 "dhcp6_parser.yy" // lalr1.cc:907
+  case 467:
+#line 1646 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2648 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2675 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 456:
-#line 1624 "dhcp6_parser.yy" // lalr1.cc:907
+  case 468:
+#line 1651 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2656 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2683 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 457:
-#line 1626 "dhcp6_parser.yy" // lalr1.cc:907
+  case 469:
+#line 1653 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2666 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2693 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 458:
-#line 1632 "dhcp6_parser.yy" // lalr1.cc:907
+  case 470:
+#line 1659 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2675 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2702 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 459:
-#line 1637 "dhcp6_parser.yy" // lalr1.cc:907
+  case 471:
+#line 1664 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2684 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2711 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 460:
-#line 1645 "dhcp6_parser.yy" // lalr1.cc:907
+  case 472:
+#line 1672 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2695 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2722 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 461:
-#line 1650 "dhcp6_parser.yy" // lalr1.cc:907
+  case 473:
+#line 1677 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2704 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2731 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 466:
-#line 1663 "dhcp6_parser.yy" // lalr1.cc:907
+  case 478:
+#line 1690 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2714 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2741 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 467:
-#line 1667 "dhcp6_parser.yy" // lalr1.cc:907
+  case 479:
+#line 1694 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2723 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2750 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 468:
-#line 1672 "dhcp6_parser.yy" // lalr1.cc:907
+  case 480:
+#line 1699 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2733 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2760 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 469:
-#line 1676 "dhcp6_parser.yy" // lalr1.cc:907
+  case 481:
+#line 1703 "dhcp6_parser.yy" // lalr1.cc:907
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2742 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2769 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 485:
-#line 1703 "dhcp6_parser.yy" // lalr1.cc:907
+  case 497:
+#line 1730 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2753 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2780 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 486:
-#line 1708 "dhcp6_parser.yy" // lalr1.cc:907
+  case 498:
+#line 1735 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2762 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2789 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 487:
-#line 1713 "dhcp6_parser.yy" // lalr1.cc:907
+  case 499:
+#line 1740 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2773 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2800 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 488:
-#line 1718 "dhcp6_parser.yy" // lalr1.cc:907
+  case 500:
+#line 1745 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2782 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2809 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 489:
-#line 1723 "dhcp6_parser.yy" // lalr1.cc:907
+  case 501:
+#line 1750 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2790 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2817 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 490:
-#line 1725 "dhcp6_parser.yy" // lalr1.cc:907
+  case 502:
+#line 1752 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2800 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2827 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 491:
-#line 1731 "dhcp6_parser.yy" // lalr1.cc:907
+  case 503:
+#line 1758 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2808 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2835 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 492:
-#line 1733 "dhcp6_parser.yy" // lalr1.cc:907
+  case 504:
+#line 1760 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2818 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2845 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 493:
-#line 1739 "dhcp6_parser.yy" // lalr1.cc:907
+  case 505:
+#line 1766 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2826 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2853 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 494:
-#line 1741 "dhcp6_parser.yy" // lalr1.cc:907
+  case 506:
+#line 1768 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2836 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2863 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 495:
-#line 1747 "dhcp6_parser.yy" // lalr1.cc:907
+  case 507:
+#line 1774 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2844 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2871 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 496:
-#line 1749 "dhcp6_parser.yy" // lalr1.cc:907
+  case 508:
+#line 1776 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2854 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2881 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 497:
-#line 1755 "dhcp6_parser.yy" // lalr1.cc:907
+  case 509:
+#line 1782 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2865 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2892 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 498:
-#line 1760 "dhcp6_parser.yy" // lalr1.cc:907
+  case 510:
+#line 1787 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2874 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2901 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 499:
-#line 1768 "dhcp6_parser.yy" // lalr1.cc:907
+  case 511:
+#line 1795 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2885 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2912 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 500:
-#line 1773 "dhcp6_parser.yy" // lalr1.cc:907
+  case 512:
+#line 1800 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2894 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2921 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 503:
-#line 1782 "dhcp6_parser.yy" // lalr1.cc:907
+  case 515:
+#line 1809 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2902 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2929 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 504:
-#line 1784 "dhcp6_parser.yy" // lalr1.cc:907
+  case 516:
+#line 1811 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2912 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2939 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 505:
-#line 1793 "dhcp6_parser.yy" // lalr1.cc:907
+  case 517:
+#line 1820 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2923 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2950 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 506:
-#line 1798 "dhcp6_parser.yy" // lalr1.cc:907
+  case 518:
+#line 1825 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2932 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2959 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 509:
-#line 1807 "dhcp6_parser.yy" // lalr1.cc:907
+  case 521:
+#line 1834 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2942 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2969 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 510:
-#line 1811 "dhcp6_parser.yy" // lalr1.cc:907
+  case 522:
+#line 1838 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2952 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2979 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 523:
-#line 1836 "dhcp6_parser.yy" // lalr1.cc:907
+  case 535:
+#line 1863 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2960 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2987 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 524:
-#line 1838 "dhcp6_parser.yy" // lalr1.cc:907
+  case 536:
+#line 1865 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2970 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2997 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 525:
-#line 1844 "dhcp6_parser.yy" // lalr1.cc:907
+  case 537:
+#line 1871 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 2979 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3006 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 526:
-#line 1852 "dhcp6_parser.yy" // lalr1.cc:907
+  case 538:
+#line 1879 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 2990 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3017 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 527:
-#line 1857 "dhcp6_parser.yy" // lalr1.cc:907
+  case 539:
+#line 1884 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3001 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3028 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 539:
-#line 1879 "dhcp6_parser.yy" // lalr1.cc:907
+  case 551:
+#line 1906 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3009 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3036 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 540:
-#line 1881 "dhcp6_parser.yy" // lalr1.cc:907
+  case 552:
+#line 1908 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3018 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3045 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 541:
-#line 1886 "dhcp6_parser.yy" // lalr1.cc:907
+  case 553:
+#line 1913 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3024 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3051 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 542:
-#line 1887 "dhcp6_parser.yy" // lalr1.cc:907
+  case 554:
+#line 1914 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3030 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3057 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 543:
-#line 1888 "dhcp6_parser.yy" // lalr1.cc:907
+  case 555:
+#line 1915 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3036 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3063 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 544:
-#line 1891 "dhcp6_parser.yy" // lalr1.cc:907
+  case 556:
+#line 1918 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 3045 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3072 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 545:
-#line 1896 "dhcp6_parser.yy" // lalr1.cc:907
+  case 557:
+#line 1923 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3053 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3080 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 546:
-#line 1898 "dhcp6_parser.yy" // lalr1.cc:907
+  case 558:
+#line 1925 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3063 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3090 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 547:
-#line 1904 "dhcp6_parser.yy" // lalr1.cc:907
+  case 559:
+#line 1931 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 3072 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3099 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 548:
-#line 1909 "dhcp6_parser.yy" // lalr1.cc:907
+  case 560:
+#line 1936 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 3081 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3108 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 549:
-#line 1916 "dhcp6_parser.yy" // lalr1.cc:907
+  case 561:
+#line 1943 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3090 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3117 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 550:
-#line 1923 "dhcp6_parser.yy" // lalr1.cc:907
+  case 562:
+#line 1950 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3101 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3128 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 551:
-#line 1928 "dhcp6_parser.yy" // lalr1.cc:907
+  case 563:
+#line 1955 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3110 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3137 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 559:
-#line 1944 "dhcp6_parser.yy" // lalr1.cc:907
+  case 571:
+#line 1971 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3118 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3145 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 560:
-#line 1946 "dhcp6_parser.yy" // lalr1.cc:907
+  case 572:
+#line 1973 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3128 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3155 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 561:
-#line 1952 "dhcp6_parser.yy" // lalr1.cc:907
+  case 573:
+#line 1979 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3136 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3163 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 562:
-#line 1954 "dhcp6_parser.yy" // lalr1.cc:907
+  case 574:
+#line 1981 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3146 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3173 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 563:
-#line 1962 "dhcp6_parser.yy" // lalr1.cc:907
+  case 575:
+#line 1989 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3154 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3181 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 564:
-#line 1964 "dhcp6_parser.yy" // lalr1.cc:907
+  case 576:
+#line 1991 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
     ctx.stack_.back()->set("dhcp-queue-control", qc);
@@ -3190,626 +3217,626 @@ namespace isc { namespace dhcp {
 
     ctx.leave();
 }
-#line 3194 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3221 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 565:
-#line 2002 "dhcp6_parser.yy" // lalr1.cc:907
+  case 577:
+#line 2029 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3205 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3232 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 566:
-#line 2007 "dhcp6_parser.yy" // lalr1.cc:907
+  case 578:
+#line 2034 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3216 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3243 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 567:
-#line 2014 "dhcp6_parser.yy" // lalr1.cc:907
+  case 579:
+#line 2041 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3226 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3253 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 568:
-#line 2018 "dhcp6_parser.yy" // lalr1.cc:907
+  case 580:
+#line 2045 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3236 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3263 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 589:
-#line 2048 "dhcp6_parser.yy" // lalr1.cc:907
+  case 601:
+#line 2075 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3245 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3272 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 590:
-#line 2053 "dhcp6_parser.yy" // lalr1.cc:907
+  case 602:
+#line 2080 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3253 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3280 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 591:
-#line 2055 "dhcp6_parser.yy" // lalr1.cc:907
+  case 603:
+#line 2082 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3263 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3290 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 592:
-#line 2061 "dhcp6_parser.yy" // lalr1.cc:907
+  case 604:
+#line 2088 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3271 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3298 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 593:
-#line 2063 "dhcp6_parser.yy" // lalr1.cc:907
+  case 605:
+#line 2090 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3281 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3308 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 594:
-#line 2069 "dhcp6_parser.yy" // lalr1.cc:907
+  case 606:
+#line 2096 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3290 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3317 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 595:
-#line 2074 "dhcp6_parser.yy" // lalr1.cc:907
+  case 607:
+#line 2101 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3298 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3325 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 596:
-#line 2076 "dhcp6_parser.yy" // lalr1.cc:907
+  case 608:
+#line 2103 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3308 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3335 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 597:
-#line 2082 "dhcp6_parser.yy" // lalr1.cc:907
+  case 609:
+#line 2109 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3317 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3344 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 598:
-#line 2087 "dhcp6_parser.yy" // lalr1.cc:907
+  case 610:
+#line 2114 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3326 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3353 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 599:
-#line 2092 "dhcp6_parser.yy" // lalr1.cc:907
+  case 611:
+#line 2119 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3334 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3361 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 600:
-#line 2094 "dhcp6_parser.yy" // lalr1.cc:907
+  case 612:
+#line 2121 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3343 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3370 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 601:
-#line 2100 "dhcp6_parser.yy" // lalr1.cc:907
+  case 613:
+#line 2127 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3349 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3376 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 602:
-#line 2101 "dhcp6_parser.yy" // lalr1.cc:907
+  case 614:
+#line 2128 "dhcp6_parser.yy" // lalr1.cc:907
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3355 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3382 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 603:
-#line 2104 "dhcp6_parser.yy" // lalr1.cc:907
+  case 615:
+#line 2131 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3363 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3390 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 604:
-#line 2106 "dhcp6_parser.yy" // lalr1.cc:907
+  case 616:
+#line 2133 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3373 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3400 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 605:
-#line 2112 "dhcp6_parser.yy" // lalr1.cc:907
+  case 617:
+#line 2139 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3382 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3409 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 606:
-#line 2117 "dhcp6_parser.yy" // lalr1.cc:907
+  case 618:
+#line 2144 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3391 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3418 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 607:
-#line 2122 "dhcp6_parser.yy" // lalr1.cc:907
+  case 619:
+#line 2149 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3399 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3426 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 608:
-#line 2124 "dhcp6_parser.yy" // lalr1.cc:907
+  case 620:
+#line 2151 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3408 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3435 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 609:
-#line 2130 "dhcp6_parser.yy" // lalr1.cc:907
+  case 621:
+#line 2157 "dhcp6_parser.yy" // lalr1.cc:907
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3416 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3443 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 610:
-#line 2133 "dhcp6_parser.yy" // lalr1.cc:907
+  case 622:
+#line 2160 "dhcp6_parser.yy" // lalr1.cc:907
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3424 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3451 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 611:
-#line 2136 "dhcp6_parser.yy" // lalr1.cc:907
+  case 623:
+#line 2163 "dhcp6_parser.yy" // lalr1.cc:907
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3432 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3459 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 612:
-#line 2139 "dhcp6_parser.yy" // lalr1.cc:907
+  case 624:
+#line 2166 "dhcp6_parser.yy" // lalr1.cc:907
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3440 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3467 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 613:
-#line 2142 "dhcp6_parser.yy" // lalr1.cc:907
+  case 625:
+#line 2169 "dhcp6_parser.yy" // lalr1.cc:907
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3449 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3476 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 614:
-#line 2148 "dhcp6_parser.yy" // lalr1.cc:907
+  case 626:
+#line 2175 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3457 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3484 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 615:
-#line 2150 "dhcp6_parser.yy" // lalr1.cc:907
+  case 627:
+#line 2177 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3467 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3494 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 616:
-#line 2156 "dhcp6_parser.yy" // lalr1.cc:907
+  case 628:
+#line 2183 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3475 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3502 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 617:
-#line 2158 "dhcp6_parser.yy" // lalr1.cc:907
+  case 629:
+#line 2185 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3485 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3512 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 618:
-#line 2164 "dhcp6_parser.yy" // lalr1.cc:907
+  case 630:
+#line 2191 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3493 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3520 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 619:
-#line 2166 "dhcp6_parser.yy" // lalr1.cc:907
+  case 631:
+#line 2193 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3503 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3530 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 620:
-#line 2174 "dhcp6_parser.yy" // lalr1.cc:907
+  case 632:
+#line 2201 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3511 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3538 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 621:
-#line 2176 "dhcp6_parser.yy" // lalr1.cc:907
+  case 633:
+#line 2203 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3520 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3547 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 622:
-#line 2181 "dhcp6_parser.yy" // lalr1.cc:907
+  case 634:
+#line 2208 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3528 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3555 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 623:
-#line 2183 "dhcp6_parser.yy" // lalr1.cc:907
+  case 635:
+#line 2210 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3537 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3564 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 624:
-#line 2188 "dhcp6_parser.yy" // lalr1.cc:907
+  case 636:
+#line 2215 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3545 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3572 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 625:
-#line 2190 "dhcp6_parser.yy" // lalr1.cc:907
+  case 637:
+#line 2217 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3554 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3581 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 626:
-#line 2197 "dhcp6_parser.yy" // lalr1.cc:907
+  case 638:
+#line 2224 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3565 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3592 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 627:
-#line 2202 "dhcp6_parser.yy" // lalr1.cc:907
+  case 639:
+#line 2229 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3575 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3602 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 628:
-#line 2208 "dhcp6_parser.yy" // lalr1.cc:907
+  case 640:
+#line 2235 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3585 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3612 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 629:
-#line 2212 "dhcp6_parser.yy" // lalr1.cc:907
+  case 641:
+#line 2239 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // No config_control params are required
     // parsing completed
 }
-#line 3594 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3621 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 634:
-#line 2227 "dhcp6_parser.yy" // lalr1.cc:907
+  case 646:
+#line 2254 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3605 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3632 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 635:
-#line 2232 "dhcp6_parser.yy" // lalr1.cc:907
+  case 647:
+#line 2259 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3614 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3641 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 636:
-#line 2237 "dhcp6_parser.yy" // lalr1.cc:907
+  case 648:
+#line 2264 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 3623 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3650 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 637:
-#line 2247 "dhcp6_parser.yy" // lalr1.cc:907
+  case 649:
+#line 2274 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3634 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3661 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 638:
-#line 2252 "dhcp6_parser.yy" // lalr1.cc:907
+  case 650:
+#line 2279 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3643 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3670 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 639:
-#line 2257 "dhcp6_parser.yy" // lalr1.cc:907
+  case 651:
+#line 2284 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3653 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3680 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 640:
-#line 2261 "dhcp6_parser.yy" // lalr1.cc:907
+  case 652:
+#line 2288 "dhcp6_parser.yy" // lalr1.cc:907
     {
     // parsing completed
 }
-#line 3661 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3688 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 644:
-#line 2277 "dhcp6_parser.yy" // lalr1.cc:907
+  case 656:
+#line 2304 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3672 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3699 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 645:
-#line 2282 "dhcp6_parser.yy" // lalr1.cc:907
+  case 657:
+#line 2309 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3681 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3708 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 648:
-#line 2294 "dhcp6_parser.yy" // lalr1.cc:907
+  case 660:
+#line 2321 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3691 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3718 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 649:
-#line 2298 "dhcp6_parser.yy" // lalr1.cc:907
+  case 661:
+#line 2325 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
 }
-#line 3699 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3726 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 659:
-#line 2315 "dhcp6_parser.yy" // lalr1.cc:907
+  case 671:
+#line 2342 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3708 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3735 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 660:
-#line 2320 "dhcp6_parser.yy" // lalr1.cc:907
+  case 672:
+#line 2347 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3716 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3743 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 661:
-#line 2322 "dhcp6_parser.yy" // lalr1.cc:907
+  case 673:
+#line 2349 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3726 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3753 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 662:
-#line 2328 "dhcp6_parser.yy" // lalr1.cc:907
+  case 674:
+#line 2355 "dhcp6_parser.yy" // lalr1.cc:907
     {
     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 3737 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3764 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 663:
-#line 2333 "dhcp6_parser.yy" // lalr1.cc:907
+  case 675:
+#line 2360 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3746 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3773 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 666:
-#line 2342 "dhcp6_parser.yy" // lalr1.cc:907
+  case 678:
+#line 2369 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3756 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3783 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 667:
-#line 2346 "dhcp6_parser.yy" // lalr1.cc:907
+  case 679:
+#line 2373 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.stack_.pop_back();
 }
-#line 3764 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3791 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 674:
-#line 2360 "dhcp6_parser.yy" // lalr1.cc:907
+  case 686:
+#line 2387 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3772 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3799 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 675:
-#line 2362 "dhcp6_parser.yy" // lalr1.cc:907
+  case 687:
+#line 2389 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3782 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3809 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 676:
-#line 2368 "dhcp6_parser.yy" // lalr1.cc:907
+  case 688:
+#line 2395 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3791 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3818 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 677:
-#line 2373 "dhcp6_parser.yy" // lalr1.cc:907
+  case 689:
+#line 2400 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3800 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3827 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
-  case 678:
-#line 2378 "dhcp6_parser.yy" // lalr1.cc:907
+  case 690:
+#line 2405 "dhcp6_parser.yy" // lalr1.cc:907
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3809 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3836 "dhcp6_parser.cc" // lalr1.cc:907
     break;
 
 
-#line 3813 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3840 "dhcp6_parser.cc" // lalr1.cc:907
             default:
               break;
             }
@@ -4067,124 +4094,126 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -837;
+  const short Dhcp6Parser::yypact_ninf_ = -851;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     418,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,    57,    65,    64,    66,
-      68,    87,    91,   126,   133,   148,   164,   184,   195,   203,
-     229,   230,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,    65,   -95,    27,    69,    22,   234,    72,    39,
-     196,   188,    41,   262,   -53,   375,    96,   144,  -837,   242,
-     249,   269,   263,   281,  -837,  -837,  -837,  -837,  -837,   307,
-    -837,    94,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,   309,   316,   317,   323,   341,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   347,  -837,  -837,  -837,
-    -837,   123,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   353,  -837,   140,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,   357,
-     367,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,   141,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,   178,  -837,  -837,  -837,  -837,  -837,   369,  -837,   385,
-     410,  -837,  -837,  -837,  -837,  -837,  -837,   187,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,   416,   352,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,   417,  -837,  -837,   423,  -837,
-    -837,  -837,   424,  -837,  -837,   422,   390,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-     433,   435,  -837,  -837,  -837,  -837,   434,   440,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-     191,  -837,  -837,  -837,   442,  -837,  -837,   443,  -837,   444,
-     445,  -837,  -837,   446,   448,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,   260,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-     261,  -837,  -837,  -837,   449,   264,  -837,  -837,  -837,  -837,
-      65,    65,  -837,   280,   451,   452,   453,   456,   459,  -837,
-      27,  -837,   462,   463,   464,   465,   466,   467,   297,   298,
-     299,   300,   301,   474,   475,   477,   478,   479,   480,   481,
-     482,   483,   485,   486,   487,   488,   489,   490,   491,   492,
-     322,   494,   495,   509,    69,  -837,   510,   338,    22,  -837,
-     512,   513,   514,   518,   519,   349,   348,   523,   524,   525,
-     234,  -837,   526,    72,  -837,   527,   362,   531,   363,   364,
-      39,  -837,   532,   536,   537,   539,   540,   541,   542,  -837,
-     196,  -837,   543,   544,   378,   546,   551,   552,   381,  -837,
-      41,   553,   382,   383,  -837,   262,   557,   558,   -17,  -837,
-     388,   560,   562,   394,   567,   400,   419,   568,   569,   415,
-     420,   570,   589,   591,   592,   375,  -837,   594,    96,  -837,
-     595,   425,   144,  -837,  -837,  -837,   599,   598,   600,    65,
-      65,    65,  -837,   432,   601,   602,   603,   604,   608,  -837,
-    -837,  -837,  -837,  -837,   441,   609,   611,   612,   613,   447,
-     221,   614,   617,   618,   619,   620,   621,   623,   624,   625,
-     626,  -837,   627,   613,   629,  -837,   632,  -837,  -837,   633,
-     634,   457,   468,   469,  -837,  -837,   632,   470,   638,  -837,
-     472,  -837,   473,  -837,   476,  -837,  -837,  -837,   632,   632,
-     632,   484,   493,   496,   497,  -837,   498,   499,  -837,   500,
-     501,   502,  -837,  -837,   503,  -837,  -837,  -837,   504,    65,
-    -837,  -837,   505,   506,  -837,   507,  -837,  -837,   -98,   508,
-    -837,  -837,    34,   511,   515,   516,  -837,   635,  -837,   636,
-    -837,  -837,    65,    69,    96,  -837,  -837,  -837,  -837,   144,
-      22,   193,   193,   642,  -837,   644,   645,   646,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   647,   -50,    65,   315,
-     571,   648,   649,   652,   152,   138,   128,  -837,   375,  -837,
-    -837,   653,   654,  -837,  -837,  -837,  -837,  -837,   -49,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,   655,   642,  -837,   267,   278,   279,   320,
-    -837,  -837,  -837,  -837,   659,   660,   661,   662,   664,  -837,
-     665,   678,  -837,  -837,  -837,   679,   680,   682,  -837,   321,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-     332,  -837,   681,   615,  -837,  -837,   685,   622,  -837,  -837,
-     686,   690,  -837,  -837,   688,   692,  -837,  -837,   691,   693,
-    -837,  -837,  -837,   119,  -837,  -837,  -837,   694,  -837,  -837,
-    -837,   166,  -837,  -837,  -837,  -837,   333,  -837,  -837,  -837,
-     176,  -837,  -837,   695,   696,  -837,  -837,   697,   699,  -837,
-     684,   700,   701,   702,   703,   704,   334,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   705,   706,   707,  -837,
-    -837,  -837,  -837,   335,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,   336,  -837,  -837,  -837,   344,
-     538,  -837,   708,   710,  -837,  -837,   709,   713,  -837,  -837,
-    -837,   711,  -837,  -837,   197,  -837,   712,  -837,  -837,  -837,
-    -837,   716,   717,   718,   719,   455,   521,   549,   548,   554,
-     722,   555,   556,   723,   724,   728,   559,   561,   563,   193,
-    -837,  -837,   193,  -837,   642,   234,  -837,   644,    41,  -837,
-     645,   262,  -837,   646,   389,  -837,   647,   -50,  -837,  -837,
-     315,  -837,   729,   571,  -837,    77,   648,  -837,   196,  -837,
-     649,   -53,  -837,   652,   564,   566,   572,   573,   574,   575,
-     152,  -837,   731,   733,   576,   577,   578,   138,  -837,   734,
-     738,   128,  -837,  -837,  -837,   737,   714,    72,  -837,   653,
-      39,  -837,   654,   740,  -837,    13,   655,  -837,  -837,   398,
-     580,   581,   582,  -837,  -837,  -837,  -837,  -837,   583,  -837,
-    -837,   584,   585,   586,  -837,  -837,  -837,  -837,   345,  -837,
-     351,  -837,   753,  -837,   754,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,   360,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,   590,  -837,
-    -837,   741,  -837,  -837,  -837,  -837,  -837,   755,   743,  -837,
-    -837,  -837,  -837,  -837,   757,  -837,   361,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,   104,   593,  -837,  -837,  -837,
-    -837,   596,   597,  -837,  -837,   605,   380,  -837,   387,  -837,
-     606,  -837,   762,  -837,  -837,  -837,  -837,  -837,   397,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-     389,  -837,  -837,   764,   631,  -837,    77,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-     765,   607,   768,    13,  -837,  -837,   637,  -837,  -837,   769,
-    -837,   640,  -837,  -837,   766,  -837,  -837,   412,  -837,   -18,
-     766,  -837,  -837,   771,   772,   773,   399,  -837,  -837,  -837,
-    -837,  -837,  -837,   774,   639,   650,   651,   -18,  -837,   641,
-    -837,  -837,  -837,  -837,  -837
+     380,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,    94,    40,    53,    78,
+     103,   105,   121,   123,   145,   170,   176,   183,   204,   238,
+     241,   249,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,    40,    37,    28,    72,    23,   237,    81,   196,
+     253,   208,    76,   263,   -64,   387,   111,    60,  -851,   269,
+     273,   275,   288,   299,  -851,  -851,  -851,  -851,  -851,   302,
+    -851,    74,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,   304,   313,   320,   323,   326,   333,
+     340,   343,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   344,
+    -851,  -851,  -851,  -851,   124,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,   353,  -851,   133,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,   359,   365,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   139,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+     147,  -851,  -851,  -851,  -851,  -851,   395,  -851,   397,   401,
+    -851,  -851,  -851,  -851,  -851,  -851,   160,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,   348,   331,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,   373,  -851,  -851,   408,  -851,  -851,
+    -851,   412,  -851,  -851,   409,   338,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   415,
+     416,  -851,  -851,  -851,  -851,   414,   364,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   177,
+    -851,  -851,  -851,   419,  -851,  -851,   421,  -851,   422,   423,
+    -851,  -851,   438,   449,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,   188,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   189,
+    -851,  -851,  -851,   451,   198,  -851,  -851,  -851,  -851,    40,
+      40,  -851,   281,   457,   472,   475,   478,   479,  -851,    28,
+    -851,   480,   481,   482,   484,   485,   486,   274,   314,   316,
+     317,   311,   318,   321,   324,   494,   495,   497,   499,   501,
+     502,   506,   507,   508,   509,   510,   524,   525,   526,   527,
+     528,   529,   360,   533,   535,   536,    72,  -851,   554,   379,
+      23,  -851,   556,   557,   558,   559,   561,   390,   391,   566,
+     568,   569,   237,  -851,   570,    81,  -851,   571,   398,   573,
+     400,   403,   196,  -851,   576,   580,   582,   583,   584,   585,
+     588,  -851,   253,  -851,   589,   590,   417,   592,   593,   594,
+     420,  -851,    76,   595,   424,   425,  -851,   263,   597,   598,
+      98,  -851,   426,   599,   603,   430,   605,   432,   433,   608,
+     610,   435,   440,   614,   617,   618,   619,   387,  -851,   620,
+     111,  -851,   621,   450,    60,  -851,  -851,  -851,   622,   623,
+     624,    40,    40,    40,  -851,   452,   625,   626,   627,   628,
+     631,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   460,
+     633,   634,   635,   636,   464,   386,   637,   639,   640,   641,
+     642,   643,   645,   646,   647,   648,  -851,   649,   636,   650,
+    -851,   653,  -851,  -851,   654,   655,   470,   476,   487,  -851,
+    -851,   653,   488,   656,  -851,   489,  -851,   490,  -851,   491,
+    -851,  -851,  -851,   653,   653,   653,   492,   493,   496,   498,
+    -851,   500,   503,  -851,   504,   505,   511,  -851,  -851,   512,
+    -851,  -851,  -851,   513,    40,  -851,  -851,   514,   515,  -851,
+     516,  -851,  -851,    85,   518,  -851,  -851,   -82,   517,   519,
+     520,  -851,   657,  -851,   666,  -851,  -851,    40,    72,   111,
+    -851,  -851,  -851,  -851,    60,    23,   202,   202,   665,  -851,
+     667,   669,   671,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,   672,   -48,    40,   -55,   538,   676,   677,   678,    -9,
+     152,    97,  -851,   387,  -851,  -851,   679,   680,  -851,  -851,
+    -851,  -851,  -851,   -17,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   688,   665,
+    -851,   199,   243,   244,   251,  -851,  -851,  -851,  -851,   694,
+     695,   696,   697,   698,  -851,   699,   700,  -851,  -851,  -851,
+     701,   702,   703,  -851,   252,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,   286,  -851,   704,   705,  -851,
+    -851,   706,   708,  -851,  -851,   707,   711,  -851,  -851,   709,
+     713,  -851,  -851,   712,   714,  -851,  -851,  -851,   108,  -851,
+    -851,  -851,   715,  -851,  -851,  -851,   137,  -851,  -851,  -851,
+    -851,   289,  -851,  -851,  -851,   168,  -851,  -851,   716,   717,
+    -851,  -851,   718,   720,  -851,   721,   722,   723,   724,   725,
+     726,   290,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,   727,   728,   729,  -851,  -851,  -851,  -851,   292,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+     296,  -851,  -851,  -851,   330,   532,  -851,   730,   731,  -851,
+    -851,   732,   734,  -851,  -851,  -851,   644,  -851,  -851,   178,
+    -851,   733,  -851,  -851,  -851,  -851,   736,   737,   738,   739,
+     541,   555,   567,   564,   572,   742,   574,   575,   743,   744,
+     745,   577,   578,   579,   202,  -851,  -851,   202,  -851,   665,
+     237,  -851,   667,    76,  -851,   669,   263,  -851,   671,   402,
+    -851,   672,   -48,  -851,  -851,   -55,  -851,   747,   538,  -851,
+      16,   676,  -851,   253,  -851,   677,   -64,  -851,   678,   586,
+     587,   591,   596,   600,   601,    -9,  -851,   750,   753,   602,
+     604,   606,   152,  -851,   754,   756,    97,  -851,  -851,  -851,
+     755,   759,    81,  -851,   679,   196,  -851,   680,   762,  -851,
+     310,   688,  -851,  -851,   448,   609,   611,   612,  -851,  -851,
+    -851,  -851,  -851,   613,  -851,  -851,   615,   616,   652,  -851,
+    -851,  -851,  -851,   337,  -851,   352,  -851,   760,  -851,   763,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,   356,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,   662,  -851,  -851,   766,
+    -851,  -851,  -851,  -851,  -851,   764,   770,  -851,  -851,  -851,
+    -851,  -851,   767,  -851,   363,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,   319,   663,  -851,  -851,  -851,  -851,   668,
+     670,  -851,  -851,   684,   377,  -851,   392,  -851,   685,  -851,
+     772,  -851,  -851,  -851,  -851,  -851,   399,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   402,  -851,
+    -851,   773,   607,  -851,    16,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   777,   687,
+     779,   310,  -851,  -851,   686,  -851,  -851,   758,  -851,   693,
+    -851,  -851,   778,  -851,  -851,   207,  -851,     8,   778,  -851,
+    -851,   787,   790,   791,   407,  -851,  -851,  -851,  -851,  -851,
+    -851,   793,   651,   719,   735,     8,  -851,   710,  -851,  -851,
+    -851,  -851,  -851
   };
 
   const unsigned short
@@ -4194,158 +4223,160 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,    28,    30,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     1,    47,    40,    36,    35,    32,    33,    34,
-      39,     3,    37,    38,    60,     5,    72,     7,   120,     9,
-     267,    11,   413,    13,   438,    15,   468,    17,   338,    19,
-     346,    21,   383,    23,   232,    25,   567,    27,   639,    29,
-     628,    31,    49,    43,     0,     0,     0,     0,     0,     0,
-     470,     0,   348,   385,     0,     0,     0,     0,    51,     0,
-      50,     0,     0,    44,    70,   637,   620,   622,   624,     0,
-      69,     0,    62,    64,    66,    67,    68,    65,   109,   626,
-     118,   132,   134,   136,     0,     0,     0,     0,     0,   116,
-     259,   336,   375,   426,   428,   301,   309,   205,   222,   213,
-     198,   505,   460,   224,   243,   526,     0,   550,   563,   565,
-     108,     0,    74,    76,    77,    78,    79,    80,    81,   106,
-      84,    85,    86,    87,   103,    88,    90,    89,    94,    95,
-      82,   107,    83,    92,    93,   101,   102,   104,    91,    96,
-      97,    98,    99,   100,   105,   129,     0,   128,     0,   122,
-     124,   125,   126,   127,   405,   430,   291,   293,   295,     0,
-       0,   299,   297,   499,   290,   271,   272,   273,   274,     0,
-     269,   278,   279,   280,   283,   284,   286,   281,   282,   275,
-     276,   288,   289,   277,   285,   287,   424,   423,   419,   420,
-     418,     0,   415,   417,   421,   422,   453,     0,   456,     0,
-       0,   452,   446,   447,   445,   450,   451,     0,   440,   442,
-     443,   448,   449,   444,   497,   485,   487,   489,   491,   493,
-     495,   484,   481,   482,   483,     0,   471,   472,   476,   477,
-     474,   478,   479,   480,   475,     0,   365,   179,     0,   369,
-     367,   372,     0,   361,   362,     0,   349,   350,   352,   364,
-     353,   354,   355,   371,   356,   357,   358,   359,   360,   399,
-       0,     0,   397,   398,   401,   402,     0,   386,   387,   389,
-     390,   391,   392,   393,   394,   395,   396,   239,   241,   236,
-       0,   234,   237,   238,     0,   590,   592,     0,   595,     0,
-       0,   599,   603,     0,     0,   607,   614,   616,   618,   588,
-     586,   587,     0,   569,   571,   572,   573,   574,   575,   576,
-     577,   578,   579,   580,   581,   582,   583,   584,   585,   644,
-       0,   641,   643,   634,     0,     0,   630,   632,   633,    48,
-       0,     0,    41,     0,     0,     0,     0,     0,     0,    59,
-       0,    61,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      39,     3,    37,    38,    60,     5,    72,     7,   126,     9,
+     273,    11,   425,    13,   450,    15,   480,    17,   350,    19,
+     358,    21,   395,    23,   238,    25,   579,    27,   651,    29,
+     640,    31,    49,    43,     0,     0,     0,     0,     0,     0,
+     482,     0,   360,   397,     0,     0,     0,     0,    51,     0,
+      50,     0,     0,    44,    70,   649,   632,   634,   636,     0,
+      69,     0,    62,    64,    66,    67,    68,    65,   112,   638,
+     124,   138,   140,   142,     0,     0,     0,     0,     0,     0,
+       0,     0,   122,   265,   348,   387,   438,   440,   310,   318,
+     211,   228,   219,   204,   517,   472,   230,   249,   538,     0,
+     562,   575,   577,   111,     0,    74,    76,    77,    78,    79,
+      80,   108,   109,   110,    81,   106,    84,    85,    86,    87,
+     103,    88,    90,    89,    94,    95,    82,   107,    83,    92,
+      93,   101,   102,   104,    91,    96,    97,    98,    99,   100,
+     105,   135,     0,   134,     0,   128,   130,   131,   132,   133,
+     417,   442,   300,   302,   304,     0,     0,   308,   306,   511,
+     299,   277,   278,   279,   280,   296,   297,   298,     0,   275,
+     284,   285,   286,   289,   290,   292,   287,   288,   281,   282,
+     294,   295,   283,   291,   293,   436,   435,   431,   432,   430,
+       0,   427,   429,   433,   434,   465,     0,   468,     0,     0,
+     464,   458,   459,   457,   462,   463,     0,   452,   454,   455,
+     460,   461,   456,   509,   497,   499,   501,   503,   505,   507,
+     496,   493,   494,   495,     0,   483,   484,   488,   489,   486,
+     490,   491,   492,   487,     0,   377,   185,     0,   381,   379,
+     384,     0,   373,   374,     0,   361,   362,   364,   376,   365,
+     366,   367,   383,   368,   369,   370,   371,   372,   411,     0,
+       0,   409,   410,   413,   414,     0,   398,   399,   401,   402,
+     403,   404,   405,   406,   407,   408,   245,   247,   242,     0,
+     240,   243,   244,     0,   602,   604,     0,   607,     0,     0,
+     611,   615,     0,     0,   619,   626,   628,   630,   600,   598,
+     599,     0,   581,   583,   584,   585,   586,   587,   588,   589,
+     590,   591,   592,   593,   594,   595,   596,   597,   656,     0,
+     653,   655,   646,     0,     0,   642,   644,   645,    48,     0,
+       0,    41,     0,     0,     0,     0,     0,     0,    59,     0,
+      61,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    73,     0,     0,     0,   121,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   268,     0,     0,   414,     0,     0,     0,     0,     0,
-       0,   439,     0,     0,     0,     0,     0,     0,     0,   469,
-       0,   339,     0,     0,     0,     0,     0,     0,     0,   347,
-       0,     0,     0,     0,   384,     0,     0,     0,     0,   233,
+       0,     0,     0,     0,     0,     0,     0,    73,     0,     0,
+       0,   127,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   274,     0,     0,   426,     0,     0,     0,
+       0,     0,     0,   451,     0,     0,     0,     0,     0,     0,
+       0,   481,     0,   351,     0,     0,     0,     0,     0,     0,
+       0,   359,     0,     0,     0,     0,   396,     0,     0,     0,
+       0,   239,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   580,     0,
+       0,   652,     0,     0,     0,   641,    52,    45,     0,     0,
+       0,     0,     0,     0,    63,     0,     0,     0,     0,     0,
+       0,   114,   115,   116,   117,   118,   119,   120,   121,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   568,     0,     0,   640,
-       0,     0,     0,   629,    52,    45,     0,     0,     0,     0,
-       0,     0,    63,     0,     0,     0,     0,     0,     0,   111,
-     112,   113,   114,   115,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   561,     0,     0,     0,
+      75,     0,   137,   129,     0,     0,     0,     0,     0,   316,
+     317,     0,     0,     0,   276,     0,   428,     0,   467,     0,
+     470,   471,   453,     0,     0,     0,     0,     0,     0,     0,
+     485,     0,     0,   375,     0,     0,     0,   386,   363,     0,
+     415,   416,   400,     0,     0,   241,   601,     0,     0,   606,
+       0,   609,   610,     0,     0,   617,   618,     0,     0,     0,
+       0,   582,     0,   654,     0,   648,   643,     0,     0,     0,
+     633,   635,   637,   113,     0,     0,     0,     0,   144,   123,
+     267,   352,   389,    42,   439,   441,   312,   313,   314,   315,
+     311,   320,     0,    49,     0,     0,     0,   474,   232,     0,
+       0,     0,   576,     0,    53,   136,   419,   444,   301,   303,
+     305,   309,   307,     0,   437,   466,   469,   510,   498,   500,
+     502,   504,   506,   508,   378,   186,   382,   380,   385,   412,
+     246,   248,   603,   605,   608,   613,   614,   612,   616,   621,
+     622,   623,   624,   625,   620,   627,   629,   631,     0,   144,
+      46,     0,     0,     0,     0,   172,   178,   180,   182,     0,
+       0,     0,     0,     0,   195,     0,     0,   198,   200,   202,
+       0,     0,     0,   171,     0,   150,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   164,   165,   166,   167,
+     162,   163,   168,   169,   170,     0,   148,     0,   145,   146,
+     271,     0,   268,   269,   356,     0,   353,   354,   393,     0,
+     390,   391,   324,     0,   321,   322,   217,   218,     0,   213,
+     215,   216,     0,   226,   227,   223,     0,   221,   224,   225,
+     209,     0,   206,   208,   521,     0,   519,   478,     0,   475,
+     476,   236,     0,   233,   234,     0,     0,     0,     0,     0,
+       0,     0,   251,   253,   254,   255,   256,   257,   258,   551,
+     557,     0,     0,     0,   550,   547,   548,   549,     0,   540,
+     542,   545,   543,   544,   546,   571,   573,   570,   568,   569,
+       0,   564,   566,   567,     0,    55,   423,     0,   420,   421,
+     448,     0,   445,   446,   515,   514,     0,   513,   660,     0,
+     658,     0,    71,   650,   639,   125,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   549,     0,     0,     0,    75,     0,   131,   123,     0,
-       0,     0,     0,     0,   307,   308,     0,     0,     0,   270,
-       0,   416,     0,   455,     0,   458,   459,   441,     0,     0,
-       0,     0,     0,     0,     0,   473,     0,     0,   363,     0,
-       0,     0,   374,   351,     0,   403,   404,   388,     0,     0,
-     235,   589,     0,     0,   594,     0,   597,   598,     0,     0,
-     605,   606,     0,     0,     0,     0,   570,     0,   642,     0,
-     636,   631,     0,     0,     0,   621,   623,   625,   110,     0,
-       0,     0,     0,   138,   117,   261,   340,   377,    42,   427,
-     429,   303,   304,   305,   306,   302,   311,     0,    49,     0,
-       0,     0,   462,   226,     0,     0,     0,   564,     0,    53,
-     130,   407,   432,   292,   294,   296,   300,   298,     0,   425,
-     454,   457,   498,   486,   488,   490,   492,   494,   496,   366,
-     180,   370,   368,   373,   400,   240,   242,   591,   593,   596,
-     601,   602,   600,   604,   609,   610,   611,   612,   613,   608,
-     615,   617,   619,     0,   138,    46,     0,     0,     0,     0,
-     166,   172,   174,   176,     0,     0,     0,     0,     0,   189,
-       0,     0,   192,   194,   196,     0,     0,     0,   165,     0,
-     144,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   158,   159,   160,   161,   156,   157,   162,   163,   164,
-       0,   142,     0,   139,   140,   265,     0,   262,   263,   344,
-       0,   341,   342,   381,     0,   378,   379,   315,     0,   312,
-     313,   211,   212,     0,   207,   209,   210,     0,   220,   221,
-     217,     0,   215,   218,   219,   203,     0,   200,   202,   509,
-       0,   507,   466,     0,   463,   464,   230,     0,   227,   228,
-       0,     0,     0,     0,     0,     0,     0,   245,   247,   248,
-     249,   250,   251,   252,   539,   545,     0,     0,     0,   538,
-     535,   536,   537,     0,   528,   530,   533,   531,   532,   534,
-     559,   561,   558,   556,   557,     0,   552,   554,   555,     0,
-      55,   411,     0,   408,   409,   436,     0,   433,   434,   503,
-     502,     0,   501,   648,     0,   646,     0,    71,   638,   627,
-     119,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     133,   135,     0,   137,     0,     0,   260,     0,   348,   337,
-       0,   385,   376,     0,     0,   310,     0,     0,   206,   223,
-       0,   214,     0,     0,   199,   511,     0,   506,   470,   461,
-       0,     0,   225,     0,     0,     0,     0,     0,     0,     0,
-       0,   244,     0,     0,     0,     0,     0,     0,   527,     0,
-       0,     0,   551,   566,    57,     0,    56,     0,   406,     0,
-       0,   431,     0,     0,   500,     0,     0,   645,   635,     0,
-       0,     0,     0,   178,   181,   182,   183,   184,     0,   191,
-     185,     0,     0,     0,   186,   187,   188,   145,     0,   141,
-       0,   264,     0,   343,     0,   380,   335,   330,   332,   323,
-     324,   319,   320,   321,   322,   328,   329,   327,   331,     0,
-     317,   325,   333,   334,   326,   314,   208,   216,     0,   201,
-     523,     0,   521,   522,   518,   519,   520,     0,   512,   513,
-     515,   516,   517,   508,     0,   465,     0,   229,   253,   254,
-     255,   256,   257,   258,   246,     0,     0,   544,   547,   548,
-     529,     0,     0,   553,    54,     0,     0,   410,     0,   435,
-       0,   662,     0,   660,   658,   652,   656,   657,     0,   650,
-     654,   655,   653,   647,   168,   169,   170,   171,   167,   173,
-     175,   177,   190,   193,   195,   197,   143,   266,   345,   382,
-       0,   316,   204,     0,     0,   510,     0,   467,   231,   541,
-     542,   543,   540,   546,   560,   562,    58,   412,   437,   504,
-       0,     0,     0,     0,   649,   318,     0,   525,   514,     0,
-     659,     0,   651,   524,     0,   661,   666,     0,   664,     0,
-       0,   663,   674,     0,     0,     0,     0,   668,   670,   671,
-     672,   673,   665,     0,     0,     0,     0,     0,   667,     0,
-     676,   677,   678,   669,   675
+       0,     0,     0,     0,     0,   139,   141,     0,   143,     0,
+       0,   266,     0,   360,   349,     0,   397,   388,     0,     0,
+     319,     0,     0,   212,   229,     0,   220,     0,     0,   205,
+     523,     0,   518,   482,   473,     0,     0,   231,     0,     0,
+       0,     0,     0,     0,     0,     0,   250,     0,     0,     0,
+       0,     0,     0,   539,     0,     0,     0,   563,   578,    57,
+       0,    56,     0,   418,     0,     0,   443,     0,     0,   512,
+       0,     0,   657,   647,     0,     0,     0,     0,   184,   187,
+     188,   189,   190,     0,   197,   191,     0,     0,     0,   192,
+     193,   194,   151,     0,   147,     0,   270,     0,   355,     0,
+     392,   347,   339,   341,   332,   333,   344,   345,   346,   328,
+     329,   330,   331,   337,   338,   336,   340,     0,   326,   334,
+     342,   343,   335,   323,   214,   222,     0,   207,   535,     0,
+     533,   534,   530,   531,   532,     0,   524,   525,   527,   528,
+     529,   520,     0,   477,     0,   235,   259,   260,   261,   262,
+     263,   264,   252,     0,     0,   556,   559,   560,   541,     0,
+       0,   565,    54,     0,     0,   422,     0,   447,     0,   674,
+       0,   672,   670,   664,   668,   669,     0,   662,   666,   667,
+     665,   659,   174,   175,   176,   177,   173,   179,   181,   183,
+     196,   199,   201,   203,   149,   272,   357,   394,     0,   325,
+     210,     0,     0,   522,     0,   479,   237,   553,   554,   555,
+     552,   558,   572,   574,    58,   424,   449,   516,     0,     0,
+       0,     0,   661,   327,     0,   537,   526,     0,   671,     0,
+     663,   536,     0,   673,   678,     0,   676,     0,     0,   675,
+     686,     0,     0,     0,     0,   680,   682,   683,   684,   685,
+     677,     0,     0,     0,     0,     0,   679,     0,   688,   689,
+     690,   681,   687
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,    43,  -837,  -460,
-    -837,   266,  -837,  -837,  -837,  -837,   165,  -837,  -472,  -837,
-    -837,  -837,   -74,  -837,  -837,  -837,   426,  -837,  -837,  -837,
-    -837,   205,   395,  -837,  -837,   -62,   -46,   -45,   -43,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   186,   421,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,   150,  -837,   -19,
-    -837,  -576,    -7,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,   -70,  -837,  -609,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,   -35,  -837,  -837,  -837,  -837,
-    -837,   -37,  -596,  -837,  -837,  -837,  -837,   -23,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   -33,  -837,  -837,  -837,
-     -26,   401,  -837,  -837,  -837,  -837,  -837,  -837,  -837,   -44,
-    -837,  -837,  -837,  -837,  -837,  -837,  -836,  -837,  -837,  -837,
-      -9,  -837,  -837,  -837,     1,   438,  -837,  -837,  -835,  -837,
-    -834,  -837,   -36,  -837,   -32,  -837,   -42,  -837,  -837,  -837,
-    -831,  -837,  -837,  -837,  -837,    -6,  -837,  -837,  -179,   781,
-    -837,  -837,  -837,  -837,  -837,     3,  -837,  -837,  -837,     7,
-    -837,   429,  -837,   -76,  -837,  -837,  -837,  -837,  -837,   -69,
-    -837,  -837,  -837,  -837,  -837,   -11,  -837,  -837,  -837,     5,
-    -837,  -837,  -837,     8,  -837,   411,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,   -39,  -837,  -837,
-    -837,   -31,   458,  -837,  -837,   -58,  -837,   -24,  -837,  -837,
-    -837,  -837,  -837,   -40,  -837,  -837,  -837,   -30,   454,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,   -60,  -837,  -837,  -837,
-       2,  -837,  -837,  -837,     9,  -837,   450,   247,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -828,  -837,  -837,  -837,  -837,  -837,  -837,  -837,    12,
-    -837,  -837,  -837,  -157,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,    -5,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,    -8,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,   270,   427,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,  -837,   295,   413,  -837,  -837,  -837,  -837,  -837,
-    -837,  -837,   303,   428,  -837,  -837,  -837,   -16,  -837,  -837,
-    -162,  -837,  -837,  -837,  -837,  -837,  -837,  -177,  -837,  -837,
-    -193,  -837,  -837,  -837,  -837,  -837
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,     6,  -851,  -466,
+    -851,   229,  -851,  -851,  -851,  -851,   165,  -851,  -458,  -851,
+    -851,  -851,   -74,  -851,  -851,  -851,   434,  -851,  -851,  -851,
+    -851,   193,   388,  -851,  -851,   -62,   -46,   -45,   -43,   -42,
+     -29,   -26,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   211,
+     394,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+     122,  -851,   -39,  -851,  -589,   -41,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,   -70,  -851,  -624,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   -31,  -851,
+    -851,  -851,  -851,  -851,    -8,  -608,  -851,  -851,  -851,  -851,
+     -12,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   -23,
+    -851,  -851,  -851,   -53,   413,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,   -28,  -851,  -851,  -851,  -851,  -851,  -851,  -850,
+    -851,  -851,  -851,    12,  -851,  -851,  -851,    15,   446,  -851,
+    -851,  -849,  -851,  -846,  -851,    -3,  -851,     2,  -851,     1,
+    -851,  -851,  -851,  -843,  -851,  -851,  -851,  -851,     5,  -851,
+    -851,  -169,   809,  -851,  -851,  -851,  -851,  -851,    18,  -851,
+    -851,  -851,    21,  -851,   429,  -851,   -76,  -851,  -851,  -851,
+    -851,  -851,   -69,  -851,  -851,  -851,  -851,  -851,   -11,  -851,
+    -851,  -851,    17,  -851,  -851,  -851,    20,  -851,   436,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+     -25,  -851,  -851,  -851,   -22,   467,  -851,  -851,   -58,  -851,
+     -24,  -851,  -851,  -851,  -851,  -851,   -20,  -851,  -851,  -851,
+     -21,   463,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   -60,
+    -851,  -851,  -851,    13,  -851,  -851,  -851,    19,  -851,   458,
+     256,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -842,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,    24,  -851,  -851,  -851,  -148,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,     9,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,     4,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,   280,   431,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,  -851,   303,   437,  -851,  -851,
+    -851,  -851,  -851,  -851,  -851,   325,   439,  -851,  -851,  -851,
+      -6,  -851,  -851,  -155,  -851,  -851,  -851,  -851,  -851,  -851,
+    -170,  -851,  -851,  -185,  -851,  -851,  -851,  -851,  -851
   };
 
   const short
@@ -4353,451 +4384,461 @@ namespace isc { namespace dhcp {
   {
       -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    88,    41,    42,
-      73,   609,    92,    93,    43,    72,    89,    90,   630,   810,
-     905,   906,   698,    45,    74,   101,   102,   103,   364,    47,
-      75,   141,   142,   143,   372,   144,   145,   146,   147,   148,
-     149,   383,   150,   374,    49,    76,   178,   179,   180,   406,
-     181,   151,   375,   152,   376,   153,   377,   722,   723,   724,
-     852,   699,   700,   701,   831,  1028,   702,   832,   703,   833,
-     704,   834,   705,   706,   443,   707,   708,   709,   710,   711,
-     712,   713,   714,   715,   840,   716,   717,   843,   718,   844,
-     719,   845,   154,   394,   756,   757,   758,   872,   155,   391,
-     743,   744,   745,   746,   156,   393,   751,   752,   753,   754,
-     157,   392,   158,   397,   767,   768,   769,   881,    65,    84,
-     310,   311,   312,   456,   313,   457,   159,   398,   776,   777,
-     778,   779,   780,   781,   782,   783,   160,   384,   726,   727,
-     728,   855,    51,    77,   199,   200,   201,   412,   202,   413,
-     203,   414,   204,   418,   205,   417,   161,   389,   615,   207,
-     208,   162,   390,   738,   739,   740,   864,   959,   960,   163,
-     385,    59,    81,   730,   731,   732,   858,    61,    82,   275,
-     276,   277,   278,   279,   280,   281,   442,   282,   446,   283,
-     445,   284,   285,   447,   286,   164,   386,   734,   735,   736,
-     861,    63,    83,   296,   297,   298,   299,   300,   451,   301,
-     302,   303,   304,   210,   410,   812,   813,   814,   907,    53,
-      78,   221,   222,   223,   422,   165,   387,   166,   388,   213,
-     411,   816,   817,   818,   910,    55,    79,   237,   238,   239,
-     425,   240,   241,   427,   242,   243,   167,   396,   763,   764,
-     765,   878,    57,    80,   255,   256,   257,   258,   433,   259,
-     434,   260,   435,   261,   436,   262,   437,   263,   438,   264,
-     432,   215,   419,   821,   822,   913,   168,   395,   760,   761,
-     875,   977,   978,   979,   980,   981,  1043,   982,   169,   399,
-     793,   794,   795,   892,  1052,   796,   797,   893,   798,   799,
-     170,   171,   401,   805,   806,   807,   899,   808,   900,   172,
-     402,   173,   403,    67,    85,   332,   333,   334,   335,   461,
-     336,   462,   337,   338,   464,   339,   340,   341,   467,   662,
-     342,   468,   343,   344,   345,   471,   669,   346,   472,   347,
-     473,   348,   474,   104,   366,   105,   367,   106,   368,   174,
-     373,    71,    87,   355,   356,   357,   480,   358,   107,   365,
-      69,    86,   350,   351,   352,   477,   824,   825,   915,  1018,
-    1019,  1020,  1021,  1062,  1022,  1060,  1077,  1078,  1079,  1086,
-    1087,  1088,  1093,  1089,  1090,  1091
+      73,   624,    92,    93,    43,    72,    89,    90,   645,   825,
+     920,   921,   713,    45,    74,   101,   102,   103,   373,    47,
+      75,   144,   145,   146,   381,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   395,   156,   383,    49,    76,   184,
+     185,   186,   418,   187,   157,   384,   158,   385,   159,   386,
+     737,   738,   739,   867,   714,   715,   716,   846,  1046,   717,
+     847,   718,   848,   719,   849,   720,   721,   455,   722,   723,
+     724,   725,   726,   727,   728,   729,   730,   855,   731,   732,
+     858,   733,   859,   734,   860,   160,   406,   771,   772,   773,
+     887,   161,   403,   758,   759,   760,   761,   162,   405,   766,
+     767,   768,   769,   163,   404,   164,   409,   782,   783,   784,
+     896,    65,    84,   319,   320,   321,   468,   322,   469,   165,
+     410,   791,   792,   793,   794,   795,   796,   797,   798,   166,
+     396,   741,   742,   743,   870,    51,    77,   208,   209,   210,
+     424,   211,   425,   212,   426,   213,   430,   214,   429,   167,
+     401,   630,   216,   217,   168,   402,   753,   754,   755,   879,
+     977,   978,   169,   397,    59,    81,   745,   746,   747,   873,
+      61,    82,   284,   285,   286,   287,   288,   289,   290,   454,
+     291,   458,   292,   457,   293,   294,   459,   295,   170,   398,
+     749,   750,   751,   876,    63,    83,   305,   306,   307,   308,
+     309,   463,   310,   311,   312,   313,   219,   422,   827,   828,
+     829,   922,    53,    78,   230,   231,   232,   434,   171,   399,
+     172,   400,   222,   423,   831,   832,   833,   925,    55,    79,
+     246,   247,   248,   437,   249,   250,   439,   251,   252,   173,
+     408,   778,   779,   780,   893,    57,    80,   264,   265,   266,
+     267,   445,   268,   446,   269,   447,   270,   448,   271,   449,
+     272,   450,   273,   444,   224,   431,   836,   837,   928,   174,
+     407,   775,   776,   890,   995,   996,   997,   998,   999,  1061,
+    1000,   175,   411,   808,   809,   810,   907,  1070,   811,   812,
+     908,   813,   814,   176,   177,   413,   820,   821,   822,   914,
+     823,   915,   178,   414,   179,   415,    67,    85,   341,   342,
+     343,   344,   473,   345,   474,   346,   347,   476,   348,   349,
+     350,   479,   677,   351,   480,   352,   353,   354,   483,   684,
+     355,   484,   356,   485,   357,   486,   104,   375,   105,   376,
+     106,   377,   180,   382,    71,    87,   364,   365,   366,   492,
+     367,   107,   374,    69,    86,   359,   360,   361,   489,   839,
+     840,   930,  1036,  1037,  1038,  1039,  1080,  1040,  1078,  1095,
+    1096,  1097,  1104,  1105,  1106,  1111,  1107,  1108,  1109
   };
 
   const unsigned short
   Dhcp6Parser::yytable_[] =
   {
-     100,   140,   177,   194,   217,   231,   251,   294,   273,   292,
-     309,   329,   274,   293,   295,   195,   790,   214,   182,   211,
-     224,   235,   253,   750,   287,   305,   720,   330,   952,   953,
-     954,   196,   197,   958,   198,   206,   964,    94,   175,   176,
-     660,   661,   218,   232,   245,   741,   219,   233,   608,   307,
-     308,   819,   183,   212,   225,   236,   254,    32,   288,   306,
-      40,   331,   266,   608,   636,   267,   209,   220,   234,   252,
-      33,    44,    34,    46,    35,    48,   642,   643,   644,    91,
-     108,   109,   123,   124,   110,   307,   308,   111,   112,   113,
-     122,   123,   124,   267,    50,   268,   269,   370,    52,   270,
-     271,   272,   371,   226,   227,   228,   229,   230,   123,   124,
-     123,   124,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,    99,   867,   122,   742,   868,   404,   191,   122,   267,
-     192,   405,  1082,    54,   216,  1083,  1084,  1085,   123,   124,
-      56,   123,   124,   408,   420,   125,   123,   124,   409,   421,
-     126,   127,   128,   129,   130,    58,   131,   353,   354,   784,
-     191,   132,  1011,   192,  1012,  1013,   970,   971,   685,   870,
-     133,    60,   871,   134,    95,   664,   665,   666,   667,   876,
-     135,   423,   877,    96,    97,    98,   424,    99,   136,   137,
-     430,    62,   138,   139,   458,   431,    99,   123,   124,   459,
-     916,    99,    64,   917,   952,   953,   954,   123,   124,   958,
-      66,   668,   964,    99,   680,    99,  1049,  1050,  1051,   681,
-     682,   683,   684,   685,   686,   687,   688,   689,   690,   691,
-     692,   693,   694,   695,   696,   697,    68,    70,   121,    36,
-      37,    38,    39,    99,   349,   267,    99,   122,   359,   800,
-     801,    99,   360,   785,   786,   787,   788,   770,   771,   772,
-     773,   774,   775,   475,   478,   123,   124,   482,   476,   479,
-     404,   362,   483,   361,   750,   827,   938,   114,   115,   116,
-     117,   478,   482,   244,   363,   122,   828,   829,   790,   245,
-     246,   247,   248,   249,   250,   184,   100,   185,   611,   612,
-     613,   614,    99,   123,   124,   186,   187,   188,   189,   190,
-     125,   369,    99,   378,   267,   289,   268,   269,   290,   291,
-     379,   380,   191,   408,   849,   192,   132,   381,   830,   850,
-     140,   123,   124,   193,   177,   849,   873,   890,   897,   901,
-     851,   874,   891,   898,   902,   382,   194,   475,   849,   217,
-     182,   400,   903,  1036,   420,   440,   231,   407,   195,  1037,
-     214,   415,   211,  1040,   458,   224,   251,    99,  1041,  1048,
-      99,   416,   235,   426,   196,   197,   273,   198,   206,   294,
-     274,   292,   253,   423,   183,   293,   295,   218,  1057,   428,
-     430,   219,   287,   450,   232,  1058,   212,   305,   233,   225,
-    1063,   329,  1097,   484,   485,  1064,   236,  1098,    99,   209,
-     741,   748,   220,   749,   429,  1080,   254,   330,  1081,   234,
-    1024,  1025,  1026,  1027,   439,   441,   288,   444,   448,   252,
-     449,   306,   114,   115,   116,   117,    99,   452,   120,   453,
-     122,   267,   454,   455,   123,   124,   460,   463,   465,   466,
-     469,   331,   470,   481,   486,   487,   488,   489,   123,   124,
-     490,   187,   188,   491,   190,   125,   493,   494,   495,   496,
-     497,   498,   499,   500,   501,   502,   503,   191,   504,   505,
-     192,   506,   507,   508,   509,   510,   511,   512,   193,   513,
-     514,   515,   516,   517,   518,   519,   520,   521,   522,   523,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   524,   526,   527,   529,   530,   531,   140,
-     327,   328,   532,   533,   534,   535,   177,   536,   537,   538,
-     540,   542,   595,   596,   597,   544,   548,   543,   545,   546,
-     549,   550,   182,   551,   552,   553,   554,   556,   557,    99,
-     559,   789,   802,   558,   329,   560,   561,   564,   562,   565,
-     566,   568,   569,    99,   572,   571,   573,   791,   803,   574,
-     330,   575,   578,   579,   582,   576,   183,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,   580,   583,   577,   584,   585,   581,   587,   589,
-     590,   792,   804,   592,   331,   593,   598,   594,   599,   600,
-     601,   602,   656,   603,   605,   604,   606,   607,   854,   616,
-      34,   610,   617,   618,   619,   857,   621,   620,   622,   623,
-     923,   633,   624,   625,   626,   675,   628,   629,   631,   632,
-     673,   674,   634,   635,   637,   638,   639,   640,   663,   721,
-     641,   725,   729,   733,   737,   759,   762,   755,   645,   766,
-     811,   815,   823,   835,   836,   837,   838,   646,   839,   841,
-     647,   648,   649,   650,   651,   652,   653,   654,   655,   657,
-     658,   659,   842,   846,   847,   670,   848,   853,   884,   671,
-     672,   856,   859,   860,   862,   863,   866,   865,   924,   880,
-     869,   879,   883,   882,   885,   886,   887,   888,   889,   894,
-     895,   896,   904,   909,   908,   911,   912,  1005,   918,   914,
-     919,   920,   921,   922,   925,   926,   928,   931,   932,   927,
-     929,   930,   933,   968,   934,   995,   935,   996,  1001,   988,
-     936,   989,  1002,  1004,  1010,  1044,  1046,   990,   991,   992,
-     993,   997,   998,   999,  1029,  1030,  1031,  1032,  1033,  1034,
-    1035,  1038,  1039,  1045,  1042,  1047,  1061,  1053,  1066,  1069,
-    1054,  1055,  1071,  1076,  1074,  1094,  1095,  1096,  1099,  1056,
-    1059,   194,  1070,   747,   273,   294,   679,   292,   274,   627,
-     946,   293,   295,   195,   951,   214,   492,   211,   676,   525,
-     287,   972,   947,   305,   251,   973,   962,   309,  1067,   196,
-     197,  1073,   198,   206,  1075,  1104,  1100,   975,   948,   949,
-     253,   950,   957,   789,   826,  1101,  1102,   802,   955,   528,
-     966,   212,   956,   217,   288,   939,   231,   306,   969,   791,
-     963,  1014,   937,   803,   209,  1015,   994,   967,   941,   224,
-     987,   976,   235,   961,   254,   986,   940,  1016,   539,   570,
-     965,  1065,   265,   943,   974,   942,   567,   252,   945,   944,
-    1007,   218,  1009,   792,   232,   219,  1006,   804,   233,   563,
-    1008,   541,   985,   225,   547,   820,   236,   984,   983,  1068,
-     555,  1017,  1000,  1003,   678,   591,   220,   677,   809,   234,
-    1023,  1072,   586,  1092,  1103,     0,   588,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     100,   143,   183,   200,   226,   240,   260,   303,   282,   301,
+     318,   338,   283,   302,   304,   201,   805,   223,   188,   220,
+     233,   244,   262,    40,   296,   314,   765,   339,   735,   970,
+     971,   202,   203,   972,   204,   205,   976,   982,    94,   181,
+     182,   316,   317,   756,   763,    33,   764,    34,   206,    35,
+     756,   207,   189,   221,   234,   245,   263,   623,   297,   315,
+      44,   340,   679,   680,   681,   682,   218,   229,   243,   261,
+     125,   276,   623,   362,   363,   227,   241,   379,   215,   254,
+     228,   242,   380,   108,   109,    46,   834,   110,   126,   127,
+     111,   112,   113,   651,    32,   126,   127,   275,   683,   785,
+     786,   787,   788,   789,   790,   657,   658,   659,   988,   989,
+      48,   882,    50,    99,   883,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   416,    52,   757,
+      54,   276,   417,   277,   278,   125,   420,   279,   280,   281,
+     885,   421,   432,   886,   126,   127,   225,   433,   126,   127,
+     435,   128,    56,   126,   127,   436,   129,   130,   131,   132,
+     133,  1100,   134,   442,  1101,  1102,  1103,   135,   443,   126,
+     127,   891,   197,   799,   892,   198,   136,    58,    95,   137,
+     470,   931,   700,    60,   932,   471,   138,    96,    97,    98,
+      62,   487,   490,    99,   139,   140,   488,   491,   141,   142,
+      99,   494,   416,   316,   317,    99,   495,   842,   970,   971,
+    1098,    64,   972,  1099,    91,   976,   982,    36,    37,    38,
+      39,   815,   816,   695,   126,   127,   675,   676,   696,   697,
+     698,   699,   700,   701,   702,   703,   704,   705,   706,   707,
+     708,   709,   710,   711,   712,    66,   490,   494,    68,    99,
+     125,   843,   844,    99,   420,   864,    70,   276,    99,   845,
+     865,   124,   358,   235,   236,   237,   238,   239,   126,   127,
+     800,   801,   802,   803,    99,   368,   369,   765,   953,   370,
+     114,   115,   116,   117,   118,   119,   120,   197,   805,   864,
+     198,   125,   888,   905,   866,   912,   371,   889,   906,   916,
+     913,   190,   372,   191,   917,   100,   378,   125,   387,   126,
+     127,   192,   193,   194,   195,   196,   128,   388,   276,   298,
+     277,   278,   299,   300,   389,   126,   127,   390,   197,    99,
+     391,   198,   135,   487,   452,   126,   127,   392,   918,   199,
+     864,   462,   143,   253,   393,  1054,   183,   394,   412,   254,
+     255,   256,   257,   258,   259,   432,   451,   419,   200,  1058,
+    1055,   226,   188,   427,  1059,   276,   470,   467,   240,   428,
+     201,  1066,   223,    99,   220,   496,   497,   233,   260,    99,
+     435,   453,   126,   127,   244,  1075,   202,   203,   282,   204,
+     205,   303,   283,   301,   262,   442,   189,   302,   304,   438,
+    1076,   440,  1081,   206,   296,   441,   207,  1082,   221,   314,
+    1115,   234,   456,   338,    99,  1116,   460,   461,   245,   464,
+     465,   218,   466,   472,   229,   475,   477,   478,   263,   339,
+      99,   243,   227,   215,  1067,  1068,  1069,   228,   297,   241,
+      99,   261,   481,   315,   242,   114,   115,   116,   117,   118,
+     119,   120,   511,   482,   123,   493,   125,   276,   498,   126,
+     127,   499,  1029,   340,  1030,  1031,   626,   627,   628,   629,
+    1042,  1043,  1044,  1045,   126,   127,   500,   193,   194,   501,
+     196,   128,   502,   503,   505,   506,   507,    99,   508,   509,
+     510,   515,   512,   197,   513,   514,   198,   516,   519,   520,
+     517,   521,   518,   522,   199,   523,   524,   610,   611,   612,
+     525,   526,   527,   528,   529,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,   332,   333,   334,   335,   530,   531,
+     532,   533,   534,   535,   143,   336,   337,   537,   536,   538,
+     539,   183,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,   188,   541,   542,
+     544,   545,   546,   547,    99,   548,   804,   817,   549,   338,
+     551,   550,   552,   553,   555,   557,   558,   559,   560,    99,
+     563,   561,   806,   818,   564,   339,   565,   566,   567,   568,
+     671,   189,   569,   571,   572,   573,   574,   575,   576,   579,
+     577,   583,   584,   587,   580,   581,   586,   588,   589,   590,
+     591,   592,   593,   690,   594,   595,   807,   819,   597,   340,
+     596,   598,   599,   600,   602,   604,   607,   770,   605,   613,
+     608,   609,   614,   615,   616,   617,   618,   619,   620,   621,
+     622,   625,   631,    34,   632,   633,   634,   648,   636,   635,
+     637,   638,   929,   649,   639,   640,   641,   643,   644,   646,
+     647,   678,   688,   653,   650,   652,   654,   655,   656,   660,
+     661,   689,   736,   662,   740,   663,   744,   664,   748,   752,
+     665,   666,   667,   774,   777,   781,   826,   830,   668,   669,
+     670,   672,   673,   674,   685,   838,   686,   687,   850,   851,
+     852,   853,   854,   856,   857,   861,   862,   863,   869,   919,
+     868,   872,   871,   874,   875,   877,   878,   881,   880,   938,
+     895,   884,   894,   898,   897,   899,   900,   901,   902,   903,
+     904,   909,   910,   911,   924,   939,   923,   927,   926,   933,
+     934,   935,   936,   937,   941,   940,   943,   946,   947,   948,
+     942,   986,   944,   945,  1013,   949,   950,  1014,  1019,   951,
+    1020,  1022,  1023,  1092,  1006,  1007,  1028,   642,  1056,  1008,
+    1062,  1057,  1063,  1064,  1009,  1065,  1079,  1084,  1010,  1011,
+    1015,  1087,  1016,  1089,  1017,  1094,  1047,  1085,  1048,  1049,
+    1050,  1112,  1051,  1052,  1113,  1114,   200,  1117,   762,   282,
+     303,   691,   301,   283,   540,   961,   302,   304,   201,   969,
+     223,   841,   220,   504,   543,   296,   990,   962,   314,   260,
+     991,   980,   318,   952,   202,   203,   694,   204,   205,  1053,
+     954,  1118,   993,   963,   964,   262,   965,   966,   804,  1060,
+    1071,   206,   817,  1004,   207,  1072,   221,  1073,   226,   297,
+     967,   240,   315,   968,   806,   981,  1032,   987,   818,   218,
+    1033,  1074,  1077,  1091,   233,  1088,   994,   244,   979,   263,
+    1093,   215,  1034,   985,   984,  1005,   973,  1012,   554,   992,
+     975,   974,   261,   585,   956,   955,   983,  1122,   807,  1083,
+     274,   578,   819,   958,   957,   960,   959,  1119,   234,  1025,
+    1024,   245,   556,   582,  1026,   562,  1035,  1027,  1003,   835,
+     570,   229,  1002,  1120,   243,  1001,  1086,   693,   601,   227,
+    1021,  1018,   241,   824,   228,  1041,  1090,   242,  1110,   603,
+    1121,   606,     0,     0,   692,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   946,     0,     0,     0,
-     951,     0,   972,     0,     0,     0,   973,     0,   947,     0,
-       0,     0,   962,     0,     0,     0,     0,     0,   975,  1014,
-       0,     0,     0,  1015,   948,   949,     0,   950,   957,     0,
-       0,     0,     0,     0,   955,  1016,     0,     0,   956,     0,
-       0,     0,     0,     0,     0,     0,   963,     0,     0,     0,
-       0,     0,   976,     0,     0,     0,     0,     0,     0,   961,
-       0,     0,     0,     0,     0,   974,     0,     0,     0,  1017
+       0,     0,     0,     0,   961,     0,     0,     0,   969,     0,
+     990,     0,     0,     0,   991,     0,   962,     0,     0,     0,
+     980,     0,     0,     0,     0,     0,   993,  1032,     0,     0,
+       0,  1033,   963,   964,     0,   965,   966,     0,     0,     0,
+       0,     0,     0,  1034,     0,     0,     0,     0,     0,   967,
+       0,     0,   968,     0,   981,     0,     0,     0,     0,     0,
+     994,     0,     0,     0,     0,     0,     0,   979,     0,     0,
+       0,     0,     0,   992,     0,   973,     0,  1035,     0,   975,
+     974
   };
 
   const short
   Dhcp6Parser::yycheck_[] =
   {
       74,    75,    76,    77,    78,    79,    80,    83,    82,    83,
-      84,    85,    82,    83,    83,    77,   625,    77,    76,    77,
-      78,    79,    80,   619,    82,    83,   602,    85,   864,   864,
-     864,    77,    77,   864,    77,    77,   864,    10,    16,    17,
-     138,   139,    78,    79,    93,    95,    78,    79,   508,   102,
-     103,   100,    76,    77,    78,    79,    80,     0,    82,    83,
-      17,    85,    21,   523,   536,    52,    77,    78,    79,    80,
-       5,     7,     7,     7,     9,     7,   548,   549,   550,   174,
-      11,    12,    69,    70,    15,   102,   103,    18,    19,    20,
-      51,    69,    70,    52,     7,    54,    55,     3,     7,    58,
-      59,    60,     8,    64,    65,    66,    67,    68,    69,    70,
-      69,    70,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,   174,     3,    51,   174,     6,     3,    88,    51,    52,
-      91,     8,   150,     7,    62,   153,   154,   155,    69,    70,
-       7,    69,    70,     3,     3,    76,    69,    70,     8,     8,
-      81,    82,    83,    84,    85,     7,    87,    13,    14,    21,
-      88,    92,   149,    91,   151,   152,    89,    90,    30,     3,
-     101,     7,     6,   104,   147,   141,   142,   143,   144,     3,
-     111,     3,     6,   156,   157,   158,     8,   174,   119,   120,
-       3,     7,   123,   124,     3,     8,   174,    69,    70,     8,
-       3,   174,     7,     6,  1040,  1040,  1040,    69,    70,  1040,
-       7,   177,  1040,   174,    21,   174,   112,   113,   114,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,     7,     7,    50,   174,
-     175,   176,   177,   174,   148,    52,   174,    51,     6,   121,
-     122,   174,     3,   115,   116,   117,   118,   105,   106,   107,
-     108,   109,   110,     3,     3,    69,    70,     3,     8,     8,
-       3,     8,     8,     4,   870,     8,   852,    43,    44,    45,
-      46,     3,     3,    87,     3,    51,     8,     8,   897,    93,
-      94,    95,    96,    97,    98,    61,   370,    63,    77,    78,
-      79,    80,   174,    69,    70,    71,    72,    73,    74,    75,
-      76,     4,   174,     4,    52,    53,    54,    55,    56,    57,
-       4,     4,    88,     3,     3,    91,    92,     4,     8,     8,
-     404,    69,    70,    99,   408,     3,     3,     3,     3,     3,
-       8,     8,     8,     8,     8,     4,   420,     3,     3,   423,
-     408,     4,     8,     8,     3,     3,   430,     4,   420,     8,
-     420,     4,   420,     3,     3,   423,   440,   174,     8,     8,
-     174,     4,   430,     4,   420,   420,   450,   420,   420,   455,
-     450,   455,   440,     3,   408,   455,   455,   423,     8,     4,
-       3,   423,   450,     3,   430,     8,   420,   455,   430,   423,
-       3,   475,     3,   360,   361,     8,   430,     8,   174,   420,
-      95,    96,   423,    98,     4,     3,   440,   475,     6,   430,
-      22,    23,    24,    25,     8,     8,   450,     4,     4,   440,
-       8,   455,    43,    44,    45,    46,   174,     4,    49,     4,
-      51,    52,     8,     3,    69,    70,     4,     4,     4,     4,
-       4,   475,     4,     4,   174,     4,     4,     4,    69,    70,
-       4,    72,    73,     4,    75,    76,     4,     4,     4,     4,
-       4,     4,   175,   175,   175,   175,   175,    88,     4,     4,
-      91,     4,     4,     4,     4,     4,     4,     4,    99,     4,
-       4,     4,     4,     4,     4,     4,     4,   175,     4,     4,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,     4,     4,   177,     4,     4,     4,   593,
-     145,   146,     4,     4,   175,   177,   600,     4,     4,     4,
-       4,     4,   489,   490,   491,     4,     4,   175,   175,   175,
-       4,     4,   600,     4,     4,     4,     4,     4,     4,   174,
-       4,   625,   626,   175,   628,     4,     4,     4,   177,   177,
-     177,     4,     4,   174,     4,   177,     4,   625,   626,   175,
-     628,     4,     4,     4,     4,   175,   600,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   177,     4,   175,     4,     4,   177,     4,     4,
-     175,   625,   626,     4,   628,     7,   174,     7,     7,     7,
-       7,     7,   569,     5,     5,   174,     5,     5,     3,     5,
-       7,   174,     5,     5,     5,     3,     5,     7,     5,     5,
-     175,   174,     7,     7,     7,   592,     7,     5,     5,     5,
-       5,     5,   174,   174,   174,     7,   174,   174,   140,     7,
-     174,     7,     7,     7,     7,     7,     7,    86,   174,     7,
-       7,     7,     7,     4,     4,     4,     4,   174,     4,     4,
-     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
-     174,   174,     4,     4,     4,   174,     4,     6,     4,   174,
-     174,     6,     6,     3,     6,     3,     3,     6,   177,     3,
-       6,     6,     3,     6,     4,     4,     4,     4,     4,     4,
-       4,     4,   174,     3,     6,     6,     3,     3,     6,     8,
-       4,     4,     4,     4,   175,   177,     4,     4,     4,   175,
-     175,   175,     4,     4,   175,     4,   175,     4,     4,   175,
-     177,   175,     4,     6,     4,     4,     3,   175,   175,   175,
-     175,   175,   175,   175,   174,   174,   174,   174,   174,   174,
-     174,     8,     8,     8,   174,     8,     4,   174,     4,     4,
-     174,   174,     4,     7,     5,     4,     4,     4,     4,   174,
-     174,   855,   175,   618,   858,   861,   600,   861,   858,   523,
-     864,   861,   861,   855,   864,   855,   370,   855,   593,   404,
-     858,   875,   864,   861,   878,   875,   864,   881,   177,   855,
-     855,   174,   855,   855,   174,   174,   177,   875,   864,   864,
-     878,   864,   864,   897,   674,   175,   175,   901,   864,   408,
-     867,   855,   864,   907,   858,   854,   910,   861,   873,   897,
-     864,   915,   849,   901,   855,   915,   890,   870,   857,   907,
-     883,   875,   910,   864,   878,   881,   855,   915,   420,   458,
-     866,  1040,    81,   860,   875,   858,   455,   878,   863,   861,
-     909,   907,   912,   897,   910,   907,   907,   901,   910,   450,
-     910,   423,   880,   907,   430,   638,   910,   878,   876,  1046,
-     440,   915,   897,   901,   599,   482,   907,   594,   628,   910,
-     916,  1063,   475,  1080,  1097,    -1,   478,    -1,    -1,    -1,
+      84,    85,    82,    83,    83,    77,   640,    77,    76,    77,
+      78,    79,    80,    17,    82,    83,   634,    85,   617,   879,
+     879,    77,    77,   879,    77,    77,   879,   879,    10,    16,
+      17,   105,   106,    98,    99,     5,   101,     7,    77,     9,
+      98,    77,    76,    77,    78,    79,    80,   523,    82,    83,
+       7,    85,   144,   145,   146,   147,    77,    78,    79,    80,
+      54,    55,   538,    13,    14,    78,    79,     3,    77,    96,
+      78,    79,     8,    11,    12,     7,   103,    15,    72,    73,
+      18,    19,    20,   551,     0,    72,    73,    21,   180,   108,
+     109,   110,   111,   112,   113,   563,   564,   565,    92,    93,
+       7,     3,     7,   177,     6,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,     3,     7,   177,
+       7,    55,     8,    57,    58,    54,     3,    61,    62,    63,
+       3,     8,     3,     6,    72,    73,    65,     8,    72,    73,
+       3,    79,     7,    72,    73,     8,    84,    85,    86,    87,
+      88,   153,    90,     3,   156,   157,   158,    95,     8,    72,
+      73,     3,    91,    21,     6,    94,   104,     7,   150,   107,
+       3,     3,    30,     7,     6,     8,   114,   159,   160,   161,
+       7,     3,     3,   177,   122,   123,     8,     8,   126,   127,
+     177,     3,     3,   105,   106,   177,     8,     8,  1058,  1058,
+       3,     7,  1058,     6,   177,  1058,  1058,   177,   178,   179,
+     180,   124,   125,    21,    72,    73,   141,   142,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,     7,     3,     3,     7,   177,
+      54,     8,     8,   177,     3,     3,     7,    55,   177,     8,
+       8,    53,   151,    67,    68,    69,    70,    71,    72,    73,
+     118,   119,   120,   121,   177,     6,     3,   885,   867,     4,
+      43,    44,    45,    46,    47,    48,    49,    91,   912,     3,
+      94,    54,     3,     3,     8,     3,     8,     8,     8,     3,
+       8,    64,     3,    66,     8,   379,     4,    54,     4,    72,
+      73,    74,    75,    76,    77,    78,    79,     4,    55,    56,
+      57,    58,    59,    60,     4,    72,    73,     4,    91,   177,
+       4,    94,    95,     3,     3,    72,    73,     4,     8,   102,
+       3,     3,   416,    90,     4,     8,   420,     4,     4,    96,
+      97,    98,    99,   100,   101,     3,     8,     4,   432,     3,
+       8,   435,   420,     4,     8,    55,     3,     3,   442,     4,
+     432,     8,   432,   177,   432,   369,   370,   435,   452,   177,
+       3,     8,    72,    73,   442,     8,   432,   432,   462,   432,
+     432,   467,   462,   467,   452,     3,   420,   467,   467,     4,
+       8,     4,     3,   432,   462,     4,   432,     8,   432,   467,
+       3,   435,     4,   487,   177,     8,     4,     8,   442,     4,
+       4,   432,     8,     4,   435,     4,     4,     4,   452,   487,
+     177,   442,   435,   432,   115,   116,   117,   435,   462,   442,
+     177,   452,     4,   467,   442,    43,    44,    45,    46,    47,
+      48,    49,   178,     4,    52,     4,    54,    55,   177,    72,
+      73,     4,   152,   487,   154,   155,    80,    81,    82,    83,
+      22,    23,    24,    25,    72,    73,     4,    75,    76,     4,
+      78,    79,     4,     4,     4,     4,     4,   177,     4,     4,
+       4,   180,   178,    91,   178,   178,    94,   179,     4,     4,
+     179,     4,   178,     4,   102,     4,     4,   501,   502,   503,
+       4,     4,     4,     4,     4,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,     4,     4,
+       4,     4,     4,     4,   608,   148,   149,     4,   178,     4,
+       4,   615,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   615,     4,   180,
+       4,     4,     4,     4,   177,     4,   640,   641,   178,   643,
+       4,   180,     4,     4,     4,     4,   178,     4,   178,   177,
+       4,   178,   640,   641,     4,   643,     4,     4,     4,     4,
+     584,   615,     4,     4,     4,   178,     4,     4,     4,     4,
+     180,     4,     4,     4,   180,   180,   180,     4,   178,     4,
+     178,   178,     4,   607,     4,   180,   640,   641,     4,   643,
+     180,     4,     4,     4,     4,     4,     4,    89,   178,   177,
+       7,     7,     7,     7,     7,     7,     5,   177,     5,     5,
+       5,   177,     5,     7,     5,     5,     5,   177,     5,     7,
+       5,     5,     8,   177,     7,     7,     7,     7,     5,     5,
+       5,   143,     5,     7,   177,   177,   177,   177,   177,   177,
+     177,     5,     7,   177,     7,   177,     7,   177,     7,     7,
+     177,   177,   177,     7,     7,     7,     7,     7,   177,   177,
+     177,   177,   177,   177,   177,     7,   177,   177,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     3,   177,
+       6,     3,     6,     6,     3,     6,     3,     3,     6,   178,
+       3,     6,     6,     3,     6,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     3,   180,     6,     3,     6,     6,
+       4,     4,     4,     4,   180,   178,     4,     4,     4,     4,
+     178,     4,   178,   178,     4,   178,   178,     4,     4,   180,
+       4,     6,     3,     5,   178,   178,     4,   538,     8,   178,
+       4,     8,     8,     3,   178,     8,     4,     4,   178,   178,
+     178,     4,   178,     4,   178,     7,   177,   180,   177,   177,
+     177,     4,   177,   177,     4,     4,   870,     4,   633,   873,
+     876,   608,   876,   873,   416,   879,   876,   876,   870,   879,
+     870,   689,   870,   379,   420,   873,   890,   879,   876,   893,
+     890,   879,   896,   864,   870,   870,   615,   870,   870,   177,
+     869,   180,   890,   879,   879,   893,   879,   879,   912,   177,
+     177,   870,   916,   896,   870,   177,   870,   177,   922,   873,
+     879,   925,   876,   879,   912,   879,   930,   888,   916,   870,
+     930,   177,   177,   177,   922,   178,   890,   925,   879,   893,
+     177,   870,   930,   885,   882,   898,   879,   905,   432,   890,
+     879,   879,   893,   470,   872,   870,   881,   177,   912,  1058,
+      81,   462,   916,   875,   873,   878,   876,   178,   922,   924,
+     922,   925,   435,   467,   925,   442,   930,   927,   895,   653,
+     452,   922,   893,   178,   925,   891,  1064,   614,   487,   922,
+     916,   912,   925,   643,   922,   931,  1081,   925,  1098,   490,
+    1115,   494,    -1,    -1,   609,    -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,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,
-    1040,    -1,  1046,    -1,    -1,    -1,  1046,    -1,  1040,    -1,
-      -1,    -1,  1040,    -1,    -1,    -1,    -1,    -1,  1046,  1063,
-      -1,    -1,    -1,  1063,  1040,  1040,    -1,  1040,  1040,    -1,
-      -1,    -1,    -1,    -1,  1040,  1063,    -1,    -1,  1040,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,
-      -1,    -1,  1046,    -1,    -1,    -1,    -1,    -1,    -1,  1040,
-      -1,    -1,    -1,    -1,    -1,  1046,    -1,    -1,    -1,  1063
+      -1,    -1,    -1,    -1,  1058,    -1,    -1,    -1,  1058,    -1,
+    1064,    -1,    -1,    -1,  1064,    -1,  1058,    -1,    -1,    -1,
+    1058,    -1,    -1,    -1,    -1,    -1,  1064,  1081,    -1,    -1,
+      -1,  1081,  1058,  1058,    -1,  1058,  1058,    -1,    -1,    -1,
+      -1,    -1,    -1,  1081,    -1,    -1,    -1,    -1,    -1,  1058,
+      -1,    -1,  1058,    -1,  1058,    -1,    -1,    -1,    -1,    -1,
+    1064,    -1,    -1,    -1,    -1,    -1,    -1,  1058,    -1,    -1,
+      -1,    -1,    -1,  1064,    -1,  1058,    -1,  1081,    -1,  1058,
+    1058
   };
 
   const unsigned short
   Dhcp6Parser::yystos_[] =
   {
-       0,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,     0,     5,     7,     9,   174,   175,   176,   177,
-     195,   196,   197,   202,     7,   211,     7,   217,     7,   232,
-       7,   330,     7,   407,     7,   423,     7,   440,     7,   359,
-       7,   365,     7,   389,     7,   306,     7,   501,     7,   548,
-       7,   539,   203,   198,   212,   218,   233,   331,   408,   424,
-     441,   360,   366,   390,   307,   502,   549,   540,   195,   204,
-     205,   174,   200,   201,    10,   147,   156,   157,   158,   174,
-     210,   213,   214,   215,   531,   533,   535,   546,    11,    12,
+       0,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,     0,     5,     7,     9,   177,   178,   179,   180,
+     198,   199,   200,   205,     7,   214,     7,   220,     7,   238,
+       7,   336,     7,   413,     7,   429,     7,   446,     7,   365,
+       7,   371,     7,   395,     7,   312,     7,   507,     7,   554,
+       7,   545,   206,   201,   215,   221,   239,   337,   414,   430,
+     447,   366,   372,   396,   313,   508,   555,   546,   198,   207,
+     208,   177,   203,   204,    10,   150,   159,   160,   161,   177,
+     213,   216,   217,   218,   537,   539,   541,   552,    11,    12,
       15,    18,    19,    20,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    69,    70,    76,    81,    82,    83,    84,
-      85,    87,    92,   101,   104,   111,   119,   120,   123,   124,
-     210,   219,   220,   221,   223,   224,   225,   226,   227,   228,
-     230,   239,   241,   243,   280,   286,   292,   298,   300,   314,
-     324,   344,   349,   357,   383,   413,   415,   434,   464,   476,
-     488,   489,   497,   499,   537,    16,    17,   210,   234,   235,
-     236,   238,   413,   415,    61,    63,    71,    72,    73,    74,
-      75,    88,    91,    99,   210,   223,   224,   225,   226,   332,
-     333,   334,   336,   338,   340,   342,   344,   347,   348,   383,
-     401,   413,   415,   417,   434,   459,    62,   210,   340,   342,
-     383,   409,   410,   411,   413,   415,    64,    65,    66,    67,
-      68,   210,   340,   342,   383,   413,   415,   425,   426,   427,
-     429,   430,   432,   433,    87,    93,    94,    95,    96,    97,
-      98,   210,   383,   413,   415,   442,   443,   444,   445,   447,
-     449,   451,   453,   455,   457,   357,    21,    52,    54,    55,
-      58,    59,    60,   210,   261,   367,   368,   369,   370,   371,
-     372,   373,   375,   377,   379,   380,   382,   413,   415,    53,
-      56,    57,   210,   261,   371,   377,   391,   392,   393,   394,
-     395,   397,   398,   399,   400,   413,   415,   102,   103,   210,
-     308,   309,   310,   312,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   145,   146,   210,
-     413,   415,   503,   504,   505,   506,   508,   510,   511,   513,
-     514,   515,   518,   520,   521,   522,   525,   527,   529,   148,
-     550,   551,   552,    13,    14,   541,   542,   543,   545,     6,
-       3,     4,     8,     3,   216,   547,   532,   534,   536,     4,
-       3,     8,   222,   538,   231,   240,   242,   244,     4,     4,
-       4,     4,     4,   229,   325,   358,   384,   414,   416,   345,
-     350,   287,   299,   293,   281,   465,   435,   301,   315,   477,
-       4,   490,   498,   500,     3,     8,   237,     4,     3,     8,
-     402,   418,   335,   337,   339,     4,     4,   343,   341,   460,
-       3,     8,   412,     3,     8,   428,     4,   431,     4,     4,
-       3,     8,   458,   446,   448,   450,   452,   454,   456,     8,
-       3,     8,   374,   262,     4,   378,   376,   381,     4,     8,
-       3,   396,     4,     4,     8,     3,   311,   313,     3,     8,
-       4,   507,   509,     4,   512,     4,     4,   516,   519,     4,
-       4,   523,   526,   528,   530,     3,     8,   553,     3,     8,
-     544,     4,     3,     8,   195,   195,   174,     4,     4,     4,
-       4,     4,   214,     4,     4,     4,     4,     4,     4,   175,
-     175,   175,   175,   175,     4,     4,     4,     4,     4,     4,
+      49,    50,    51,    52,    53,    54,    72,    73,    79,    84,
+      85,    86,    87,    88,    90,    95,   104,   107,   114,   122,
+     123,   126,   127,   213,   222,   223,   224,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   236,   245,   247,   249,
+     286,   292,   298,   304,   306,   320,   330,   350,   355,   363,
+     389,   419,   421,   440,   470,   482,   494,   495,   503,   505,
+     543,    16,    17,   213,   240,   241,   242,   244,   419,   421,
+      64,    66,    74,    75,    76,    77,    78,    91,    94,   102,
+     213,   226,   227,   228,   229,   230,   231,   232,   338,   339,
+     340,   342,   344,   346,   348,   350,   353,   354,   389,   407,
+     419,   421,   423,   440,   465,    65,   213,   346,   348,   389,
+     415,   416,   417,   419,   421,    67,    68,    69,    70,    71,
+     213,   346,   348,   389,   419,   421,   431,   432,   433,   435,
+     436,   438,   439,    90,    96,    97,    98,    99,   100,   101,
+     213,   389,   419,   421,   448,   449,   450,   451,   453,   455,
+     457,   459,   461,   463,   363,    21,    55,    57,    58,    61,
+      62,    63,   213,   267,   373,   374,   375,   376,   377,   378,
+     379,   381,   383,   385,   386,   388,   419,   421,    56,    59,
+      60,   213,   267,   377,   383,   397,   398,   399,   400,   401,
+     403,   404,   405,   406,   419,   421,   105,   106,   213,   314,
+     315,   316,   318,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   148,   149,   213,   419,
+     421,   509,   510,   511,   512,   514,   516,   517,   519,   520,
+     521,   524,   526,   527,   528,   531,   533,   535,   151,   556,
+     557,   558,    13,    14,   547,   548,   549,   551,     6,     3,
+       4,     8,     3,   219,   553,   538,   540,   542,     4,     3,
+       8,   225,   544,   237,   246,   248,   250,     4,     4,     4,
+       4,     4,     4,     4,     4,   235,   331,   364,   390,   420,
+     422,   351,   356,   293,   305,   299,   287,   471,   441,   307,
+     321,   483,     4,   496,   504,   506,     3,     8,   243,     4,
+       3,     8,   408,   424,   341,   343,   345,     4,     4,   349,
+     347,   466,     3,     8,   418,     3,     8,   434,     4,   437,
+       4,     4,     3,     8,   464,   452,   454,   456,   458,   460,
+     462,     8,     3,     8,   380,   268,     4,   384,   382,   387,
+       4,     8,     3,   402,     4,     4,     8,     3,   317,   319,
+       3,     8,     4,   513,   515,     4,   518,     4,     4,   522,
+     525,     4,     4,   529,   532,   534,   536,     3,     8,   559,
+       3,     8,   550,     4,     3,     8,   198,   198,   177,     4,
+       4,     4,     4,     4,   217,     4,     4,     4,     4,     4,
+       4,   178,   178,   178,   178,   180,   179,   179,   178,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   175,     4,     4,     4,   220,     4,   177,   235,     4,
-       4,     4,     4,     4,   175,   177,     4,     4,     4,   333,
-       4,   410,     4,   175,     4,   175,   175,   426,     4,     4,
-       4,     4,     4,     4,     4,   444,     4,     4,   175,     4,
-       4,     4,   177,   369,     4,   177,   177,   393,     4,     4,
-     309,   177,     4,     4,   175,     4,   175,   175,     4,     4,
-     177,   177,     4,     4,     4,     4,   504,     4,   551,     4,
-     175,   542,     4,     7,     7,   195,   195,   195,   174,     7,
-       7,     7,     7,     5,   174,     5,     5,     5,   197,   199,
-     174,    77,    78,    79,    80,   346,     5,     5,     5,     5,
-       7,     5,     5,     5,     7,     7,     7,   199,     7,     5,
-     206,     5,     5,   174,   174,   174,   206,   174,     7,   174,
-     174,   174,   206,   206,   206,   174,   174,   174,   174,   174,
-     174,   174,   174,   174,   174,   174,   195,   174,   174,   174,
-     138,   139,   517,   140,   141,   142,   143,   144,   177,   524,
-     174,   174,   174,     5,     5,   195,   219,   550,   541,   234,
-      21,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,   210,   249,
-     250,   251,   254,   256,   258,   260,   261,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   273,   274,   276,   278,
-     249,     7,   245,   246,   247,     7,   326,   327,   328,     7,
-     361,   362,   363,     7,   385,   386,   387,     7,   351,   352,
-     353,    95,   174,   288,   289,   290,   291,   204,    96,    98,
-     290,   294,   295,   296,   297,    86,   282,   283,   284,     7,
-     466,   467,     7,   436,   437,   438,     7,   302,   303,   304,
-     105,   106,   107,   108,   109,   110,   316,   317,   318,   319,
-     320,   321,   322,   323,    21,   115,   116,   117,   118,   210,
-     263,   413,   415,   478,   479,   480,   483,   484,   486,   487,
-     121,   122,   210,   413,   415,   491,   492,   493,   495,   503,
-     207,     7,   403,   404,   405,     7,   419,   420,   421,   100,
-     445,   461,   462,     7,   554,   555,   245,     8,     8,     8,
-       8,   252,   255,   257,   259,     4,     4,     4,     4,     4,
-     272,     4,     4,   275,   277,   279,     4,     4,     4,     3,
-       8,     8,   248,     6,     3,   329,     6,     3,   364,     6,
-       3,   388,     6,     3,   354,     6,     3,     3,     6,     6,
-       3,     6,   285,     3,     8,   468,     3,     6,   439,     6,
-       3,   305,     6,     3,     4,     4,     4,     4,     4,     4,
-       3,     8,   481,   485,     4,     4,     4,     3,     8,   494,
-     496,     3,     8,     8,   174,   208,   209,   406,     6,     3,
-     422,     6,     3,   463,     8,   556,     3,     6,     6,     4,
-       4,     4,     4,   175,   177,   175,   177,   175,     4,   175,
-     175,     4,     4,     4,   175,   175,   177,   250,   249,   247,
-     332,   328,   367,   363,   391,   387,   210,   223,   224,   225,
-     226,   261,   324,   336,   338,   340,   342,   344,   348,   355,
-     356,   383,   413,   415,   459,   353,   289,   295,     4,   283,
-      89,    90,   210,   261,   383,   413,   415,   469,   470,   471,
-     472,   473,   475,   467,   442,   438,   308,   304,   175,   175,
-     175,   175,   175,   175,   317,     4,     4,   175,   175,   175,
-     479,     4,     4,   492,     6,     3,   409,   405,   425,   421,
-       4,   149,   151,   152,   210,   261,   413,   415,   557,   558,
-     559,   560,   562,   555,    22,    23,    24,    25,   253,   174,
-     174,   174,   174,   174,   174,   174,     8,     8,     8,     8,
-       3,     8,   174,   474,     4,     8,     3,     8,     8,   112,
-     113,   114,   482,   174,   174,   174,   174,     8,     8,   174,
-     563,     4,   561,     3,     8,   356,     4,   177,   471,     4,
-     175,     4,   558,   174,     5,   174,     7,   564,   565,   566,
-       3,     6,   150,   153,   154,   155,   567,   568,   569,   571,
-     572,   573,   565,   570,     4,     4,     4,     3,     8,     4,
-     177,   175,   175,   568,   174
+       4,     4,     4,     4,     4,     4,   178,     4,     4,     4,
+     223,     4,   180,   241,     4,     4,     4,     4,     4,   178,
+     180,     4,     4,     4,   339,     4,   416,     4,   178,     4,
+     178,   178,   432,     4,     4,     4,     4,     4,     4,     4,
+     450,     4,     4,   178,     4,     4,     4,   180,   375,     4,
+     180,   180,   399,     4,     4,   315,   180,     4,     4,   178,
+       4,   178,   178,     4,     4,   180,   180,     4,     4,     4,
+       4,   510,     4,   557,     4,   178,   548,     4,     7,     7,
+     198,   198,   198,   177,     7,     7,     7,     7,     5,   177,
+       5,     5,     5,   200,   202,   177,    80,    81,    82,    83,
+     352,     5,     5,     5,     5,     7,     5,     5,     5,     7,
+       7,     7,   202,     7,     5,   209,     5,     5,   177,   177,
+     177,   209,   177,     7,   177,   177,   177,   209,   209,   209,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   198,   177,   177,   177,   141,   142,   523,   143,   144,
+     145,   146,   147,   180,   530,   177,   177,   177,     5,     5,
+     198,   222,   556,   547,   240,    21,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,   213,   255,   256,   257,   260,   262,   264,
+     266,   267,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   279,   280,   282,   284,   255,     7,   251,   252,   253,
+       7,   332,   333,   334,     7,   367,   368,   369,     7,   391,
+     392,   393,     7,   357,   358,   359,    98,   177,   294,   295,
+     296,   297,   207,    99,   101,   296,   300,   301,   302,   303,
+      89,   288,   289,   290,     7,   472,   473,     7,   442,   443,
+     444,     7,   308,   309,   310,   108,   109,   110,   111,   112,
+     113,   322,   323,   324,   325,   326,   327,   328,   329,    21,
+     118,   119,   120,   121,   213,   269,   419,   421,   484,   485,
+     486,   489,   490,   492,   493,   124,   125,   213,   419,   421,
+     497,   498,   499,   501,   509,   210,     7,   409,   410,   411,
+       7,   425,   426,   427,   103,   451,   467,   468,     7,   560,
+     561,   251,     8,     8,     8,     8,   258,   261,   263,   265,
+       4,     4,     4,     4,     4,   278,     4,     4,   281,   283,
+     285,     4,     4,     4,     3,     8,     8,   254,     6,     3,
+     335,     6,     3,   370,     6,     3,   394,     6,     3,   360,
+       6,     3,     3,     6,     6,     3,     6,   291,     3,     8,
+     474,     3,     6,   445,     6,     3,   311,     6,     3,     4,
+       4,     4,     4,     4,     4,     3,     8,   487,   491,     4,
+       4,     4,     3,     8,   500,   502,     3,     8,     8,   177,
+     211,   212,   412,     6,     3,   428,     6,     3,   469,     8,
+     562,     3,     6,     6,     4,     4,     4,     4,   178,   180,
+     178,   180,   178,     4,   178,   178,     4,     4,     4,   178,
+     178,   180,   256,   255,   253,   338,   334,   373,   369,   397,
+     393,   213,   226,   227,   228,   229,   230,   231,   232,   267,
+     330,   342,   344,   346,   348,   350,   354,   361,   362,   389,
+     419,   421,   465,   359,   295,   301,     4,   289,    92,    93,
+     213,   267,   389,   419,   421,   475,   476,   477,   478,   479,
+     481,   473,   448,   444,   314,   310,   178,   178,   178,   178,
+     178,   178,   323,     4,     4,   178,   178,   178,   485,     4,
+       4,   498,     6,     3,   415,   411,   431,   427,     4,   152,
+     154,   155,   213,   267,   419,   421,   563,   564,   565,   566,
+     568,   561,    22,    23,    24,    25,   259,   177,   177,   177,
+     177,   177,   177,   177,     8,     8,     8,     8,     3,     8,
+     177,   480,     4,     8,     3,     8,     8,   115,   116,   117,
+     488,   177,   177,   177,   177,     8,     8,   177,   569,     4,
+     567,     3,     8,   362,     4,   180,   477,     4,   178,     4,
+     564,   177,     5,   177,     7,   570,   571,   572,     3,     6,
+     153,   156,   157,   158,   573,   574,   575,   577,   578,   579,
+     571,   576,     4,     4,     4,     3,     8,     4,   180,   178,
+     178,   574,   177
   };
 
   const unsigned short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   178,   180,   179,   181,   179,   182,   179,   183,   179,
-     184,   179,   185,   179,   186,   179,   187,   179,   188,   179,
-     189,   179,   190,   179,   191,   179,   192,   179,   193,   179,
-     194,   179,   195,   195,   195,   195,   195,   195,   195,   196,
-     198,   197,   199,   200,   200,   201,   201,   203,   202,   204,
-     204,   205,   205,   207,   206,   208,   208,   209,   209,   210,
-     212,   211,   213,   213,   214,   214,   214,   214,   214,   214,
-     216,   215,   218,   217,   219,   219,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   222,
-     221,   223,   224,   225,   226,   227,   229,   228,   231,   230,
-     233,   232,   234,   234,   235,   235,   235,   235,   235,   237,
-     236,   238,   240,   239,   242,   241,   244,   243,   245,   245,
-     246,   246,   248,   247,   249,   249,   250,   250,   250,   250,
-     250,   250,   250,   250,   250,   250,   250,   250,   250,   250,
-     250,   250,   250,   250,   250,   250,   252,   251,   253,   253,
-     253,   253,   255,   254,   257,   256,   259,   258,   260,   262,
-     261,   263,   264,   265,   266,   267,   268,   269,   270,   272,
-     271,   273,   275,   274,   277,   276,   279,   278,   281,   280,
-     282,   282,   283,   285,   284,   287,   286,   288,   288,   289,
-     289,   290,   291,   293,   292,   294,   294,   295,   295,   295,
-     296,   297,   299,   298,   301,   300,   302,   302,   303,   303,
-     305,   304,   307,   306,   308,   308,   308,   309,   309,   311,
-     310,   313,   312,   315,   314,   316,   316,   317,   317,   317,
-     317,   317,   317,   318,   319,   320,   321,   322,   323,   325,
-     324,   326,   326,   327,   327,   329,   328,   331,   330,   332,
-     332,   333,   333,   333,   333,   333,   333,   333,   333,   333,
-     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
-     333,   335,   334,   337,   336,   339,   338,   341,   340,   343,
-     342,   345,   344,   346,   346,   346,   346,   347,   348,   350,
-     349,   351,   351,   352,   352,   354,   353,   355,   355,   356,
-     356,   356,   356,   356,   356,   356,   356,   356,   356,   356,
-     356,   356,   356,   356,   356,   356,   358,   357,   360,   359,
-     361,   361,   362,   362,   364,   363,   366,   365,   367,   367,
-     368,   368,   369,   369,   369,   369,   369,   369,   369,   369,
-     369,   369,   370,   371,   372,   374,   373,   376,   375,   378,
-     377,   379,   381,   380,   382,   384,   383,   385,   385,   386,
-     386,   388,   387,   390,   389,   391,   391,   392,   392,   393,
-     393,   393,   393,   393,   393,   393,   393,   393,   394,   396,
-     395,   397,   398,   399,   400,   402,   401,   403,   403,   404,
-     404,   406,   405,   408,   407,   409,   409,   410,   410,   410,
-     410,   410,   410,   410,   412,   411,   414,   413,   416,   415,
-     418,   417,   419,   419,   420,   420,   422,   421,   424,   423,
-     425,   425,   426,   426,   426,   426,   426,   426,   426,   426,
-     426,   426,   426,   428,   427,   429,   431,   430,   432,   433,
-     435,   434,   436,   436,   437,   437,   439,   438,   441,   440,
-     442,   442,   443,   443,   444,   444,   444,   444,   444,   444,
-     444,   444,   444,   444,   444,   446,   445,   448,   447,   450,
-     449,   452,   451,   454,   453,   456,   455,   458,   457,   460,
-     459,   461,   461,   463,   462,   465,   464,   466,   466,   468,
-     467,   469,   469,   470,   470,   471,   471,   471,   471,   471,
-     471,   471,   472,   474,   473,   475,   477,   476,   478,   478,
-     479,   479,   479,   479,   479,   479,   479,   479,   479,   481,
-     480,   482,   482,   482,   483,   485,   484,   486,   487,   488,
-     490,   489,   491,   491,   492,   492,   492,   492,   492,   494,
-     493,   496,   495,   498,   497,   500,   499,   502,   501,   503,
-     503,   504,   504,   504,   504,   504,   504,   504,   504,   504,
-     504,   504,   504,   504,   504,   504,   504,   504,   504,   505,
-     507,   506,   509,   508,   510,   512,   511,   513,   514,   516,
-     515,   517,   517,   519,   518,   520,   521,   523,   522,   524,
-     524,   524,   524,   524,   526,   525,   528,   527,   530,   529,
-     532,   531,   534,   533,   536,   535,   538,   537,   540,   539,
-     541,   541,   542,   542,   544,   543,   545,   547,   546,   549,
-     548,   550,   550,   551,   553,   552,   554,   554,   556,   555,
-     557,   557,   558,   558,   558,   558,   558,   558,   558,   559,
-     561,   560,   563,   562,   564,   564,   566,   565,   567,   567,
-     568,   568,   568,   568,   570,   569,   571,   572,   573
+       0,   181,   183,   182,   184,   182,   185,   182,   186,   182,
+     187,   182,   188,   182,   189,   182,   190,   182,   191,   182,
+     192,   182,   193,   182,   194,   182,   195,   182,   196,   182,
+     197,   182,   198,   198,   198,   198,   198,   198,   198,   199,
+     201,   200,   202,   203,   203,   204,   204,   206,   205,   207,
+     207,   208,   208,   210,   209,   211,   211,   212,   212,   213,
+     215,   214,   216,   216,   217,   217,   217,   217,   217,   217,
+     219,   218,   221,   220,   222,   222,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   225,   224,   226,   227,   228,   229,   230,   231,
+     232,   233,   235,   234,   237,   236,   239,   238,   240,   240,
+     241,   241,   241,   241,   241,   243,   242,   244,   246,   245,
+     248,   247,   250,   249,   251,   251,   252,   252,   254,   253,
+     255,   255,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   258,   257,   259,   259,   259,   259,   261,   260,
+     263,   262,   265,   264,   266,   268,   267,   269,   270,   271,
+     272,   273,   274,   275,   276,   278,   277,   279,   281,   280,
+     283,   282,   285,   284,   287,   286,   288,   288,   289,   291,
+     290,   293,   292,   294,   294,   295,   295,   296,   297,   299,
+     298,   300,   300,   301,   301,   301,   302,   303,   305,   304,
+     307,   306,   308,   308,   309,   309,   311,   310,   313,   312,
+     314,   314,   314,   315,   315,   317,   316,   319,   318,   321,
+     320,   322,   322,   323,   323,   323,   323,   323,   323,   324,
+     325,   326,   327,   328,   329,   331,   330,   332,   332,   333,
+     333,   335,   334,   337,   336,   338,   338,   339,   339,   339,
+     339,   339,   339,   339,   339,   339,   339,   339,   339,   339,
+     339,   339,   339,   339,   339,   339,   339,   339,   339,   339,
+     341,   340,   343,   342,   345,   344,   347,   346,   349,   348,
+     351,   350,   352,   352,   352,   352,   353,   354,   356,   355,
+     357,   357,   358,   358,   360,   359,   361,   361,   362,   362,
+     362,   362,   362,   362,   362,   362,   362,   362,   362,   362,
+     362,   362,   362,   362,   362,   362,   362,   362,   364,   363,
+     366,   365,   367,   367,   368,   368,   370,   369,   372,   371,
+     373,   373,   374,   374,   375,   375,   375,   375,   375,   375,
+     375,   375,   375,   375,   376,   377,   378,   380,   379,   382,
+     381,   384,   383,   385,   387,   386,   388,   390,   389,   391,
+     391,   392,   392,   394,   393,   396,   395,   397,   397,   398,
+     398,   399,   399,   399,   399,   399,   399,   399,   399,   399,
+     400,   402,   401,   403,   404,   405,   406,   408,   407,   409,
+     409,   410,   410,   412,   411,   414,   413,   415,   415,   416,
+     416,   416,   416,   416,   416,   416,   418,   417,   420,   419,
+     422,   421,   424,   423,   425,   425,   426,   426,   428,   427,
+     430,   429,   431,   431,   432,   432,   432,   432,   432,   432,
+     432,   432,   432,   432,   432,   434,   433,   435,   437,   436,
+     438,   439,   441,   440,   442,   442,   443,   443,   445,   444,
+     447,   446,   448,   448,   449,   449,   450,   450,   450,   450,
+     450,   450,   450,   450,   450,   450,   450,   452,   451,   454,
+     453,   456,   455,   458,   457,   460,   459,   462,   461,   464,
+     463,   466,   465,   467,   467,   469,   468,   471,   470,   472,
+     472,   474,   473,   475,   475,   476,   476,   477,   477,   477,
+     477,   477,   477,   477,   478,   480,   479,   481,   483,   482,
+     484,   484,   485,   485,   485,   485,   485,   485,   485,   485,
+     485,   487,   486,   488,   488,   488,   489,   491,   490,   492,
+     493,   494,   496,   495,   497,   497,   498,   498,   498,   498,
+     498,   500,   499,   502,   501,   504,   503,   506,   505,   508,
+     507,   509,   509,   510,   510,   510,   510,   510,   510,   510,
+     510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
+     510,   511,   513,   512,   515,   514,   516,   518,   517,   519,
+     520,   522,   521,   523,   523,   525,   524,   526,   527,   529,
+     528,   530,   530,   530,   530,   530,   532,   531,   534,   533,
+     536,   535,   538,   537,   540,   539,   542,   541,   544,   543,
+     546,   545,   547,   547,   548,   548,   550,   549,   551,   553,
+     552,   555,   554,   556,   556,   557,   559,   558,   560,   560,
+     562,   561,   563,   563,   564,   564,   564,   564,   564,   564,
+     564,   565,   567,   566,   569,   568,   570,   570,   572,   571,
+     573,   573,   574,   574,   574,   574,   576,   575,   577,   578,
+     579
   };
 
   const unsigned char
@@ -4813,64 +4854,66 @@ namespace isc { namespace dhcp {
        0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     3,     3,     3,     3,     3,     0,     4,     0,     6,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     0,
-       4,     3,     0,     6,     0,     6,     0,     6,     0,     1,
-       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     3,     0,
-       4,     3,     3,     3,     3,     3,     3,     3,     3,     0,
-       4,     3,     0,     4,     0,     4,     0,     4,     0,     6,
-       1,     3,     1,     0,     4,     0,     6,     1,     3,     1,
-       1,     1,     1,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     0,     6,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     0,
-       4,     0,     4,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     3,     3,     3,     3,     3,     3,     0,
-       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     1,     1,     1,     1,     3,     3,     0,
-       6,     0,     1,     1,     3,     0,     4,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     6,     0,     4,
-       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     1,     0,     4,     0,     4,     0,
-       4,     1,     0,     4,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     1,     1,     3,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       1,     1,     0,     4,     3,     3,     3,     3,     3,     3,
+       3,     3,     0,     4,     0,     6,     0,     4,     1,     3,
+       1,     1,     1,     1,     1,     0,     4,     3,     0,     6,
+       0,     6,     0,     6,     0,     1,     1,     3,     0,     4,
        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     3,     0,     4,     3,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     3,     0,     4,     3,     3,     3,
+       3,     3,     3,     3,     3,     0,     4,     3,     0,     4,
+       0,     4,     0,     4,     0,     6,     1,     3,     1,     0,
+       4,     0,     6,     1,     3,     1,     1,     1,     1,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     0,     6,
        0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       1,     3,     1,     1,     1,     0,     4,     0,     4,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     1,     3,
+       3,     3,     3,     3,     3,     0,     6,     0,     1,     1,
+       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     1,     1,     1,     1,     3,     3,     0,     6,
+       0,     1,     1,     3,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
+       0,     4,     0,     1,     1,     3,     0,     4,     0,     4,
        0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       6,     1,     1,     0,     4,     0,     6,     1,     3,     0,
-       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     3,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     1,     1,     1,     3,     0,     4,     3,     3,     3,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     6,     0,     4,     1,
+       1,     1,     1,     1,     1,     3,     1,     0,     4,     0,
+       4,     0,     4,     1,     0,     4,     3,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
-       0,     4,     0,     4,     3,     0,     4,     3,     3,     0,
-       4,     1,     1,     0,     4,     3,     3,     0,     4,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
-       1,     3,     1,     1,     0,     6,     3,     0,     6,     0,
-       4,     1,     3,     1,     0,     6,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     3,
-       0,     4,     0,     6,     1,     3,     0,     4,     1,     3,
-       1,     1,     1,     1,     0,     4,     3,     3,     3
+       1,     0,     4,     1,     1,     3,     3,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     3,     0,     4,
+       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     6,     1,     1,     0,     4,     0,     6,     1,
+       3,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     3,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     1,     1,     1,     3,     0,     4,     3,
+       3,     3,     0,     6,     1,     3,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     0,     4,     0,     6,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     3,     0,     4,     0,     4,     3,     0,     4,     3,
+       3,     0,     4,     1,     1,     0,     4,     3,     3,     0,
+       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     6,
+       0,     4,     1,     3,     1,     1,     0,     6,     3,     0,
+       6,     0,     4,     1,     3,     1,     0,     6,     1,     3,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     3,     0,     4,     0,     6,     1,     3,     0,     4,
+       1,     3,     1,     1,     1,     1,     0,     4,     3,     3,
+       3
   };
 
 
@@ -4892,7 +4935,8 @@ namespace isc { namespace dhcp {
   "\"reconnect-wait-time\"", "\"keyspace\"", "\"consistency\"",
   "\"serial-consistency\"", "\"request-timeout\"", "\"tcp-keepalive\"",
   "\"tcp-nodelay\"", "\"preferred-lifetime\"", "\"valid-lifetime\"",
-  "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
+  "\"renew-timer\"", "\"rebind-timer\"", "\"calculate-tee-times\"",
+  "\"t1-percent\"", "\"t2-percent\"", "\"decline-probation-period\"",
   "\"server-tag\"", "\"subnet6\"", "\"option-def\"", "\"option-data\"",
   "\"name\"", "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
   "\"always-send\"", "\"record-types\"", "\"encapsulate\"", "\"array\"",
@@ -4939,6 +4983,7 @@ namespace isc { namespace dhcp {
   "global_objects", "global_object", "dhcp6_object", "$@20", "sub_dhcp6",
   "$@21", "global_params", "global_param", "data_directory", "$@22",
   "preferred_lifetime", "valid_lifetime", "renew_timer", "rebind_timer",
+  "calculate_tee_times", "t1_percent", "t2_percent",
   "decline_probation_period", "server_tag", "$@23", "interfaces_config",
   "$@24", "sub_interfaces6", "$@25", "interfaces_config_params",
   "interfaces_config_param", "interfaces_list", "$@26", "re_detect",
@@ -5029,74 +5074,76 @@ namespace isc { namespace dhcp {
   const unsigned short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   262,   262,   262,   263,   263,   264,   264,   265,   265,
-     266,   266,   267,   267,   268,   268,   269,   269,   270,   270,
-     271,   271,   272,   272,   273,   273,   274,   274,   275,   275,
-     276,   276,   284,   285,   286,   287,   288,   289,   290,   293,
-     298,   298,   309,   312,   313,   316,   320,   327,   327,   334,
-     335,   338,   342,   349,   349,   356,   357,   360,   364,   375,
-     385,   385,   400,   401,   405,   406,   407,   408,   409,   410,
-     413,   413,   428,   428,   437,   438,   443,   444,   445,   446,
-     447,   448,   449,   450,   451,   452,   453,   454,   455,   456,
-     457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
-     467,   468,   469,   470,   471,   472,   473,   474,   475,   478,
-     478,   486,   491,   496,   501,   506,   511,   511,   519,   519,
-     530,   530,   539,   540,   543,   544,   545,   546,   547,   550,
-     550,   560,   566,   566,   578,   578,   590,   590,   600,   601,
-     604,   605,   608,   608,   618,   619,   622,   623,   624,   625,
-     626,   627,   628,   629,   630,   631,   632,   633,   634,   635,
-     636,   637,   638,   639,   640,   641,   644,   644,   651,   652,
-     653,   654,   657,   657,   665,   665,   673,   673,   681,   686,
-     686,   694,   699,   704,   709,   714,   719,   724,   729,   734,
-     734,   742,   747,   747,   755,   755,   763,   763,   771,   771,
-     781,   782,   784,   786,   786,   804,   804,   814,   815,   818,
-     819,   822,   827,   832,   832,   842,   843,   846,   847,   848,
-     851,   856,   863,   863,   873,   873,   883,   884,   887,   888,
-     891,   891,   901,   901,   911,   912,   913,   916,   917,   920,
-     920,   928,   928,   936,   936,   947,   948,   951,   952,   953,
-     954,   955,   956,   959,   964,   969,   974,   979,   984,   992,
-     992,  1005,  1006,  1009,  1010,  1017,  1017,  1043,  1043,  1054,
-    1055,  1059,  1060,  1061,  1062,  1063,  1064,  1065,  1066,  1067,
-    1068,  1069,  1070,  1071,  1072,  1073,  1074,  1075,  1076,  1077,
-    1078,  1081,  1081,  1089,  1089,  1097,  1097,  1105,  1105,  1113,
-    1113,  1123,  1123,  1130,  1131,  1132,  1133,  1136,  1141,  1149,
-    1149,  1160,  1161,  1165,  1166,  1169,  1169,  1177,  1178,  1181,
-    1182,  1183,  1184,  1185,  1186,  1187,  1188,  1189,  1190,  1191,
-    1192,  1193,  1194,  1195,  1196,  1197,  1204,  1204,  1217,  1217,
-    1226,  1227,  1230,  1231,  1236,  1236,  1251,  1251,  1265,  1266,
-    1269,  1270,  1273,  1274,  1275,  1276,  1277,  1278,  1279,  1280,
-    1281,  1282,  1285,  1287,  1292,  1294,  1294,  1302,  1302,  1310,
-    1310,  1318,  1320,  1320,  1328,  1337,  1337,  1349,  1350,  1355,
-    1356,  1361,  1361,  1373,  1373,  1385,  1386,  1391,  1392,  1397,
-    1398,  1399,  1400,  1401,  1402,  1403,  1404,  1405,  1408,  1410,
-    1410,  1418,  1420,  1422,  1427,  1435,  1435,  1447,  1448,  1451,
-    1452,  1455,  1455,  1465,  1465,  1474,  1475,  1478,  1479,  1480,
-    1481,  1482,  1483,  1484,  1487,  1487,  1495,  1495,  1520,  1520,
-    1550,  1550,  1562,  1563,  1566,  1567,  1570,  1570,  1582,  1582,
-    1594,  1595,  1598,  1599,  1600,  1601,  1602,  1603,  1604,  1605,
-    1606,  1607,  1608,  1611,  1611,  1619,  1624,  1624,  1632,  1637,
-    1645,  1645,  1655,  1656,  1659,  1660,  1663,  1663,  1672,  1672,
-    1681,  1682,  1685,  1686,  1690,  1691,  1692,  1693,  1694,  1695,
-    1696,  1697,  1698,  1699,  1700,  1703,  1703,  1713,  1713,  1723,
-    1723,  1731,  1731,  1739,  1739,  1747,  1747,  1755,  1755,  1768,
-    1768,  1778,  1779,  1782,  1782,  1793,  1793,  1803,  1804,  1807,
-    1807,  1817,  1818,  1821,  1822,  1825,  1826,  1827,  1828,  1829,
-    1830,  1831,  1834,  1836,  1836,  1844,  1852,  1852,  1864,  1865,
-    1868,  1869,  1870,  1871,  1872,  1873,  1874,  1875,  1876,  1879,
-    1879,  1886,  1887,  1888,  1891,  1896,  1896,  1904,  1909,  1916,
-    1923,  1923,  1933,  1934,  1937,  1938,  1939,  1940,  1941,  1944,
-    1944,  1952,  1952,  1962,  1962,  2002,  2002,  2014,  2014,  2024,
-    2025,  2028,  2029,  2030,  2031,  2032,  2033,  2034,  2035,  2036,
-    2037,  2038,  2039,  2040,  2041,  2042,  2043,  2044,  2045,  2048,
-    2053,  2053,  2061,  2061,  2069,  2074,  2074,  2082,  2087,  2092,
-    2092,  2100,  2101,  2104,  2104,  2112,  2117,  2122,  2122,  2130,
-    2133,  2136,  2139,  2142,  2148,  2148,  2156,  2156,  2164,  2164,
-    2174,  2174,  2181,  2181,  2188,  2188,  2197,  2197,  2208,  2208,
-    2218,  2219,  2223,  2224,  2227,  2227,  2237,  2247,  2247,  2257,
-    2257,  2268,  2269,  2273,  2277,  2277,  2289,  2290,  2294,  2294,
-    2302,  2303,  2306,  2307,  2308,  2309,  2310,  2311,  2312,  2315,
-    2320,  2320,  2328,  2328,  2338,  2339,  2342,  2342,  2350,  2351,
-    2354,  2355,  2356,  2357,  2360,  2360,  2368,  2373,  2378
+       0,   265,   265,   265,   266,   266,   267,   267,   268,   268,
+     269,   269,   270,   270,   271,   271,   272,   272,   273,   273,
+     274,   274,   275,   275,   276,   276,   277,   277,   278,   278,
+     279,   279,   287,   288,   289,   290,   291,   292,   293,   296,
+     301,   301,   312,   315,   316,   319,   323,   330,   330,   337,
+     338,   341,   345,   352,   352,   359,   360,   363,   367,   378,
+     388,   388,   403,   404,   408,   409,   410,   411,   412,   413,
+     416,   416,   431,   431,   440,   441,   446,   447,   448,   449,
+     450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
+     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
+     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
+     480,   481,   484,   484,   492,   497,   502,   507,   512,   517,
+     522,   527,   532,   532,   540,   540,   551,   551,   560,   561,
+     564,   565,   566,   567,   568,   571,   571,   581,   587,   587,
+     599,   599,   611,   611,   621,   622,   625,   626,   629,   629,
+     639,   640,   643,   644,   645,   646,   647,   648,   649,   650,
+     651,   652,   653,   654,   655,   656,   657,   658,   659,   660,
+     661,   662,   665,   665,   672,   673,   674,   675,   678,   678,
+     686,   686,   694,   694,   702,   707,   707,   715,   720,   725,
+     730,   735,   740,   745,   750,   755,   755,   763,   768,   768,
+     776,   776,   784,   784,   792,   792,   802,   803,   805,   807,
+     807,   825,   825,   835,   836,   839,   840,   843,   848,   853,
+     853,   863,   864,   867,   868,   869,   872,   877,   884,   884,
+     894,   894,   904,   905,   908,   909,   912,   912,   922,   922,
+     932,   933,   934,   937,   938,   941,   941,   949,   949,   957,
+     957,   968,   969,   972,   973,   974,   975,   976,   977,   980,
+     985,   990,   995,  1000,  1005,  1013,  1013,  1026,  1027,  1030,
+    1031,  1038,  1038,  1064,  1064,  1075,  1076,  1080,  1081,  1082,
+    1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,
+    1093,  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,
+    1105,  1105,  1113,  1113,  1121,  1121,  1129,  1129,  1137,  1137,
+    1147,  1147,  1154,  1155,  1156,  1157,  1160,  1165,  1173,  1173,
+    1184,  1185,  1189,  1190,  1193,  1193,  1201,  1202,  1205,  1206,
+    1207,  1208,  1209,  1210,  1211,  1212,  1213,  1214,  1215,  1216,
+    1217,  1218,  1219,  1220,  1221,  1222,  1223,  1224,  1231,  1231,
+    1244,  1244,  1253,  1254,  1257,  1258,  1263,  1263,  1278,  1278,
+    1292,  1293,  1296,  1297,  1300,  1301,  1302,  1303,  1304,  1305,
+    1306,  1307,  1308,  1309,  1312,  1314,  1319,  1321,  1321,  1329,
+    1329,  1337,  1337,  1345,  1347,  1347,  1355,  1364,  1364,  1376,
+    1377,  1382,  1383,  1388,  1388,  1400,  1400,  1412,  1413,  1418,
+    1419,  1424,  1425,  1426,  1427,  1428,  1429,  1430,  1431,  1432,
+    1435,  1437,  1437,  1445,  1447,  1449,  1454,  1462,  1462,  1474,
+    1475,  1478,  1479,  1482,  1482,  1492,  1492,  1501,  1502,  1505,
+    1506,  1507,  1508,  1509,  1510,  1511,  1514,  1514,  1522,  1522,
+    1547,  1547,  1577,  1577,  1589,  1590,  1593,  1594,  1597,  1597,
+    1609,  1609,  1621,  1622,  1625,  1626,  1627,  1628,  1629,  1630,
+    1631,  1632,  1633,  1634,  1635,  1638,  1638,  1646,  1651,  1651,
+    1659,  1664,  1672,  1672,  1682,  1683,  1686,  1687,  1690,  1690,
+    1699,  1699,  1708,  1709,  1712,  1713,  1717,  1718,  1719,  1720,
+    1721,  1722,  1723,  1724,  1725,  1726,  1727,  1730,  1730,  1740,
+    1740,  1750,  1750,  1758,  1758,  1766,  1766,  1774,  1774,  1782,
+    1782,  1795,  1795,  1805,  1806,  1809,  1809,  1820,  1820,  1830,
+    1831,  1834,  1834,  1844,  1845,  1848,  1849,  1852,  1853,  1854,
+    1855,  1856,  1857,  1858,  1861,  1863,  1863,  1871,  1879,  1879,
+    1891,  1892,  1895,  1896,  1897,  1898,  1899,  1900,  1901,  1902,
+    1903,  1906,  1906,  1913,  1914,  1915,  1918,  1923,  1923,  1931,
+    1936,  1943,  1950,  1950,  1960,  1961,  1964,  1965,  1966,  1967,
+    1968,  1971,  1971,  1979,  1979,  1989,  1989,  2029,  2029,  2041,
+    2041,  2051,  2052,  2055,  2056,  2057,  2058,  2059,  2060,  2061,
+    2062,  2063,  2064,  2065,  2066,  2067,  2068,  2069,  2070,  2071,
+    2072,  2075,  2080,  2080,  2088,  2088,  2096,  2101,  2101,  2109,
+    2114,  2119,  2119,  2127,  2128,  2131,  2131,  2139,  2144,  2149,
+    2149,  2157,  2160,  2163,  2166,  2169,  2175,  2175,  2183,  2183,
+    2191,  2191,  2201,  2201,  2208,  2208,  2215,  2215,  2224,  2224,
+    2235,  2235,  2245,  2246,  2250,  2251,  2254,  2254,  2264,  2274,
+    2274,  2284,  2284,  2295,  2296,  2300,  2304,  2304,  2316,  2317,
+    2321,  2321,  2329,  2330,  2333,  2334,  2335,  2336,  2337,  2338,
+    2339,  2342,  2347,  2347,  2355,  2355,  2365,  2366,  2369,  2369,
+    2377,  2378,  2381,  2382,  2383,  2384,  2387,  2387,  2395,  2400,
+    2405
   };
 
   // Print the state stack on the debug stream.
@@ -5131,8 +5178,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1218
 } } // isc::dhcp
-#line 5135 "dhcp6_parser.cc" // lalr1.cc:1218
-#line 2383 "dhcp6_parser.yy" // lalr1.cc:1219
+#line 5182 "dhcp6_parser.cc" // lalr1.cc:1218
+#line 2410 "dhcp6_parser.yy" // lalr1.cc:1219
 
 
 void
index eff48a601510efe6992fb68da7a2124e83d74530..a9504c8cc0d9f69358c2b3cb45c9f1cd63968dbf 100644 (file)
@@ -580,137 +580,140 @@ namespace isc { namespace dhcp {
         TOKEN_VALID_LIFETIME = 299,
         TOKEN_RENEW_TIMER = 300,
         TOKEN_REBIND_TIMER = 301,
-        TOKEN_DECLINE_PROBATION_PERIOD = 302,
-        TOKEN_SERVER_TAG = 303,
-        TOKEN_SUBNET6 = 304,
-        TOKEN_OPTION_DEF = 305,
-        TOKEN_OPTION_DATA = 306,
-        TOKEN_NAME = 307,
-        TOKEN_DATA = 308,
-        TOKEN_CODE = 309,
-        TOKEN_SPACE = 310,
-        TOKEN_CSV_FORMAT = 311,
-        TOKEN_ALWAYS_SEND = 312,
-        TOKEN_RECORD_TYPES = 313,
-        TOKEN_ENCAPSULATE = 314,
-        TOKEN_ARRAY = 315,
-        TOKEN_POOLS = 316,
-        TOKEN_POOL = 317,
-        TOKEN_PD_POOLS = 318,
-        TOKEN_PREFIX = 319,
-        TOKEN_PREFIX_LEN = 320,
-        TOKEN_EXCLUDED_PREFIX = 321,
-        TOKEN_EXCLUDED_PREFIX_LEN = 322,
-        TOKEN_DELEGATED_LEN = 323,
-        TOKEN_USER_CONTEXT = 324,
-        TOKEN_COMMENT = 325,
-        TOKEN_SUBNET = 326,
-        TOKEN_INTERFACE = 327,
-        TOKEN_INTERFACE_ID = 328,
-        TOKEN_ID = 329,
-        TOKEN_RAPID_COMMIT = 330,
-        TOKEN_RESERVATION_MODE = 331,
-        TOKEN_DISABLED = 332,
-        TOKEN_OUT_OF_POOL = 333,
-        TOKEN_GLOBAL = 334,
-        TOKEN_ALL = 335,
-        TOKEN_SHARED_NETWORKS = 336,
-        TOKEN_MAC_SOURCES = 337,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 338,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 339,
-        TOKEN_SANITY_CHECKS = 340,
-        TOKEN_LEASE_CHECKS = 341,
-        TOKEN_CLIENT_CLASSES = 342,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 343,
-        TOKEN_TEST = 344,
-        TOKEN_ONLY_IF_REQUIRED = 345,
-        TOKEN_CLIENT_CLASS = 346,
-        TOKEN_RESERVATIONS = 347,
-        TOKEN_IP_ADDRESSES = 348,
-        TOKEN_PREFIXES = 349,
-        TOKEN_DUID = 350,
-        TOKEN_HW_ADDRESS = 351,
-        TOKEN_HOSTNAME = 352,
-        TOKEN_FLEX_ID = 353,
-        TOKEN_RELAY = 354,
-        TOKEN_IP_ADDRESS = 355,
-        TOKEN_HOOKS_LIBRARIES = 356,
-        TOKEN_LIBRARY = 357,
-        TOKEN_PARAMETERS = 358,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 359,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 360,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 361,
-        TOKEN_HOLD_RECLAIMED_TIME = 362,
-        TOKEN_MAX_RECLAIM_LEASES = 363,
-        TOKEN_MAX_RECLAIM_TIME = 364,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 365,
-        TOKEN_SERVER_ID = 366,
-        TOKEN_LLT = 367,
-        TOKEN_EN = 368,
-        TOKEN_LL = 369,
-        TOKEN_IDENTIFIER = 370,
-        TOKEN_HTYPE = 371,
-        TOKEN_TIME = 372,
-        TOKEN_ENTERPRISE_ID = 373,
-        TOKEN_DHCP4O6_PORT = 374,
-        TOKEN_CONTROL_SOCKET = 375,
-        TOKEN_SOCKET_TYPE = 376,
-        TOKEN_SOCKET_NAME = 377,
-        TOKEN_DHCP_QUEUE_CONTROL = 378,
-        TOKEN_DHCP_DDNS = 379,
-        TOKEN_ENABLE_UPDATES = 380,
-        TOKEN_QUALIFYING_SUFFIX = 381,
-        TOKEN_SERVER_IP = 382,
-        TOKEN_SERVER_PORT = 383,
-        TOKEN_SENDER_IP = 384,
-        TOKEN_SENDER_PORT = 385,
-        TOKEN_MAX_QUEUE_SIZE = 386,
-        TOKEN_NCR_PROTOCOL = 387,
-        TOKEN_NCR_FORMAT = 388,
-        TOKEN_OVERRIDE_NO_UPDATE = 389,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 390,
-        TOKEN_REPLACE_CLIENT_NAME = 391,
-        TOKEN_GENERATED_PREFIX = 392,
-        TOKEN_UDP = 393,
-        TOKEN_TCP = 394,
-        TOKEN_JSON = 395,
-        TOKEN_WHEN_PRESENT = 396,
-        TOKEN_NEVER = 397,
-        TOKEN_ALWAYS = 398,
-        TOKEN_WHEN_NOT_PRESENT = 399,
-        TOKEN_HOSTNAME_CHAR_SET = 400,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 401,
-        TOKEN_LOGGING = 402,
-        TOKEN_LOGGERS = 403,
-        TOKEN_OUTPUT_OPTIONS = 404,
-        TOKEN_OUTPUT = 405,
-        TOKEN_DEBUGLEVEL = 406,
-        TOKEN_SEVERITY = 407,
-        TOKEN_FLUSH = 408,
-        TOKEN_MAXSIZE = 409,
-        TOKEN_MAXVER = 410,
-        TOKEN_DHCP4 = 411,
-        TOKEN_DHCPDDNS = 412,
-        TOKEN_CONTROL_AGENT = 413,
-        TOKEN_TOPLEVEL_JSON = 414,
-        TOKEN_TOPLEVEL_DHCP6 = 415,
-        TOKEN_SUB_DHCP6 = 416,
-        TOKEN_SUB_INTERFACES6 = 417,
-        TOKEN_SUB_SUBNET6 = 418,
-        TOKEN_SUB_POOL6 = 419,
-        TOKEN_SUB_PD_POOL = 420,
-        TOKEN_SUB_RESERVATION = 421,
-        TOKEN_SUB_OPTION_DEFS = 422,
-        TOKEN_SUB_OPTION_DEF = 423,
-        TOKEN_SUB_OPTION_DATA = 424,
-        TOKEN_SUB_HOOKS_LIBRARY = 425,
-        TOKEN_SUB_DHCP_DDNS = 426,
-        TOKEN_SUB_LOGGING = 427,
-        TOKEN_SUB_CONFIG_CONTROL = 428,
-        TOKEN_STRING = 429,
-        TOKEN_INTEGER = 430,
-        TOKEN_FLOAT = 431,
-        TOKEN_BOOLEAN = 432
+        TOKEN_CALCULATE_TEE_TIMES = 302,
+        TOKEN_T1_PERCENT = 303,
+        TOKEN_T2_PERCENT = 304,
+        TOKEN_DECLINE_PROBATION_PERIOD = 305,
+        TOKEN_SERVER_TAG = 306,
+        TOKEN_SUBNET6 = 307,
+        TOKEN_OPTION_DEF = 308,
+        TOKEN_OPTION_DATA = 309,
+        TOKEN_NAME = 310,
+        TOKEN_DATA = 311,
+        TOKEN_CODE = 312,
+        TOKEN_SPACE = 313,
+        TOKEN_CSV_FORMAT = 314,
+        TOKEN_ALWAYS_SEND = 315,
+        TOKEN_RECORD_TYPES = 316,
+        TOKEN_ENCAPSULATE = 317,
+        TOKEN_ARRAY = 318,
+        TOKEN_POOLS = 319,
+        TOKEN_POOL = 320,
+        TOKEN_PD_POOLS = 321,
+        TOKEN_PREFIX = 322,
+        TOKEN_PREFIX_LEN = 323,
+        TOKEN_EXCLUDED_PREFIX = 324,
+        TOKEN_EXCLUDED_PREFIX_LEN = 325,
+        TOKEN_DELEGATED_LEN = 326,
+        TOKEN_USER_CONTEXT = 327,
+        TOKEN_COMMENT = 328,
+        TOKEN_SUBNET = 329,
+        TOKEN_INTERFACE = 330,
+        TOKEN_INTERFACE_ID = 331,
+        TOKEN_ID = 332,
+        TOKEN_RAPID_COMMIT = 333,
+        TOKEN_RESERVATION_MODE = 334,
+        TOKEN_DISABLED = 335,
+        TOKEN_OUT_OF_POOL = 336,
+        TOKEN_GLOBAL = 337,
+        TOKEN_ALL = 338,
+        TOKEN_SHARED_NETWORKS = 339,
+        TOKEN_MAC_SOURCES = 340,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 341,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 342,
+        TOKEN_SANITY_CHECKS = 343,
+        TOKEN_LEASE_CHECKS = 344,
+        TOKEN_CLIENT_CLASSES = 345,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 346,
+        TOKEN_TEST = 347,
+        TOKEN_ONLY_IF_REQUIRED = 348,
+        TOKEN_CLIENT_CLASS = 349,
+        TOKEN_RESERVATIONS = 350,
+        TOKEN_IP_ADDRESSES = 351,
+        TOKEN_PREFIXES = 352,
+        TOKEN_DUID = 353,
+        TOKEN_HW_ADDRESS = 354,
+        TOKEN_HOSTNAME = 355,
+        TOKEN_FLEX_ID = 356,
+        TOKEN_RELAY = 357,
+        TOKEN_IP_ADDRESS = 358,
+        TOKEN_HOOKS_LIBRARIES = 359,
+        TOKEN_LIBRARY = 360,
+        TOKEN_PARAMETERS = 361,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 362,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 363,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 364,
+        TOKEN_HOLD_RECLAIMED_TIME = 365,
+        TOKEN_MAX_RECLAIM_LEASES = 366,
+        TOKEN_MAX_RECLAIM_TIME = 367,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 368,
+        TOKEN_SERVER_ID = 369,
+        TOKEN_LLT = 370,
+        TOKEN_EN = 371,
+        TOKEN_LL = 372,
+        TOKEN_IDENTIFIER = 373,
+        TOKEN_HTYPE = 374,
+        TOKEN_TIME = 375,
+        TOKEN_ENTERPRISE_ID = 376,
+        TOKEN_DHCP4O6_PORT = 377,
+        TOKEN_CONTROL_SOCKET = 378,
+        TOKEN_SOCKET_TYPE = 379,
+        TOKEN_SOCKET_NAME = 380,
+        TOKEN_DHCP_QUEUE_CONTROL = 381,
+        TOKEN_DHCP_DDNS = 382,
+        TOKEN_ENABLE_UPDATES = 383,
+        TOKEN_QUALIFYING_SUFFIX = 384,
+        TOKEN_SERVER_IP = 385,
+        TOKEN_SERVER_PORT = 386,
+        TOKEN_SENDER_IP = 387,
+        TOKEN_SENDER_PORT = 388,
+        TOKEN_MAX_QUEUE_SIZE = 389,
+        TOKEN_NCR_PROTOCOL = 390,
+        TOKEN_NCR_FORMAT = 391,
+        TOKEN_OVERRIDE_NO_UPDATE = 392,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 393,
+        TOKEN_REPLACE_CLIENT_NAME = 394,
+        TOKEN_GENERATED_PREFIX = 395,
+        TOKEN_UDP = 396,
+        TOKEN_TCP = 397,
+        TOKEN_JSON = 398,
+        TOKEN_WHEN_PRESENT = 399,
+        TOKEN_NEVER = 400,
+        TOKEN_ALWAYS = 401,
+        TOKEN_WHEN_NOT_PRESENT = 402,
+        TOKEN_HOSTNAME_CHAR_SET = 403,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 404,
+        TOKEN_LOGGING = 405,
+        TOKEN_LOGGERS = 406,
+        TOKEN_OUTPUT_OPTIONS = 407,
+        TOKEN_OUTPUT = 408,
+        TOKEN_DEBUGLEVEL = 409,
+        TOKEN_SEVERITY = 410,
+        TOKEN_FLUSH = 411,
+        TOKEN_MAXSIZE = 412,
+        TOKEN_MAXVER = 413,
+        TOKEN_DHCP4 = 414,
+        TOKEN_DHCPDDNS = 415,
+        TOKEN_CONTROL_AGENT = 416,
+        TOKEN_TOPLEVEL_JSON = 417,
+        TOKEN_TOPLEVEL_DHCP6 = 418,
+        TOKEN_SUB_DHCP6 = 419,
+        TOKEN_SUB_INTERFACES6 = 420,
+        TOKEN_SUB_SUBNET6 = 421,
+        TOKEN_SUB_POOL6 = 422,
+        TOKEN_SUB_PD_POOL = 423,
+        TOKEN_SUB_RESERVATION = 424,
+        TOKEN_SUB_OPTION_DEFS = 425,
+        TOKEN_SUB_OPTION_DEF = 426,
+        TOKEN_SUB_OPTION_DATA = 427,
+        TOKEN_SUB_HOOKS_LIBRARY = 428,
+        TOKEN_SUB_DHCP_DDNS = 429,
+        TOKEN_SUB_LOGGING = 430,
+        TOKEN_SUB_CONFIG_CONTROL = 431,
+        TOKEN_STRING = 432,
+        TOKEN_INTEGER = 433,
+        TOKEN_FLOAT = 434,
+        TOKEN_BOOLEAN = 435
       };
     };
 
@@ -1031,6 +1034,18 @@ namespace isc { namespace dhcp {
     symbol_type
     make_REBIND_TIMER (YY_COPY (location_type) l);
 
+    static
+    symbol_type
+    make_CALCULATE_TEE_TIMES (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_T1_PERCENT (YY_COPY (location_type) l);
+
+    static
+    symbol_type
+    make_T2_PERCENT (YY_COPY (location_type) l);
+
     static
     symbol_type
     make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l);
@@ -1737,12 +1752,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 1039,     ///< Last index in yytable_.
-      yynnts_ = 396,  ///< Number of nonterminal symbols.
+      yylast_ = 1060,     ///< Last index in yytable_.
+      yynnts_ = 399,  ///< Number of nonterminal symbols.
       yyfinal_ = 32, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 178  ///< Number of tokens.
+      yyntokens_ = 181  ///< Number of tokens.
     };
 
 
@@ -1802,9 +1817,9 @@ namespace isc { namespace dhcp {
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177
+     175,   176,   177,   178,   179,   180
     };
-    const unsigned user_token_number_max_ = 432;
+    const unsigned user_token_number_max_ = 435;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int> (t) <= yyeof_)
@@ -1836,29 +1851,29 @@ namespace isc { namespace dhcp {
   {
     switch (other.type_get ())
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
         break;
 
@@ -1936,29 +1951,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
   switch (yytype)
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1983,29 +1998,29 @@ namespace isc { namespace dhcp {
     super_type::move (s);
     switch (this->type_get ())
     {
-      case 195: // value
-      case 199: // map_value
-      case 253: // db_type
-      case 346: // hr_mode
-      case 482: // duid_type
-      case 517: // ncr_protocol_value
-      case 524: // replace_client_name_value
+      case 198: // value
+      case 202: // map_value
+      case 259: // db_type
+      case 352: // hr_mode
+      case 488: // duid_type
+      case 523: // ncr_protocol_value
+      case 530: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 177: // "boolean"
+      case 180: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 176: // "floating point"
+      case 179: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 175: // "integer"
+      case 178: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 174: // "constant string"
+      case 177: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2081,7 +2096,8 @@ namespace isc { namespace dhcp {
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426,   427,   428,   429,   430,   431,   432
+     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
+     435
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2402,6 +2418,27 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_REBIND_TIMER, YY_MOVE (l));
   }
 
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CALCULATE_TEE_TIMES (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_T1_PERCENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_T1_PERCENT, YY_MOVE (l));
+  }
+
+  inline
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_T2_PERCENT (YY_COPY (location_type) l)
+  {
+    return symbol_type (token::TOKEN_T2_PERCENT, YY_MOVE (l));
+  }
+
   inline
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l)
@@ -3322,7 +3359,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:404
 } } // isc::dhcp
-#line 3326 "dhcp6_parser.h" // lalr1.cc:404
+#line 3363 "dhcp6_parser.h" // lalr1.cc:404
 
 
 
index 24f9f39de5baa78f82736a7dc6b74d92d60ee506..72e1fba3abf662af3f7d171c8d0773e1dcfb7d6f 100644 (file)
@@ -1096,6 +1096,9 @@ subnet6_param: preferred_lifetime
              | relay
              | user_context
              | comment
+             | calculate_tee_times
+             | t1_percent 
+             | t2_percent 
              | unknown_map_entry
              ;
 
@@ -1215,6 +1218,9 @@ shared_network_param: name
                     | valid_lifetime
                     | user_context
                     | comment
+                    | calculate_tee_times
+                    | t1_percent 
+                    | t2_percent 
                     | unknown_map_entry
                     ;
 
index 64e1c95f268f7ae1dfb76682c275a21ba369f148..342dfd083023854c313c6e7deb0cd85c4ac500cc 100644 (file)
@@ -6106,7 +6106,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworks1subnet) {
     const Subnet6Collection * subs = net->getAllSubnets();
     ASSERT_TRUE(subs);
     EXPECT_EQ(1, subs->size());
-    checkSubnet(*subs, "2001:db8::/48", 900, 1800, 3600, 7200);
+    checkSubnet(*subs, "2001:db8::/48", 0, 0, 3600, 7200);
 
     // Now make sure the subnet was added to global list of subnets.
     CfgSubnets6Ptr subnets6 = CfgMgr::instance().getStagingCfg()->getCfgSubnets6();
@@ -6114,7 +6114,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworks1subnet) {
 
     subs = subnets6->getAll();
     ASSERT_TRUE(subs);
-    checkSubnet(*subs, "2001:db8::/48", 900, 1800, 3600, 7200);
+    checkSubnet(*subs, "2001:db8::/48", 0, 0, 3600, 7200);
 }
 
 // Test verifies that a proper shared-network (three subnets) is
@@ -6332,6 +6332,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDeriveInterfaces) {
         "\"shared-networks\": [ {\n"
         "    \"name\": \"foo\"\n,"
         "    \"interface\": \"eth0\",\n"
+        "    \"rebind-timer\": 10, \n"
         "    \"subnet6\": [\n"
         "    { \n"
         "        \"subnet\": \"2001:db1::/48\",\n"
@@ -6339,6 +6340,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDeriveInterfaces) {
         "    },\n"
         "    { \n"
         "        \"subnet\": \"2001:db2::/48\",\n"
+        "        \"rebind-timer\": 100, \n"
         "        \"pools\": [ { \"pool\": \"2001:db2::/64\" } ],\n"
         "        \"interface\": \"eth0\"\n"
         "    }\n"
@@ -6375,19 +6377,19 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDeriveInterfaces) {
     ASSERT_TRUE(subs);
     EXPECT_EQ(2, subs->size());
 
-    // For the first subnet, the renew-timer should be 10, because it was
+    // For the first subnet, the rebind-timer should be 10, because it was
     // derived from shared-network level. Other parameters a derived
     // from global scope to shared-network level and later again to
     // subnet6 level.
-    Subnet6Ptr s = checkSubnet(*subs, "2001:db1::/48", 900, 1800, 3600, 7200);
+    Subnet6Ptr s = checkSubnet(*subs, "2001:db1::/48", 0, 10, 3600, 7200);
     ASSERT_TRUE(s);
     EXPECT_EQ("eth0", s->getIface().get());
 
-    // For the second subnet, the renew-timer should be 100, because it
+    // For the second subnet, the rebind-timer should be 100, because it
     // was specified explicitly. Other parameters a derived
     // from global scope to shared-network level and later again to
     // subnet6 level.
-    checkSubnet(*subs, "2001:db2::/48", 900, 1800, 3600, 7200);
+    checkSubnet(*subs, "2001:db2::/48", 0, 100, 3600, 7200);
     EXPECT_EQ("eth0", s->getIface().get());
 
     // Ok, now check the second shared subnet.
@@ -6398,8 +6400,8 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDeriveInterfaces) {
     ASSERT_TRUE(subs);
     EXPECT_EQ(1, subs->size());
 
-    // This subnet should derive its renew-timer from global scope.
-    s = checkSubnet(*subs, "2001:db3::/48", 900, 1800, 3600, 7200);
+    // This subnet should derive its rebind-timer from global scope.
+    s = checkSubnet(*subs, "2001:db3::/48", 0, 0, 3600, 7200);
     EXPECT_EQ("", s->getIface().get());
 }
 
@@ -6488,13 +6490,13 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDeriveClientClass) {
 
     // For the first subnet, the client-class should be inherited from
     // shared-network level.
-    Subnet6Ptr s = checkSubnet(*subs, "2001:db1::/48", 900, 1800, 3600, 7200);
+    Subnet6Ptr s = checkSubnet(*subs, "2001:db1::/48", 0, 0, 3600, 7200);
     ASSERT_TRUE(s);
     EXPECT_EQ("alpha", s->getClientClass().get());
 
     // For the second subnet, the values are overridden on subnet level.
     // The value should not be inherited.
-    s = checkSubnet(*subs, "2001:db2::/48", 900, 1800, 3600, 7200);
+    s = checkSubnet(*subs, "2001:db2::/48", 0, 0, 3600, 7200);
     ASSERT_TRUE(s);
     EXPECT_EQ("beta", s->getClientClass().get()); // beta defined on subnet level
 
@@ -6509,7 +6511,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDeriveClientClass) {
     EXPECT_EQ(1, subs->size());
 
     // This subnet should derive its renew-timer from global scope.
-    s = checkSubnet(*subs, "2001:db3::/48", 900, 1800, 3600, 7200);
+    s = checkSubnet(*subs, "2001:db3::/48", 0, 0, 3600, 7200);
     EXPECT_TRUE(s->getClientClass().empty());
 }
 
index 208335022e7ffae292687e811b40eae6d7f92f1a..0d5730623dda636a5d71f45307bef5a50abfe8b1 100644 (file)
@@ -1836,6 +1836,7 @@ const char* EXTRACTED_CONFIGS[] = {
 const char* UNPARSED_CONFIGS[] = {
     // CONFIGURATION 0
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -1899,10 +1900,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 1
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -1967,6 +1971,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -1986,13 +1991,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 2
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2057,6 +2067,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2076,9 +2087,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2098,9 +2112,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 3,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2120,9 +2137,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:3::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 4,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2142,13 +2162,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:4::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 3
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2213,6 +2238,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1024,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2232,9 +2258,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 100,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2254,9 +2283,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2276,9 +2308,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:3::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 34,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2298,13 +2333,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:4::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 4
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2369,6 +2409,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2388,9 +2429,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2410,9 +2454,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 3,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2432,9 +2479,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:3::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 4,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2454,13 +2504,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:4::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 5
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2525,6 +2580,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2544,13 +2600,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 6
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2615,6 +2676,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"interface\": \"eth0\",\n"
 "                \"option-data\": [ ],\n"
@@ -2635,13 +2697,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 7
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2706,6 +2773,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"interface-id\": \"foobar\",\n"
 "                \"option-data\": [ ],\n"
@@ -2726,13 +2794,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 8
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2797,6 +2870,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2820,9 +2894,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2846,13 +2923,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 9
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2917,6 +2999,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -2936,13 +3019,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 10
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3007,6 +3095,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -3028,13 +3117,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 11
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3099,6 +3193,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -3122,13 +3217,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 12
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3193,6 +3293,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -3231,13 +3332,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/40\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 13
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3302,6 +3408,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -3323,13 +3430,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 14
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3385,9 +3497,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -3403,10 +3513,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 15
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3462,9 +3575,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -3480,10 +3591,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 16
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3548,9 +3662,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -3566,10 +3678,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 17
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3625,9 +3740,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -3643,10 +3756,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 18
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3702,9 +3818,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -3720,10 +3834,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 19
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3805,6 +3922,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -3824,13 +3942,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 20
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3895,6 +4018,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [\n"
 "                    {\n"
@@ -3931,13 +4055,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 21
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4029,6 +4158,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -4048,13 +4178,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 22
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4154,10 +4289,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 23
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4275,6 +4413,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -4294,13 +4433,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 24
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4365,6 +4509,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [\n"
 "                    {\n"
@@ -4393,9 +4538,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [\n"
 "                    {\n"
@@ -4424,13 +4572,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 25
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4495,6 +4648,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -4567,13 +4721,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 26
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4653,6 +4812,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -4672,13 +4832,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 27
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4762,6 +4927,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -4781,13 +4947,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 28
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4851,10 +5022,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 29
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4918,10 +5092,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 30
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4986,6 +5163,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5005,13 +5183,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 31
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5076,6 +5259,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5095,13 +5279,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 32
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5166,6 +5355,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"client-class\": \"alpha\",\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
@@ -5186,9 +5376,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"client-class\": \"beta\",\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [ ],\n"
@@ -5209,9 +5402,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"client-class\": \"gamma\",\n"
 "                \"id\": 3,\n"
 "                \"option-data\": [ ],\n"
@@ -5232,9 +5428,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:3::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 4,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5254,13 +5453,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:4::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 33
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5325,6 +5529,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5359,13 +5564,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/40\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 34
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5430,6 +5640,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -5472,13 +5683,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 35
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -5543,6 +5759,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5562,13 +5779,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 36
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5633,6 +5855,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 123,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5652,9 +5875,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 234,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5720,9 +5946,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                    }\n"
 "                ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 542,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5771,13 +6000,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                    }\n"
 "                ],\n"
 "                \"subnet\": \"2001:db8:3::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 37
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5852,6 +6086,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 234,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -5884,13 +6119,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                    }\n"
 "                ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 38
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5954,10 +6194,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 39
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6021,10 +6264,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 40
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6089,6 +6335,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6108,9 +6355,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6130,9 +6380,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"out-of-pool\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 3,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6152,9 +6405,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"disabled\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:3::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 4,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6174,9 +6430,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"global\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:4::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 5,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6196,13 +6455,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:5::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 41
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6267,6 +6531,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6286,9 +6551,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 2,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6308,13 +6576,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"out-of-pool\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/48\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 42
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6378,10 +6651,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 43
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6427,9 +6703,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -6445,10 +6719,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 44
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6494,9 +6771,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -6512,10 +6787,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 45
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 12345,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6561,9 +6839,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -6579,10 +6855,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 46
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6628,9 +6907,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"option-data\": [ ],\n"
 "        \"option-def\": [ ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -6646,10 +6923,13 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 47
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"client-classes\": [\n"
 "            {\n"
 "                \"name\": \"one\",\n"
@@ -6728,6 +7008,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6747,13 +7028,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 48
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6818,6 +7104,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6837,13 +7124,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 49
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6908,6 +7200,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -6928,13 +7221,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 50
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6999,6 +7297,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -7024,13 +7323,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 51
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7095,6 +7399,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -7120,13 +7425,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 52
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7191,6 +7501,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -7212,13 +7523,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 53
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7283,6 +7599,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -7305,13 +7622,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 54
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7376,6 +7698,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 1,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [\n"
@@ -7403,13 +7726,18 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8::/32\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 55
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7487,11 +7815,14 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"server-tag\": \"\",\n"
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n",
     // CONFIGURATION 56
 "{\n"
 "        \"comment\": \"A DHCPv6 server\",\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"client-classes\": [\n"
 "            {\n"
 "                \"comment\": \"match all\",\n"
@@ -7585,9 +7916,7 @@ const char* UNPARSED_CONFIGS[] = {
 "            }\n"
 "        ],\n"
 "        \"preferred-lifetime\": 3600,\n"
-"        \"rebind-timer\": 1800,\n"
 "        \"relay-supplied-options\": [ \"65\" ],\n"
-"        \"renew-timer\": 900,\n"
 "        \"reservation-mode\": \"all\",\n"
 "        \"sanity-checks\": {\n"
 "            \"lease-checks\": \"warn\"\n"
@@ -7605,20 +7934,20 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [\n"
 "            {\n"
 "                \"comment\": \"A shared network\",\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"interface\": \"\",\n"
 "                \"name\": \"foo\",\n"
 "                \"option-data\": [ ],\n"
 "                \"preferred-lifetime\": 3600,\n"
 "                \"rapid-commit\": false,\n"
-"                \"rebind-timer\": 1800,\n"
 "                \"relay\": {\n"
 "                    \"ip-addresses\": [ ]\n"
 "                },\n"
-"                \"renew-timer\": 900,\n"
 "                \"reservation-mode\": \"all\",\n"
 "                \"subnet6\": [\n"
 "                    {\n"
 "                        \"comment\": \"A subnet\",\n"
+"                        \"calculate-tee-times\": false,\n"
 "                        \"id\": 100,\n"
 "                        \"option-data\": [ ],\n"
 "                        \"pd-pools\": [\n"
@@ -7639,11 +7968,9 @@ const char* UNPARSED_CONFIGS[] = {
 "                        ],\n"
 "                        \"preferred-lifetime\": 3600,\n"
 "                        \"rapid-commit\": false,\n"
-"                        \"rebind-timer\": 1800,\n"
 "                        \"relay\": {\n"
 "                            \"ip-addresses\": [ ]\n"
 "                        },\n"
-"                        \"renew-timer\": 900,\n"
 "                        \"reservation-mode\": \"all\",\n"
 "                        \"reservations\": [\n"
 "                            {\n"
@@ -7667,17 +7994,24 @@ const char* UNPARSED_CONFIGS[] = {
 "                            }\n"
 "                        ],\n"
 "                        \"subnet\": \"2001:db1::/48\",\n"
+"                        \"t1-percent\": 0.5,\n"
+"                        \"t2-percent\": 0.8,\n"
 "                        \"valid-lifetime\": 7200\n"
 "                    }\n"
 "                ],\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 7200\n"
 "            }\n"
 "        ],\n"
 "        \"subnet6\": [ ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 7200\n"
 "    }\n",
     // CONFIGURATION 57
 "{\n"
+"        \"calculate-tee-times\": false,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7794,6 +8128,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"shared-networks\": [ ],\n"
 "        \"subnet6\": [\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 123,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -7813,9 +8148,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:1::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 234,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -7830,9 +8168,12 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:2::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            },\n"
 "            {\n"
+"                \"calculate-tee-times\": false,\n"
 "                \"id\": 542,\n"
 "                \"option-data\": [ ],\n"
 "                \"pd-pools\": [ ],\n"
@@ -7847,9 +8188,13 @@ const char* UNPARSED_CONFIGS[] = {
 "                \"reservation-mode\": \"all\",\n"
 "                \"reservations\": [ ],\n"
 "                \"subnet\": \"2001:db8:3::/64\",\n"
+"                \"t1-percent\": 0.5,\n"
+"                \"t2-percent\": 0.8,\n"
 "                \"valid-lifetime\": 4000\n"
 "            }\n"
 "        ],\n"
+"        \"t1-percent\": 0.5,\n"
+"        \"t2-percent\": 0.8,\n"
 "        \"valid-lifetime\": 4000\n"
 "    }\n"
 };
index 19e3322c0432560352824a55883a547d99e1002e..730d566fc808951e726f318a82c008a9fdd4ab65 100644 (file)
@@ -9,6 +9,7 @@
 #include <dhcpsrv/parsers/simple_parser6.h>
 #include <dhcp6/tests/dhcp6_test_utils.h>
 #include <cc/data.h>
+#include <util/doubles.h>
 
 using namespace isc;
 using namespace isc::data;
@@ -33,7 +34,7 @@ public:
 
         // Now try to get the element being checked
         ConstElementPtr elem = map->get(param_name);
-        ASSERT_TRUE(elem);
+        ASSERT_TRUE(elem) << "param not found: " << param_name;
 
         // Now check if it's indeed integer
         ASSERT_EQ(Element::integer, elem->getType());
@@ -55,7 +56,7 @@ public:
 
         // Now try to get the element being checked
         ConstElementPtr elem = map->get(param_name);
-        ASSERT_TRUE(elem);
+        ASSERT_TRUE(elem) << "param not found: " << param_name;
 
         // Now check if it's indeed integer
         ASSERT_EQ(Element::string, elem->getType());
@@ -77,7 +78,7 @@ public:
 
         // Now try to get the element being checked
         ConstElementPtr elem = map->get(param_name);
-        ASSERT_TRUE(elem);
+        ASSERT_TRUE(elem) << "param not found: " << param_name;
 
         // Now check if it's indeed integer
         ASSERT_EQ(Element::boolean, elem->getType());
@@ -86,6 +87,43 @@ public:
         EXPECT_EQ(exp_value, elem->boolValue());
     }
 
+    /// @brief Checks if specified map has a double parameter with expected value
+    ///
+    /// @param map map to be checked
+    /// @param param_name name of the parameter to be checked
+    /// @param exp_value expected value of the parameter.
+    void checkDoubleValue(const ConstElementPtr& map, const std::string& param_name,
+                        double exp_value) {
+
+        // First check if the passed element is a map.
+        ASSERT_EQ(Element::map, map->getType());
+
+        // Now try to get the element being checked
+        ConstElementPtr elem = map->get(param_name);
+        ASSERT_TRUE(elem) << "param not found: " << param_name;
+
+        // Now check if it's indeed integer
+        ASSERT_EQ(Element::real, elem->getType());
+
+        // Finally, check if its value meets expectation.
+        EXPECT_TRUE(util::areDoublesEquivalent(exp_value, elem->doubleValue()))
+                    << "exp_value: " << std::fixed << ", actual: "
+                    << std::fixed << elem->doubleValue();
+    }
+
+    /// @brief Checks if specified map does not contain the given parameter
+    ///
+    /// @param map map to be checked
+    /// @param param_name name of the parameter to be checked
+    void checkNoValue(const ConstElementPtr& map, const std::string& param_name) {
+        // First check if the passed element is a map.
+        ASSERT_EQ(Element::map, map->getType());
+
+        // Now try to get the element being checked
+        ConstElementPtr elem = map->get(param_name);
+        ASSERT_FALSE(elem) << "param was found found: " << param_name;
+    }
+
 };
 
 // This test checks if global defaults are properly set for DHCPv6.
@@ -96,13 +134,18 @@ TEST_F(SimpleParser6Test, globalDefaults6) {
 
     EXPECT_NO_THROW(num = SimpleParser6::setAllDefaults(empty));
 
-    // We expect at least 4 parameters to be inserted.
-    EXPECT_TRUE(num >= 4);
+    // We expect at least 5 parameters to be inserted.
+    EXPECT_TRUE(num >= 5);
 
     checkIntegerValue(empty, "valid-lifetime", 7200);
     checkIntegerValue(empty, "preferred-lifetime", 3600);
-    checkIntegerValue(empty, "rebind-timer", 1800);
-    checkIntegerValue(empty, "renew-timer", 900);
+    checkBoolValue(empty, "calculate-tee-times", false);
+    checkDoubleValue(empty, "t1-percent", 0.5);
+    checkDoubleValue(empty, "t2-percent", 0.8);
+
+    // Timers should not be specified by default.
+    checkNoValue(empty, "rebind-timer");
+    checkNoValue(empty, "renew-timer");
 }
 
 // This test checks if the parameters can be inherited from the global